diff --git a/frontend.code-workspace b/frontend.code-workspace
index f6d92d6fc9..0b85ed30e0 100644
--- a/frontend.code-workspace
+++ b/frontend.code-workspace
@@ -28,6 +28,7 @@
"settings": {
"window.zoomLevel": 1,
"files.autoSave": "afterDelay",
- "editor.formatOnSave": true
+ "editor.formatOnSave": true,
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
\ No newline at end of file
diff --git a/products/ASC.People/Client/package.json b/products/ASC.People/Client/package.json
index dbff06bf23..5062ba9fe8 100644
--- a/products/ASC.People/Client/package.json
+++ b/products/ASC.People/Client/package.json
@@ -6,7 +6,7 @@
"build": "webpack --mode production",
"build:dev": "webpack --mode development",
"build:start": "cd dist && PORT=5001 npx serve",
- "start": "webpack-dev-server --open --mode development",
+ "start": "webpack-dev-server --mode development",
"start:live": "webpack-dev-server --open --mode development --liveReload",
"docker:build": "docker build . -t login",
"docker:run": "docker run -p 5001:5001 login"
@@ -33,6 +33,8 @@
},
"dependencies": {
"@babel/runtime": "^7.12.5",
+ "@redux-dynostore/core": "^3.1.1",
+ "@redux-dynostore/react-redux": "^3.1.1",
"attr-accept": "^2.2.2",
"axios": "^0.21.0",
"email-addresses": "^3.1.0",
diff --git a/products/ASC.People/Client/src/PeopleContent.jsx b/products/ASC.People/Client/src/PeopleContent.jsx
index 0565e2c19e..377e2bbd1a 100644
--- a/products/ASC.People/Client/src/PeopleContent.jsx
+++ b/products/ASC.People/Client/src/PeopleContent.jsx
@@ -1,9 +1,22 @@
import React, { useEffect } from "react";
+import { useStore } from "react-redux";
+import dynamic from "@redux-dynostore/react-redux";
+import { attachReducer } from "@redux-dynostore/core";
+//import rootReducer from "./store/rootReducer";
+import portalReducer from "./store/portal/reducers";
+const PeopleContent = (props) => {
+ const store = useStore();
-const PeopleContent = () => {
- useEffect(() => {}, []);
+ // useEffect(() => {
+ // console.log("Store object", store);
+ // store.reducerManager.add("portal", portalReducer);
+
+ // return store.reducerManager.remove("portal");
+ // }, []);
return
PEOPLE PAGE
;
};
-export default PeopleContent;
+//export default PeopleContent;
+
+export default dynamic("portal", attachReducer(portalReducer))(PeopleContent);
diff --git a/products/ASC.People/Client/src/store/group/actions.js b/products/ASC.People/Client/src/store/group/actions.js
index 93a71ae42d..6060f7501c 100644
--- a/products/ASC.People/Client/src/store/group/actions.js
+++ b/products/ASC.People/Client/src/store/group/actions.js
@@ -1,5 +1,5 @@
import { setGroups, fetchPeople } from "../people/actions";
-import { api } from "@appserver/common";
+import api from "@appserver/common/src/api";
export const SET_GROUP = "SET_GROUP";
export const CLEAN_GROUP = "CLEAN_GROUP";
diff --git a/products/ASC.People/Client/src/store/people/actions.js b/products/ASC.People/Client/src/store/people/actions.js
index 8e8511ca03..e4a443caec 100644
--- a/products/ASC.People/Client/src/store/people/actions.js
+++ b/products/ASC.People/Client/src/store/people/actions.js
@@ -1,4 +1,6 @@
-import { api, history, constants } from "@appserver/common";
+import api from "@appserver/common/src/api";
+import history from "@appserver/common/src/history";
+import constants from "@appserver/common/src/constants";
import config from "../../../package.json";
import {
EMPLOYEE_STATUS,
diff --git a/products/ASC.People/Client/src/store/people/reducers.js b/products/ASC.People/Client/src/store/people/reducers.js
index ce1b450b59..03740166b1 100644
--- a/products/ASC.People/Client/src/store/people/reducers.js
+++ b/products/ASC.People/Client/src/store/people/reducers.js
@@ -15,8 +15,7 @@ import {
TOGGLE_AVATAR_EDITOR,
} from "./actions";
import { isUserSelected, skipUser, getUsersBySelected } from "./selectors";
-import { api } from "@appserver/common";
-const { Filter } = api;
+import Filter from "@appserver/common/src/api/people/filter";
const initialState = {
users: null,
diff --git a/products/ASC.People/Client/src/store/people/selectors.js b/products/ASC.People/Client/src/store/people/selectors.js
index 695560a38b..b651b54b64 100644
--- a/products/ASC.People/Client/src/store/people/selectors.js
+++ b/products/ASC.People/Client/src/store/people/selectors.js
@@ -1,9 +1,15 @@
import { find, filter, cloneDeep } from "lodash";
import { createSelector } from "reselect";
-import { store, constants } from "@appserver/common";
import { isMobileOnly } from "react-device-detect";
-const { isAdmin, isMe, getCurrentUser } = store.auth.selectors;
-const { EmployeeActivationStatus, EmployeeStatus } = constants;
+import {
+ isAdmin,
+ isMe,
+ getCurrentUser,
+} from "@appserver/common/src/store/auth/selectors";
+import {
+ EmployeeActivationStatus,
+ EmployeeStatus,
+} from "@appserver/common/src/constants";
export function getSelectedUser(selection, userId) {
return find(selection, function (obj) {
diff --git a/products/ASC.People/Client/src/store/portal/actions.js b/products/ASC.People/Client/src/store/portal/actions.js
index 41db354db8..208fa8547d 100644
--- a/products/ASC.People/Client/src/store/portal/actions.js
+++ b/products/ASC.People/Client/src/store/portal/actions.js
@@ -1,4 +1,4 @@
-import { api } from "@appserver/common";
+import { getInvitationLinks } from "@appserver/common/src/api/portal";
export const SET_INVITE_LINKS = "SET_INVITE_LINKS";
@@ -17,7 +17,7 @@ export function getPortalInviteLinks() {
const { auth } = getState();
if (!auth.user.isAdmin) return Promise.resolve();
- return api.portal.getInvitationLinks().then((data) => {
+ return getInvitationLinks().then((data) => {
dispatch(setInviteLinks(data.userLink, data.guestLink));
});
};
diff --git a/products/ASC.People/Client/src/store/portal/reducers.js b/products/ASC.People/Client/src/store/portal/reducers.js
index 0bd08e33ae..041f8ef4e3 100644
--- a/products/ASC.People/Client/src/store/portal/reducers.js
+++ b/products/ASC.People/Client/src/store/portal/reducers.js
@@ -4,7 +4,7 @@ const initialState = {
inviteLinks: {},
};
-const profileReducer = (state = initialState, action) => {
+const portalReducer = (state = initialState, action) => {
switch (action.type) {
case SET_INVITE_LINKS:
return Object.assign({}, state, {
@@ -15,4 +15,4 @@ const profileReducer = (state = initialState, action) => {
}
};
-export default profileReducer;
+export default portalReducer;
diff --git a/products/ASC.People/Client/src/store/profile/actions.js b/products/ASC.People/Client/src/store/profile/actions.js
index 70f82e559a..092e21b594 100644
--- a/products/ASC.People/Client/src/store/profile/actions.js
+++ b/products/ASC.People/Client/src/store/profile/actions.js
@@ -1,7 +1,7 @@
import { updateUserList } from "../people/actions";
-import { store, api } from "@appserver/common";
-const { setCurrentUser } = store.auth.actions;
-const { isMe } = store.auth.selectors;
+import api from "@appserver/common/src/api";
+import { setCurrentUser } from "@appserver/common/src/store/auth/actions";
+import { isMe } from "@appserver/common/src/store/auth/selectors";
export const SET_PROFILE = "SET_PROFILE";
export const CLEAN_PROFILE = "CLEAN_PROFILE";
diff --git a/products/ASC.People/Client/src/store/rootReducer.js b/products/ASC.People/Client/src/store/rootReducer.js
index cfb5942cd7..063fae2f80 100644
--- a/products/ASC.People/Client/src/store/rootReducer.js
+++ b/products/ASC.People/Client/src/store/rootReducer.js
@@ -3,11 +3,8 @@ import peopleReducer from "./people/reducers";
import profileReducer from "./profile/reducers";
import groupReducer from "./group/reducers";
import portalReducer from "./portal/reducers";
-import { store } from "@appserver/common";
-const { reducer: authReducer } = store.auth;
const rootReducer = combineReducers({
- auth: authReducer,
people: peopleReducer,
profile: profileReducer,
group: groupReducer,
diff --git a/web/ASC.Web.Client/package.json b/web/ASC.Web.Client/package.json
index 784d9f0571..fa7c3a3c53 100644
--- a/web/ASC.Web.Client/package.json
+++ b/web/ASC.Web.Client/package.json
@@ -33,6 +33,7 @@
},
"dependencies": {
"@babel/runtime": "^7.12.5",
+ "@redux-dynostore/core": "^3.1.1",
"attr-accept": "^2.2.2",
"axios": "^0.21.0",
"email-addresses": "^3.1.0",
diff --git a/web/ASC.Web.Client/src/store/reducerManager.js b/web/ASC.Web.Client/src/store/reducerManager.js
new file mode 100644
index 0000000000..05b7b9b89c
--- /dev/null
+++ b/web/ASC.Web.Client/src/store/reducerManager.js
@@ -0,0 +1,61 @@
+import { combineReducers } from "redux";
+
+export function createReducerManager(initialReducers) {
+ // Create an object which maps keys to reducers
+ const reducers = { ...initialReducers };
+
+ // Create the initial combinedReducer
+ let combinedReducer = combineReducers(reducers);
+
+ // An array which is used to delete state keys when reducers are removed
+ let keysToRemove = [];
+
+ return {
+ getReducerMap: () => reducers,
+
+ // The root reducer function exposed by this object
+ // This will be passed to the store
+ reduce: (state, action) => {
+ // If any reducers have been removed, clean up their state first
+ if (keysToRemove.length > 0) {
+ state = { ...state };
+ for (let key of keysToRemove) {
+ delete state[key];
+ }
+ keysToRemove = [];
+ }
+
+ // Delegate to the combined reducer
+ return combinedReducer(state, action);
+ },
+
+ // Adds a new reducer with the specified key
+ add: (key, reducer) => {
+ if (!key || reducers[key]) {
+ return;
+ }
+
+ // Add the reducer to the reducer mapping
+ reducers[key] = reducer;
+
+ // Generate a new combined reducer
+ combinedReducer = combineReducers(reducers);
+ },
+
+ // Removes a reducer with the specified key
+ remove: (key) => {
+ if (!key || !reducers[key]) {
+ return;
+ }
+
+ // Remove it from the reducer mapping
+ delete reducers[key];
+
+ // Add the key to the list of keys to clean up
+ keysToRemove.push(key);
+
+ // Generate a new combined reducer
+ combinedReducer = combineReducers(reducers);
+ },
+ };
+}
diff --git a/web/ASC.Web.Client/src/store/rootReducer.js b/web/ASC.Web.Client/src/store/rootReducer.js
deleted file mode 100644
index d3ba2e26a5..0000000000
--- a/web/ASC.Web.Client/src/store/rootReducer.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { combineReducers } from "redux";
-import store from "@appserver/common/src/store";
-import settingsReducer from "./settings/reducer";
-import confirmReducer from "./confirm/reducer";
-import wizardReducer from "./wizard/reducer";
-import paymentsReducer from "./payments/reducer";
-
-const { reducer: authReducer } = store.auth;
-
-const rootReducer = combineReducers({
- auth: authReducer,
- settings: settingsReducer,
- confirm: confirmReducer,
- wizard: wizardReducer,
- payments: paymentsReducer,
-});
-
-export default rootReducer;
diff --git a/web/ASC.Web.Client/src/store/store.js b/web/ASC.Web.Client/src/store/store.js
index 467e54ce61..98feac8e0c 100644
--- a/web/ASC.Web.Client/src/store/store.js
+++ b/web/ASC.Web.Client/src/store/store.js
@@ -1,21 +1,41 @@
import { createStore, applyMiddleware } from "redux";
-import { composeWithDevTools } from "redux-devtools-extension/logOnlyInProduction";
-import rootReducer from "./rootReducer";
import thunk from "redux-thunk";
+import { composeWithDevTools } from "redux-devtools-extension/logOnlyInProduction";
+import dynostore, {
+ combineReducers,
+ dynamicReducers,
+} from "@redux-dynostore/core";
+//import { createReducerManager } from "./reducerManager";
-/* eslint-disable no-underscore-dangle */
-const composeEnhancers = composeWithDevTools({
- // options like actionSanitizer, stateSanitizer
+import authReducer from "@appserver/common/src/store/auth/reducer";
+import settingsReducer from "./settings/reducer";
+import confirmReducer from "./confirm/reducer";
+import wizardReducer from "./wizard/reducer";
+import paymentsReducer from "./payments/reducer";
+
+const rootReducer = combineReducers({
+ auth: authReducer,
+ settings: settingsReducer,
+ confirm: confirmReducer,
+ wizard: wizardReducer,
+ payments: paymentsReducer,
});
-const configureStore = (prelodedState) =>
- createStore(
- rootReducer,
- prelodedState,
- composeEnhancers(applyMiddleware(thunk))
- );
-/* eslint-enable */
+/* eslint-disable no-underscore-dangle */
+// const composeEnhancers = composeWithDevTools({
+// // options like actionSanitizer, stateSanitizer
+// });
-const store = configureStore({});
+//const reducerManager = createReducerManager(staticReducers);
+
+// Create a store with the root reducer function being the one exposed by the manager.
+const store = createStore(
+ //reducerManager.reduce,
+ rootReducer,
+ composeWithDevTools(applyMiddleware(thunk), dynostore(dynamicReducers()))
+);
+
+// Optional: Put the reducer manager on the store so it is easily accessible
+//store.reducerManager = reducerManager;
export default store;
diff --git a/yarn.lock b/yarn.lock
index 08703e0210..9b6a3a5abe 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1792,10 +1792,10 @@
is-plain-object "^5.0.0"
universal-user-agent "^6.0.0"
-"@octokit/openapi-types@^1.2.0":
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-1.2.2.tgz#55d927436c07ef148ec927fbf4d55580a19bd68e"
- integrity sha512-vrKDLd/Rq4IE16oT+jJkDBx0r29NFkdkU8GwqVSP4RajsAvP23CMGtFhVK0pedUhAiMvG1bGnFcTC/xCKaKgmw==
+"@octokit/openapi-types@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-2.0.0.tgz#6d8f8ad9db3b75a39115f5def2654df8bed39f28"
+ integrity sha512-J4bfM7lf8oZvEAdpS71oTvC1ofKxfEZgU5vKVwzZKi4QPiL82udjpseJwxPid9Pu2FNmyRQOX4iEj6W1iOSnPw==
"@octokit/plugin-enterprise-rest@^6.0.1":
version "6.0.1"
@@ -1841,13 +1841,13 @@
once "^1.4.0"
"@octokit/request@^5.2.0":
- version "5.4.11"
- resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.11.tgz#2536e9095f7e90c9d22a14fed7bb7299a22050c5"
- integrity sha512-vskebNjuz4oTdPIv+9cQjHvjk8vjrMv2fOmSo6zr7IIaFHeVsJlG/C07MXiSS/+g/qU1GHjkPG1XW3faz57EoQ==
+ version "5.4.12"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.12.tgz#b04826fa934670c56b135a81447be2c1723a2ffc"
+ integrity sha512-MvWYdxengUWTGFpfpefBBpVmmEYfkwMoxonIB3sUGp5rhdgwjXL1ejo6JbgzG/QD9B/NYt/9cJX1pxXeSIUCkg==
dependencies:
"@octokit/endpoint" "^6.0.1"
"@octokit/request-error" "^2.0.0"
- "@octokit/types" "^6.0.0"
+ "@octokit/types" "^6.0.3"
deprecation "^2.0.0"
is-plain-object "^5.0.0"
node-fetch "^2.6.1"
@@ -1883,14 +1883,28 @@
dependencies:
"@types/node" ">= 8"
-"@octokit/types@^6.0.0":
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.0.1.tgz#a43a667ac8fff45012d23b771b7c3199f4491910"
- integrity sha512-H/DnTKC+U09en2GFLH/MfAPNDaYb1isieD4Hx4NLpEt/I1PgtZP/8a+Ehc/j9GHuVF/UvGtOVD8AF9XXvws53w==
+"@octokit/types@^6.0.0", "@octokit/types@^6.0.3":
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.1.1.tgz#bc88b3eb5f447b025a2a1a8177a72db216e8d4ca"
+ integrity sha512-btm3D6S7VkRrgyYF31etUtVY/eQ1KzrNRqhFt25KSe2mKlXuLXJilglRC6eDA2P6ou94BUnk/Kz5MPEolXgoiw==
dependencies:
- "@octokit/openapi-types" "^1.2.0"
+ "@octokit/openapi-types" "^2.0.0"
"@types/node" ">= 8"
+"@redux-dynostore/core@^3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@redux-dynostore/core/-/core-3.1.1.tgz#50fad2ea470d26e4d1525532dbfe3e9eb252ccea"
+ integrity sha512-7tenoqwDr2DQ4L1i9PyAWhs2SZmmrIhq7bBeFXys3D52bxMx6uJ1hMlyyqT/D7VH+6+LifsdVFcnkR3kB8VDUA==
+
+"@redux-dynostore/react-redux@^3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@redux-dynostore/react-redux/-/react-redux-3.1.1.tgz#e469e49ccfefb3a49bb1a8167c6b08dd7e86497d"
+ integrity sha512-d51ffDpPWc+7cL42SrjCCKgVQhpstbPdQnRZuA0VVT9YHxOWSfhrQNoroJqs8Uvs2xeEZX4ZWikyB2EtrlAGpA==
+ dependencies:
+ "@redux-dynostore/core" "^3.1.1"
+ hoist-non-react-statics "^3.3.0"
+ recompose "^0.30.0"
+
"@svgr/babel-plugin-add-jsx-attribute@^5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906"
@@ -2539,7 +2553,7 @@ arrify@^1.0.1:
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-asap@^2.0.0:
+asap@^2.0.0, asap@~2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
@@ -2779,7 +2793,7 @@ braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-browserslist@^4.14.3, browserslist@^4.14.5, browserslist@^4.14.7:
+browserslist@^4.14.3, browserslist@^4.14.5, browserslist@^4.15.0:
version "4.15.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.15.0.tgz#3d48bbca6a3f378e86102ffd017d9a03f122bdb0"
integrity sha512-IJ1iysdMkGmjjYeRlDU8PQejVwxvVO5QOfXH7ylW31GO6LwNRSmm/SgRXtNsEXqMLl2e+2H5eEJ7sfynF8TCaQ==
@@ -2986,9 +3000,9 @@ camelize@^1.0.0:
integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=
caniuse-lite@^1.0.30001164:
- version "1.0.30001164"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001164.tgz#5bbfd64ca605d43132f13cc7fdabb17c3036bfdc"
- integrity sha512-G+A/tkf4bu0dSp9+duNiXc7bGds35DioCyC6vgK2m/rjA4Krpy5WeZgZyfH2f0wj2kI6yAWWucyap6oOwmY1mg==
+ version "1.0.30001165"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f"
+ integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==
caseless@~0.12.0:
version "0.12.0"
@@ -3004,6 +3018,11 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
+change-emitter@^0.1.2:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515"
+ integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU=
+
chardet@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@@ -3427,13 +3446,18 @@ copy-descriptor@^0.1.0:
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
core-js-compat@^3.7.0:
- version "3.8.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1"
- integrity sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==
+ version "3.8.1"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e"
+ integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==
dependencies:
- browserslist "^4.14.7"
+ browserslist "^4.15.0"
semver "7.0.0"
+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-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"
@@ -3929,9 +3953,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.612:
- version "1.3.613"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.613.tgz#5ad7ec1e19d28c81edb6d61b9d4990d1c9716182"
- integrity sha512-c3gkahddiUalk7HLhTC7PsKzPZmovYFtgh+g3rZJ+dGokk4n4dzEoOBnoV8VU8ptvnGJMhrjM/lyXKSltqf2hQ==
+ version "1.3.616"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.616.tgz#de63d1c79bb8eb61168774df0c11c9e1af69f9e8"
+ integrity sha512-CI8L38UN2BEnqXw3/oRIQTmde0LiSeqWSRlPA42ZTYgJQ8fYenzAM2Z3ni+jtILTcrs5aiXZCGJ96Pm+3/yGyQ==
email-addresses@^3.1.0:
version "3.1.0"
@@ -3982,9 +4006,9 @@ enhanced-resolve@4.1.0:
tapable "^1.0.0"
enhanced-resolve@^5.2.0:
- version "5.3.2"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.3.2.tgz#142295dda51aaaff049cf256459dc9a82a0b67f3"
- integrity sha512-G28GCrglCAH6+EqMN2D+Q2wCUS1O1vVQJBn8ME2I/Api41YBe4vLWWRBOUbwDH7vwzSZdljxwTRVqnf+sm6XqQ==
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.4.0.tgz#a8bcf23b00affac9455cf71efd80844f4054f4dc"
+ integrity sha512-ZmqfWURB2lConOBM1JdCVfPyMRv5RdKWktLXO6123p97ovVm2CLBgw9t5MBj3jJWA6eHyOeIws9iJQoGFR4euQ==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.0.0"
@@ -4324,6 +4348,19 @@ faye-websocket@~0.11.1:
dependencies:
websocket-driver ">=0.5.1"
+fbjs@^0.8.1:
+ version "0.8.17"
+ resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd"
+ integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=
+ 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.18"
+
figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -4894,7 +4931,12 @@ history@^4.9.0:
tiny-warning "^1.0.0"
value-equal "^1.0.1"
-hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.2:
+hoist-non-react-statics@^2.3.1:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
+ integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
+
+hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
@@ -5297,9 +5339,11 @@ is-accessor-descriptor@^1.0.0:
kind-of "^6.0.0"
is-arguments@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
- integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
+ integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
+ dependencies:
+ call-bind "^1.0.0"
is-arrayish@^0.2.1:
version "0.2.1"
@@ -5435,9 +5479,9 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
is-extglob "^2.1.1"
is-negative-zero@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
- integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
+ integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
is-number@^3.0.0:
version "3.0.0"
@@ -5511,7 +5555,7 @@ is-ssh@^1.3.0:
dependencies:
protocols "^1.1.0"
-is-stream@^1.1.0:
+is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
@@ -5577,6 +5621,14 @@ 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"
@@ -5923,7 +5975,7 @@ loglevel@^1.6.8:
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
-loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -6472,6 +6524,14 @@ node-fetch-npm@^2.0.2:
json-parse-better-errors "^1.0.0"
safe-buffer "^5.1.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-fetch@^2.5.0, node-fetch@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
@@ -7237,6 +7297,13 @@ promise-retry@^1.1.1:
err-code "^1.0.0"
retry "^0.10.0"
+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"
+
promzard@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee"
@@ -7508,6 +7575,11 @@ react-is@^16.12.0, react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+react-lifecycles-compat@^3.0.2:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
+ integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
+
react-onclickoutside@^6.9.0:
version "6.9.0"
resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.9.0.tgz#a54bc317ae8cf6131a5d78acea55a11067f37a1f"
@@ -7569,9 +7641,9 @@ react-string-format@^0.1.0:
integrity sha512-xkIhnh2t1YmS4r8Zz92qs0Ia8EMbBoRlMEvvMtC0sQBSxxBmBujfssSA4PYYi0w2WvJYSEktgilB+320/mlsOQ==
react-svg@^11.1.2:
- version "11.1.3"
- resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.3.tgz#14c3f1552b0893319e7466e22797cf7f08a3bfb8"
- integrity sha512-OSrg4mVXgGK+Qypraa0d68bI8e6ubcBGes9lqcaMdSgPjfrzFTe4yaG94UdROwk5JvFVLKTquc4lRuvqOY92KQ==
+ version "11.1.4"
+ resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.4.tgz#1a828bcf6193bae09609080fbcae29cb6bed62dc"
+ integrity sha512-Xx3dZNCbTc4wgogf5joE2PcJBcKplfVJGAvgYqIu+/XNSqB1KTutmebn77bO9XT6uHXSBSoy11jCDw/6fddAFQ==
dependencies:
"@babel/runtime" "^7.12.5"
"@tanem/svg-injector" "^8.1.0"
@@ -7781,6 +7853,18 @@ readdirp@~3.5.0:
dependencies:
picomatch "^2.2.1"
+recompose@^0.30.0:
+ version "0.30.0"
+ resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0"
+ integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ change-emitter "^0.1.2"
+ fbjs "^0.8.1"
+ hoist-non-react-statics "^2.3.1"
+ react-lifecycles-compat "^3.0.2"
+ symbol-observable "^1.0.4"
+
redent@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
@@ -8114,9 +8198,9 @@ sass-loader@^10.1.0:
semver "^7.3.2"
sass@^1.29.0:
- version "1.29.0"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.29.0.tgz#ec4e1842c146d8ea9258c28c141b8c2b7c6ab7f1"
- integrity sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==
+ version "1.30.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.30.0.tgz#60bbbbaf76ba10117e61c6c24f00161c3d60610e"
+ integrity sha512-26EUhOXRLaUY7+mWuRFqGeGGNmhB1vblpTENO1Z7mAzzIZeVxZr9EZoaY1kyGLFWdSOZxRMAufiN2mkbO6dAlw==
dependencies:
chokidar ">=2.0.0 <4.0.0"
@@ -8258,6 +8342,11 @@ set-value@^2.0.0, set-value@^2.0.1:
is-plain-object "^2.0.3"
split-string "^3.0.1"
+setimmediate@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
setprototypeof@1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
@@ -8397,9 +8486,9 @@ source-list-map@^2.0.0, source-list-map@^2.0.1:
integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
source-map-loader@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.1.2.tgz#5b782bf08496d3a7f355e1780df0e25190a80991"
- integrity sha512-bjf6eSENOYBX4JZDfl9vVLNsGAQ6Uz90fLmOazcmMcyDYOBFsGxPNn83jXezWLY9bJsVAo1ObztxPcV8HAbjVA==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-1.1.3.tgz#7dbc2fe7ea09d3e43c51fd9fc478b7f016c1f820"
+ integrity sha512-6YHeF+XzDOrT/ycFJNI53cgEsp/tHTMl37hi7uVyqFAlTXW109JazaQCkbc+jjoL2637qkH1amLi+JzrIpt5lA==
dependencies:
abab "^2.0.5"
iconv-lite "^0.6.2"
@@ -8778,7 +8867,7 @@ svgo@^1.2.2:
unquote "~1.1.1"
util.promisify "~1.0.0"
-symbol-observable@^1.2.0:
+symbol-observable@^1.0.4, symbol-observable@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
@@ -8789,9 +8878,9 @@ tapable@^1.0.0, tapable@^1.1.3:
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
tapable@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.1.1.tgz#b01cc1902d42a7bb30514e320ce21c456f72fd3f"
- integrity sha512-Wib1S8m2wdpLbmQz0RBEVosIyvb/ykfKXf3ZIDqvWoMg/zTNm6G/tDSuUM61J1kNCDXWJrLHGSFeMhAG+gAGpQ==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b"
+ integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==
tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
version "4.4.13"
@@ -9098,7 +9187,7 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-ua-parser-js@^0.7.22:
+ua-parser-js@^0.7.18, ua-parser-js@^0.7.22:
version "0.7.22"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3"
integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==
@@ -9506,6 +9595,11 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+whatwg-fetch@>=0.10.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868"
+ integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==
+
whatwg-mimetype@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"