From b39119ace47b41666f4da230724a7712796b2a47 Mon Sep 17 00:00:00 2001 From: Maksim Eltyshev Date: Thu, 24 Jun 2021 01:05:22 +0500 Subject: [PATCH] Project managers, board members, auto-update after reconnection, refactoring --- client/package-lock.json | 14245 ++++++++++------ client/package.json | 41 +- client/src/actions/action.js | 14 +- client/src/actions/actions.js | 15 +- client/src/actions/attachment.js | 129 +- client/src/actions/board-membership.js | 97 + client/src/actions/board.js | 216 +- client/src/actions/card-label.js | 62 - client/src/actions/card-membership.js | 62 - client/src/actions/card.js | 166 +- client/src/actions/comment-action.js | 97 +- client/src/actions/core.js | 42 +- client/src/actions/entry/action.js | 22 + client/src/actions/entry/attachment.js | 22 + client/src/actions/entry/board-membership.js | 29 + client/src/actions/entry/board.js | 21 + client/src/actions/entry/card.js | 21 + client/src/actions/entry/core.js | 7 + client/src/actions/entry/index.js | 6 +- client/src/actions/entry/label.js | 35 + client/src/actions/entry/list.js | 21 + client/src/actions/entry/modal.js | 7 + client/src/actions/entry/notification.js | 15 +- client/src/actions/entry/project-manager.js | 29 + .../src/actions/entry/project-membership.js | 15 - client/src/actions/entry/project.js | 21 + client/src/actions/entry/socket.js | 11 + client/src/actions/entry/task.js | 21 + client/src/actions/entry/user.js | 35 + client/src/actions/index.js | 9 +- client/src/actions/label.js | 207 +- client/src/actions/list.js | 129 +- client/src/actions/login.js | 39 +- client/src/actions/modal.js | 2 - client/src/actions/notification.js | 38 +- client/src/actions/notifications.js | 56 - client/src/actions/project-manager.js | 101 + client/src/actions/project-membership.js | 80 - client/src/actions/project.js | 179 +- client/src/actions/projects.js | 25 - client/src/actions/router.js | 40 + client/src/actions/socket.js | 51 +- client/src/actions/task.js | 129 +- client/src/actions/user.js | 405 +- client/src/actions/users.js | 22 - client/src/api/board-memberships.js | 14 + client/src/api/cards.js | 8 - client/src/api/index.js | 6 +- client/src/api/notifications.js | 17 +- client/src/api/project-managers.js | 14 + client/src/api/project-memberships.js | 14 - client/src/api/projects.js | 3 + client/src/api/users.js | 3 + .../components/BoardActions/BoardActions.jsx | 78 + .../BoardActions/BoardActions.module.scss | 11 + .../Filter.jsx => BoardActions/Filters.jsx} | 24 +- .../Filters.module.scss} | 9 +- client/src/components/BoardActions/index.js | 3 + .../components/BoardKanban/BoardKanban.jsx | 99 +- .../BoardKanban/BoardKanban.module.scss | 12 +- .../src/components/BoardMembershipsPopup.jsx | 5 + .../BoardMembershipsStep.jsx} | 10 +- .../BoardMembershipsStep.module.scss} | 0 .../Item.jsx | 0 .../Item.module.scss | 0 .../components/BoardMembershipsStep/index.js | 3 + client/src/components/Boards/Boards.jsx | 206 +- .../src/components/Boards/Boards.module.scss | 7 +- client/src/components/Card/ActionsPopup.jsx | 10 +- client/src/components/Card/Card.jsx | 78 +- client/src/components/Card/Card.module.scss | 2 - client/src/components/Card/Tasks.module.scss | 3 - .../components/CardModal/Actions/Actions.jsx | 22 +- .../CardModal/Actions/ItemComment.jsx | 18 +- .../AttachmentAddZone.module.scss | 2 +- client/src/components/CardModal/CardModal.jsx | 562 +- .../CardModal/CardModal.module.scss | 13 +- .../src/components/CardModal/Tasks/Item.jsx | 18 +- .../CardModal/Tasks/Item.module.scss | 7 +- .../src/components/CardModal/Tasks/Tasks.jsx | 20 +- client/src/components/CoreWrapper.jsx | 19 - .../components/CoreWrapper/CoreWrapper.jsx | 37 + .../CoreWrapper.module.scss} | 40 +- client/src/components/CoreWrapper/index.js | 3 + client/src/components/Fixed/Fixed.jsx | 6 +- client/src/components/Header/Header.jsx | 113 +- .../src/components/Header/Header.module.scss | 20 +- client/src/components/List/ActionsPopup.jsx | 18 +- client/src/components/List/List.jsx | 110 +- client/src/components/List/List.module.scss | 139 +- .../components/Memberships/ActionsPopup.jsx | 110 + .../ActionsPopup.module.scss} | 0 .../AddPopup/AddPopup.jsx} | 15 +- .../AddPopup/AddPopup.module.scss} | 0 .../AddPopup}/UserItem.jsx | 0 .../AddPopup}/UserItem.module.scss | 0 .../components/Memberships/AddPopup/index.js | 3 + .../components/Memberships/Memberships.jsx | 107 + .../Memberships/Memberships.module.scss | 30 + client/src/components/Memberships/index.js | 3 + .../Project/ActionsPopup/ActionsPopup.jsx | 142 - .../ActionsPopup/ActionsPopup.module.scss | 11 - .../ActionsPopup/BackgroundEditStep.jsx | 176 - .../Project/ActionsPopup/NameEditStep.jsx | 67 - .../components/Project/ActionsPopup/index.js | 3 - .../Project/MembershipAddPopup/index.js | 3 - .../Project/MembershipEditPopup.jsx | 65 - client/src/components/Project/Project.jsx | 119 +- .../components/Project/Project.module.scss | 49 +- .../components/ProjectMembershipsPopup.jsx | 5 - .../ProjectMembershipsStep/index.js | 3 - .../ProjectSettingsModal/BackgroundPane.jsx | 168 + .../BackgroundPane.module.scss} | 9 +- .../GeneralPane/GeneralPane.jsx | 55 + .../GeneralPane/GeneralPane.module.scss | 32 + .../GeneralPane/InformationEdit.jsx | 60 + .../GeneralPane/InformationEdit.module.scss} | 0 .../ProjectSettingsModal/GeneralPane/index.js | 3 + .../ProjectSettingsModal/ManagersPane.jsx | 41 + .../ManagersPane.module.scss | 6 + .../ProjectSettingsModal.jsx | 119 + .../components/ProjectSettingsModal/index.js | 3 + client/src/components/Projects/Projects.jsx | 6 +- .../components/SocketStatus/SocketStatus.jsx | 59 - client/src/components/SocketStatus/index.js | 3 - .../src/components/Static/Static.module.scss | 2 +- client/src/components/User/User.module.scss | 2 +- client/src/components/UserPopup/UserPopup.jsx | 8 +- client/src/constants/ActionTypes.js | 358 +- client/src/constants/EntryActionTypes.js | 60 +- client/src/constants/ModalTypes.js | 2 + client/src/constants/SocketStatuses.js | 7 - .../src/containers/BoardActionsContainer.js | 59 + client/src/containers/BoardKanbanContainer.js | 35 +- client/src/containers/BoardsContainer.js | 10 +- client/src/containers/CardContainer.js | 9 +- client/src/containers/CardModalContainer.js | 15 +- client/src/containers/CoreWrapperContainer.js | 1 + client/src/containers/FixedContainer.js | 4 +- client/src/containers/HeaderContainer.js | 19 +- client/src/containers/ListContainer.js | 14 +- client/src/containers/LoginContainer.js | 6 +- .../containers/ProjectAddModalContainer.js | 6 +- client/src/containers/ProjectContainer.js | 45 +- .../ProjectSettingsModalContainer.js | 50 + client/src/containers/ProjectsContainer.js | 6 +- .../src/containers/SocketStatusContainer.js | 11 - .../src/containers/UserAddPopupContainer.js | 6 +- client/src/containers/UsersModalContainer.js | 6 +- client/src/locales/cs/core.js | 9 - client/src/locales/de/core.js | 9 - client/src/locales/en/core.js | 29 +- client/src/locales/es/core.js | 9 - client/src/locales/fr/core.js | 9 - client/src/locales/pl/core.js | 9 - client/src/locales/ru/core.js | 3 - client/src/models/Action.js | 66 +- client/src/models/Attachment.js | 64 +- client/src/models/Board.js | 164 +- client/src/models/BoardMembership.js | 103 + client/src/models/Card.js | 152 +- client/src/models/Label.js | 53 +- client/src/models/List.js | 58 +- client/src/models/Notification.js | 44 +- client/src/models/Project.js | 131 +- client/src/models/ProjectManager.js | 84 + client/src/models/ProjectMembership.js | 69 - client/src/models/Task.js | 53 +- client/src/models/User.js | 173 +- client/src/models/index.js | 6 +- client/src/orm.js | 6 +- client/src/reducers/auth.js | 5 +- client/src/reducers/core.js | 26 +- client/src/reducers/forms/index.js | 11 - client/src/reducers/index.js | 8 +- client/src/reducers/socket.js | 13 +- .../authenticate-form.js} | 22 +- client/src/reducers/ui/index.js | 11 + .../project-create-form.js} | 8 +- .../user-create.js => ui/user-create-form.js} | 22 +- client/src/sagas/core/request.js | 36 + client/src/sagas/core/requests/actions.js | 35 - client/src/sagas/core/requests/attachment.js | 92 - client/src/sagas/core/requests/board.js | 187 +- client/src/sagas/core/requests/card-label.js | 67 - .../sagas/core/requests/card-membership.js | 67 - client/src/sagas/core/requests/card.js | 129 - .../src/sagas/core/requests/comment-action.js | 96 - client/src/sagas/core/requests/core.js | 90 + client/src/sagas/core/requests/index.js | 16 +- client/src/sagas/core/requests/label.js | 92 - client/src/sagas/core/requests/list.js | 92 - .../src/sagas/core/requests/notifications.js | 65 - .../sagas/core/requests/project-membership.js | 65 - client/src/sagas/core/requests/project.js | 117 - client/src/sagas/core/requests/projects.js | 37 - client/src/sagas/core/requests/request.js | 22 - client/src/sagas/core/requests/task.js | 92 - client/src/sagas/core/requests/user.js | 222 - client/src/sagas/core/requests/users.js | 30 - client/src/sagas/core/services/action.js | 15 + client/src/sagas/core/services/actions.js | 25 +- client/src/sagas/core/services/attachment.js | 64 +- .../sagas/core/services/board-membership.js | 186 + client/src/sagas/core/services/board.js | 130 +- client/src/sagas/core/services/card.js | 66 +- .../src/sagas/core/services/comment-action.js | 39 +- client/src/sagas/core/services/core.js | 78 +- client/src/sagas/core/services/index.js | 5 +- client/src/sagas/core/services/label.js | 90 +- client/src/sagas/core/services/list.js | 56 +- client/src/sagas/core/services/login.js | 3 +- .../src/sagas/core/services/notification.js | 58 +- .../src/sagas/core/services/notifications.js | 18 - .../sagas/core/services/project-manager.js | 174 + .../sagas/core/services/project-membership.js | 31 - client/src/sagas/core/services/project.js | 101 +- client/src/sagas/core/services/router.js | 114 +- client/src/sagas/core/services/socket.js | 290 +- client/src/sagas/core/services/task.js | 56 +- client/src/sagas/core/services/user.js | 166 +- client/src/sagas/core/watchers/action.js | 22 + client/src/sagas/core/watchers/actions.js | 4 +- client/src/sagas/core/watchers/attachment.js | 20 +- .../sagas/core/watchers/board-membership.js | 26 + client/src/sagas/core/watchers/board.js | 26 +- client/src/sagas/core/watchers/card.js | 32 +- .../src/sagas/core/watchers/comment-action.js | 8 +- client/src/sagas/core/watchers/core.js | 8 + client/src/sagas/core/watchers/index.js | 10 +- client/src/sagas/core/watchers/label.js | 40 +- client/src/sagas/core/watchers/list.js | 22 +- client/src/sagas/core/watchers/login.js | 4 +- client/src/sagas/core/watchers/modal.js | 6 +- .../src/sagas/core/watchers/notification.js | 22 +- .../sagas/core/watchers/project-manager.js | 26 + .../sagas/core/watchers/project-membership.js | 18 - client/src/sagas/core/watchers/project.js | 22 +- client/src/sagas/core/watchers/router.js | 4 +- client/src/sagas/core/watchers/socket.js | 244 +- client/src/sagas/core/watchers/task.js | 26 +- client/src/sagas/core/watchers/user.js | 58 +- client/src/sagas/login/index.js | 2 +- client/src/sagas/login/requests/index.js | 1 - client/src/sagas/login/requests/login.js | 29 - client/src/sagas/login/services/login.js | 13 +- client/src/sagas/login/services/router.js | 2 +- client/src/sagas/login/watchers/login.js | 6 +- client/src/sagas/login/watchers/router.js | 4 +- client/src/selectors/attachment.js | 10 + client/src/selectors/auth.js | 2 + client/src/selectors/board-membership.js | 20 + client/src/selectors/board.js | 167 + client/src/selectors/boolean.js | 29 - client/src/selectors/by-id.js | 166 - client/src/selectors/card.js | 284 + client/src/selectors/common.js | 3 - .../selectors/{next-position.js => core.js} | 2 + client/src/selectors/current.js | 442 - client/src/selectors/index.js | 20 +- client/src/selectors/list.js | 41 + client/src/selectors/modal.js | 2 + client/src/selectors/project-manager.js | 20 + client/src/selectors/project.js | 94 + client/src/selectors/{path.js => router.js} | 39 +- client/src/selectors/user.js | 108 + client/src/selectors/{all.js => users.js} | 10 +- client/src/setupTests.js | 2 +- client/src/store.js | 2 +- client/src/styles.module.scss | 3 +- client/src/utils/merge-records.js | 27 + package-lock.json | 2238 +-- package.json | 8 +- server/.env | 2 +- .../api/controllers/access-tokens/create.js | 10 +- server/api/controllers/actions/index.js | 32 +- server/api/controllers/attachments/create.js | 59 +- server/api/controllers/attachments/delete.js | 23 +- server/api/controllers/attachments/update.js | 23 +- .../controllers/board-memberships/create.js | 69 + .../controllers/board-memberships/delete.js | 57 + server/api/controllers/boards/create.js | 27 +- server/api/controllers/boards/delete.js | 21 +- server/api/controllers/boards/show.js | 64 +- server/api/controllers/boards/update.js | 23 +- server/api/controllers/card-labels/create.js | 21 +- server/api/controllers/card-labels/delete.js | 19 +- .../controllers/card-memberships/create.js | 25 +- .../controllers/card-memberships/delete.js | 19 +- server/api/controllers/cards/create.js | 29 +- server/api/controllers/cards/delete.js | 22 +- server/api/controllers/cards/index.js | 41 +- server/api/controllers/cards/show.js | 39 +- server/api/controllers/cards/update.js | 48 +- .../api/controllers/comment-actions/create.js | 21 +- .../api/controllers/comment-actions/delete.js | 45 +- .../api/controllers/comment-actions/update.js | 36 +- server/api/controllers/labels/create.js | 19 +- server/api/controllers/labels/delete.js | 22 +- server/api/controllers/labels/update.js | 22 +- server/api/controllers/lists/create.js | 19 +- server/api/controllers/lists/delete.js | 22 +- server/api/controllers/lists/update.js | 22 +- server/api/controllers/notifications/index.js | 20 +- server/api/controllers/notifications/show.js | 48 + .../api/controllers/notifications/update.js | 10 +- .../create.js | 33 +- .../controllers/project-managers/delete.js | 51 + .../controllers/project-memberships/delete.js | 39 - server/api/controllers/projects/create.js | 15 +- server/api/controllers/projects/delete.js | 16 +- server/api/controllers/projects/index.js | 39 +- server/api/controllers/projects/show.js | 65 + .../projects/update-background-image.js | 12 +- server/api/controllers/projects/update.js | 22 +- server/api/controllers/tasks/create.js | 19 +- server/api/controllers/tasks/delete.js | 23 +- server/api/controllers/tasks/update.js | 23 +- server/api/controllers/users/create.js | 10 +- server/api/controllers/users/delete.js | 10 +- server/api/controllers/users/index.js | 8 +- server/api/controllers/users/show.js | 56 +- server/api/controllers/users/update-avatar.js | 44 +- server/api/controllers/users/update-email.js | 12 +- .../api/controllers/users/update-password.js | 10 +- .../api/controllers/users/update-username.js | 12 +- server/api/controllers/users/update.js | 10 +- server/api/helpers/actions/create-one.js | 47 + .../delete-one.js} | 4 +- .../{get-actions.js => actions/get-many.js} | 6 +- .../get-project-path.js} | 10 +- .../update-one.js} | 4 +- .../create-one.js} | 23 +- .../delete-one.js} | 10 +- .../{get-tasks.js => attachments/get-many.js} | 6 +- .../get-project-path.js} | 10 +- .../update-one.js} | 4 +- .../helpers/board-memberships/create-one.js | 48 + .../helpers/board-memberships/delete-one.js | 71 + .../get-many.js} | 6 +- .../board-memberships/get-project-path.js | 34 + .../{create-board.js => boards/create-one.js} | 40 +- server/api/helpers/boards/delete-one.js | 30 + .../helpers/boards/get-board-memberships.js | 15 + server/api/helpers/boards/get-card-ids.js | 15 + .../get-cards.js} | 18 +- server/api/helpers/boards/get-labels.js | 15 + server/api/helpers/boards/get-lists.js | 27 + .../{get-boards.js => boards/get-many.js} | 6 +- .../api/helpers/boards/get-member-user-ids.js | 15 + .../get-project-path.js} | 6 +- .../{update-board.js => boards/update-one.js} | 12 +- .../create-one.js} | 8 +- .../delete-one.js} | 4 +- .../get-many.js} | 6 +- .../create-one.js} | 16 +- .../delete-one.js} | 4 +- .../api/helpers/card-memberships/get-many.js | 12 + .../helpers/card-subscriptions/get-many.js | 12 + .../{create-card.js => cards/create-one.js} | 76 +- .../{delete-card.js => cards/delete-one.js} | 4 +- .../get-actions.js} | 12 +- server/api/helpers/cards/get-attachments.js | 15 + server/api/helpers/cards/get-card-labels.js | 15 + .../api/helpers/cards/get-card-memberships.js | 15 + .../helpers/cards/get-card-subscriptions.js | 27 + server/api/helpers/cards/get-label-ids.js | 15 + server/api/helpers/cards/get-labels.js | 15 + .../{get-cards.js => cards/get-many.js} | 6 +- .../get-project-path.js} | 14 +- .../cards/get-subscription-user-ids.js | 22 + server/api/helpers/cards/get-tasks.js | 15 + .../{update-card.js => cards/update-one.js} | 152 +- server/api/helpers/create-action.js | 57 - .../api/helpers/create-project-membership.js | 63 - server/api/helpers/create-project.js | 51 - server/api/helpers/delete-board.js | 34 - server/api/helpers/delete-list.js | 26 - .../api/helpers/delete-project-membership.js | 61 - server/api/helpers/get-admin-user-ids.js | 11 - .../api/helpers/get-attachments-for-card.js | 17 - server/api/helpers/get-attachments.js | 14 - server/api/helpers/get-boards-for-project.js | 29 - .../api/helpers/get-card-labels-for-card.js | 17 - server/api/helpers/get-card-labels.js | 14 - server/api/helpers/get-card-memberships.js | 14 - server/api/helpers/get-card-subscriptions.js | 14 - server/api/helpers/get-cards-for-list.js | 29 - server/api/helpers/get-label-ids-for-card.js | 16 - server/api/helpers/get-labels-for-board.js | 17 - server/api/helpers/get-labels-for-card.js | 16 - server/api/helpers/get-lists-for-board.js | 29 - .../get-membership-project-ids-for-user.js | 21 - .../get-membership-user-ids-for-project.js | 27 - .../api/helpers/get-memberships-for-card.js | 29 - .../helpers/get-memberships-for-project.js | 17 - .../api/helpers/get-notifications-for-user.js | 18 - server/api/helpers/get-notifications.js | 14 - .../get-project-memberships-for-user.js | 17 - server/api/helpers/get-project-memberships.js | 14 - .../get-subscription-user-ids-for-card.js | 35 - .../get-subscriptions-by-user-for-card.js | 22 - .../api/helpers/get-subscriptions-for-card.js | 29 - server/api/helpers/get-tasks-for-card.js | 17 - .../api/helpers/is-user-member-for-project.js | 21 - .../{create-label.js => labels/create-one.js} | 12 +- .../{delete-label.js => labels/delete-one.js} | 4 +- server/api/helpers/labels/get-many.js | 12 + .../get-project-path.js} | 10 +- .../{update-label.js => labels/update-one.js} | 4 +- .../{create-list.js => lists/create-one.js} | 16 +- server/api/helpers/lists/delete-one.js | 28 + server/api/helpers/lists/get-cards.js | 27 + server/api/helpers/lists/get-many.js | 12 + .../get-project-path.js} | 10 +- .../{update-list.js => lists/update-one.js} | 8 +- .../api/helpers/notifications/create-one.js | 29 + server/api/helpers/notifications/get-many.js | 12 + .../api/helpers/notifications/update-many.js | 48 + .../helpers/project-managers/create-one.js | 45 + .../helpers/project-managers/delete-one.js | 34 + .../api/helpers/project-managers/get-many.js | 12 + server/api/helpers/projects/create-one.js | 38 + .../delete-one.js} | 15 +- server/api/helpers/projects/get-board-ids.js | 15 + .../projects/get-board-member-user-ids.js | 15 + server/api/helpers/projects/get-boards.js | 27 + .../get-manager-and-board-member-user-ids.js | 16 + .../helpers/projects/get-manager-user-ids.js | 15 + server/api/helpers/projects/get-many.js | 12 + .../helpers/projects/get-project-managers.js | 15 + .../update-one.js} | 6 +- .../{create-task.js => tasks/create-one.js} | 12 +- .../{delete-task.js => tasks/delete-one.js} | 4 +- server/api/helpers/tasks/get-many.js | 12 + .../get-project-path.js} | 10 +- .../{update-task.js => tasks/update-one.js} | 4 +- .../helpers/update-notifications-for-user.js | 42 - .../{create-user.js => users/create-one.js} | 9 +- .../{delete-user.js => users/delete-one.js} | 24 +- server/api/helpers/users/get-admin-ids.js | 9 + .../helpers/users/get-board-memberships.js | 15 + .../helpers/users/get-manager-project-ids.js | 15 + .../{get-users.js => users/get-many.js} | 6 +- .../helpers/users/get-membership-board-ids.js | 15 + server/api/helpers/users/get-notifications.js | 16 + .../get-one-by-email-or-username.js} | 6 +- .../helpers/{get-user.js => users/get-one.js} | 16 +- .../api/helpers/users/get-project-managers.js | 15 + server/api/helpers/users/is-board-member.js | 21 + .../api/helpers/users/is-card-subscriber.js | 21 + .../api/helpers/users/is-project-manager.js | 21 + .../{update-user.js => users/update-one.js} | 18 +- .../{ => utils}/create-attachment-receiver.js | 4 +- ...reate-project-background-image-receiver.js | 11 +- .../create-user-avatar-receiver.js | 4 +- .../{ => utils}/insert-to-positionables.js | 6 +- server/api/helpers/{ => utils}/map-records.js | 4 +- server/api/helpers/{ => utils}/sign-token.js | 6 +- .../api/helpers/{ => utils}/verify-token.js | 8 +- server/api/hooks/current-user/index.js | 4 +- server/api/models/Action.js | 10 +- server/api/models/Attachment.js | 4 +- server/api/models/Board.js | 14 +- server/api/models/BoardMembership.js | 35 + server/api/models/Card.js | 6 +- server/api/models/Project.js | 11 +- ...ProjectMembership.js => ProjectManager.js} | 4 +- server/api/models/User.js | 9 +- server/config/policies.js | 18 +- server/config/routes.js | 11 +- .../20180721020022_create_next_id_function.js | 3 - ...721234154_create_project_manager_table.js} | 2 +- ...722001747_create_board_membership_table.js | 19 + .../20180722003614_create_card_table.js | 1 + .../20180722006688_create_attachment_table.js | 2 +- server/package-lock.json | 6069 ++----- server/package.json | 38 +- 478 files changed, 21226 insertions(+), 19495 deletions(-) create mode 100644 client/src/actions/board-membership.js delete mode 100644 client/src/actions/card-label.js delete mode 100644 client/src/actions/card-membership.js create mode 100644 client/src/actions/entry/action.js create mode 100644 client/src/actions/entry/board-membership.js create mode 100644 client/src/actions/entry/core.js create mode 100755 client/src/actions/entry/project-manager.js delete mode 100755 client/src/actions/entry/project-membership.js create mode 100644 client/src/actions/entry/socket.js delete mode 100644 client/src/actions/notifications.js create mode 100644 client/src/actions/project-manager.js delete mode 100644 client/src/actions/project-membership.js delete mode 100644 client/src/actions/projects.js create mode 100644 client/src/actions/router.js delete mode 100644 client/src/actions/users.js create mode 100644 client/src/api/board-memberships.js create mode 100755 client/src/api/project-managers.js delete mode 100755 client/src/api/project-memberships.js create mode 100644 client/src/components/BoardActions/BoardActions.jsx create mode 100644 client/src/components/BoardActions/BoardActions.module.scss rename client/src/components/{BoardKanban/Filter.jsx => BoardActions/Filters.jsx} (88%) rename client/src/components/{BoardKanban/Filter.module.scss => BoardActions/Filters.module.scss} (84%) create mode 100644 client/src/components/BoardActions/index.js create mode 100644 client/src/components/BoardMembershipsPopup.jsx rename client/src/components/{ProjectMembershipsStep/ProjectMembershipsStep.jsx => BoardMembershipsStep/BoardMembershipsStep.jsx} (88%) rename client/src/components/{ProjectMembershipsStep/ProjectMembershipsStep.module.scss => BoardMembershipsStep/BoardMembershipsStep.module.scss} (100%) rename client/src/components/{ProjectMembershipsStep => BoardMembershipsStep}/Item.jsx (100%) rename client/src/components/{ProjectMembershipsStep => BoardMembershipsStep}/Item.module.scss (100%) create mode 100755 client/src/components/BoardMembershipsStep/index.js delete mode 100755 client/src/components/CoreWrapper.jsx create mode 100755 client/src/components/CoreWrapper/CoreWrapper.jsx rename client/src/components/{SocketStatus/SocketStatus.module.scss => CoreWrapper/CoreWrapper.module.scss} (66%) create mode 100644 client/src/components/CoreWrapper/index.js create mode 100755 client/src/components/Memberships/ActionsPopup.jsx rename client/src/components/{Project/MembershipEditPopup.module.scss => Memberships/ActionsPopup.module.scss} (100%) rename client/src/components/{Project/MembershipAddPopup/MembershipAddPopup.jsx => Memberships/AddPopup/AddPopup.jsx} (80%) rename client/src/components/{Project/MembershipAddPopup/MembershipAddPopup.module.scss => Memberships/AddPopup/AddPopup.module.scss} (100%) rename client/src/components/{Project/MembershipAddPopup => Memberships/AddPopup}/UserItem.jsx (100%) rename client/src/components/{Project/MembershipAddPopup => Memberships/AddPopup}/UserItem.module.scss (100%) create mode 100644 client/src/components/Memberships/AddPopup/index.js create mode 100644 client/src/components/Memberships/Memberships.jsx create mode 100644 client/src/components/Memberships/Memberships.module.scss create mode 100644 client/src/components/Memberships/index.js delete mode 100755 client/src/components/Project/ActionsPopup/ActionsPopup.jsx delete mode 100644 client/src/components/Project/ActionsPopup/ActionsPopup.module.scss delete mode 100644 client/src/components/Project/ActionsPopup/BackgroundEditStep.jsx delete mode 100644 client/src/components/Project/ActionsPopup/NameEditStep.jsx delete mode 100644 client/src/components/Project/ActionsPopup/index.js delete mode 100644 client/src/components/Project/MembershipAddPopup/index.js delete mode 100755 client/src/components/Project/MembershipEditPopup.jsx delete mode 100644 client/src/components/ProjectMembershipsPopup.jsx delete mode 100755 client/src/components/ProjectMembershipsStep/index.js create mode 100644 client/src/components/ProjectSettingsModal/BackgroundPane.jsx rename client/src/components/{Project/ActionsPopup/BackgroundEditStep.module.scss => ProjectSettingsModal/BackgroundPane.module.scss} (93%) create mode 100644 client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.jsx create mode 100644 client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.module.scss create mode 100644 client/src/components/ProjectSettingsModal/GeneralPane/InformationEdit.jsx rename client/src/components/{Project/ActionsPopup/NameEditStep.module.scss => ProjectSettingsModal/GeneralPane/InformationEdit.module.scss} (100%) create mode 100644 client/src/components/ProjectSettingsModal/GeneralPane/index.js create mode 100644 client/src/components/ProjectSettingsModal/ManagersPane.jsx create mode 100644 client/src/components/ProjectSettingsModal/ManagersPane.module.scss create mode 100644 client/src/components/ProjectSettingsModal/ProjectSettingsModal.jsx create mode 100644 client/src/components/ProjectSettingsModal/index.js delete mode 100755 client/src/components/SocketStatus/SocketStatus.jsx delete mode 100644 client/src/components/SocketStatus/index.js delete mode 100644 client/src/constants/SocketStatuses.js create mode 100644 client/src/containers/BoardActionsContainer.js create mode 100644 client/src/containers/ProjectSettingsModalContainer.js delete mode 100755 client/src/containers/SocketStatusContainer.js create mode 100644 client/src/models/BoardMembership.js create mode 100644 client/src/models/ProjectManager.js delete mode 100755 client/src/models/ProjectMembership.js delete mode 100644 client/src/reducers/forms/index.js rename client/src/reducers/{forms/authenticate.js => ui/authenticate-form.js} (80%) create mode 100644 client/src/reducers/ui/index.js rename client/src/reducers/{forms/project-create.js => ui/project-create-form.js} (74%) rename client/src/reducers/{forms/user-create.js => ui/user-create-form.js} (80%) create mode 100755 client/src/sagas/core/request.js delete mode 100644 client/src/sagas/core/requests/actions.js delete mode 100644 client/src/sagas/core/requests/attachment.js delete mode 100644 client/src/sagas/core/requests/card-label.js delete mode 100644 client/src/sagas/core/requests/card-membership.js delete mode 100644 client/src/sagas/core/requests/card.js delete mode 100644 client/src/sagas/core/requests/comment-action.js create mode 100644 client/src/sagas/core/requests/core.js delete mode 100644 client/src/sagas/core/requests/label.js delete mode 100644 client/src/sagas/core/requests/list.js delete mode 100644 client/src/sagas/core/requests/notifications.js delete mode 100644 client/src/sagas/core/requests/project-membership.js delete mode 100644 client/src/sagas/core/requests/project.js delete mode 100644 client/src/sagas/core/requests/projects.js delete mode 100755 client/src/sagas/core/requests/request.js delete mode 100644 client/src/sagas/core/requests/task.js delete mode 100644 client/src/sagas/core/requests/user.js delete mode 100644 client/src/sagas/core/requests/users.js create mode 100644 client/src/sagas/core/services/action.js create mode 100644 client/src/sagas/core/services/board-membership.js delete mode 100644 client/src/sagas/core/services/notifications.js create mode 100644 client/src/sagas/core/services/project-manager.js delete mode 100644 client/src/sagas/core/services/project-membership.js create mode 100644 client/src/sagas/core/watchers/action.js create mode 100644 client/src/sagas/core/watchers/board-membership.js create mode 100644 client/src/sagas/core/watchers/core.js create mode 100644 client/src/sagas/core/watchers/project-manager.js delete mode 100644 client/src/sagas/core/watchers/project-membership.js delete mode 100644 client/src/sagas/login/requests/index.js delete mode 100755 client/src/sagas/login/requests/login.js create mode 100644 client/src/selectors/attachment.js create mode 100644 client/src/selectors/auth.js create mode 100644 client/src/selectors/board-membership.js create mode 100644 client/src/selectors/board.js delete mode 100644 client/src/selectors/boolean.js delete mode 100755 client/src/selectors/by-id.js create mode 100644 client/src/selectors/card.js delete mode 100755 client/src/selectors/common.js rename client/src/selectors/{next-position.js => core.js} (95%) delete mode 100755 client/src/selectors/current.js create mode 100644 client/src/selectors/list.js create mode 100644 client/src/selectors/modal.js create mode 100644 client/src/selectors/project-manager.js create mode 100644 client/src/selectors/project.js rename client/src/selectors/{path.js => router.js} (62%) create mode 100644 client/src/selectors/user.js rename client/src/selectors/{all.js => users.js} (52%) mode change 100755 => 100644 create mode 100644 client/src/utils/merge-records.js create mode 100755 server/api/controllers/board-memberships/create.js create mode 100755 server/api/controllers/board-memberships/delete.js create mode 100644 server/api/controllers/notifications/show.js rename server/api/controllers/{project-memberships => project-managers}/create.js (52%) create mode 100755 server/api/controllers/project-managers/delete.js delete mode 100755 server/api/controllers/project-memberships/delete.js create mode 100644 server/api/controllers/projects/show.js create mode 100644 server/api/helpers/actions/create-one.js rename server/api/helpers/{delete-action.js => actions/delete-one.js} (88%) rename server/api/helpers/{get-actions.js => actions/get-many.js} (56%) rename server/api/helpers/{get-action-to-project-path.js => actions/get-project-path.js} (74%) mode change 100755 => 100644 rename server/api/helpers/{update-action.js => actions/update-one.js} (89%) rename server/api/helpers/{create-attachment.js => attachments/create-one.js} (72%) rename server/api/helpers/{delete-attachment.js => attachments/delete-one.js} (90%) rename server/api/helpers/{get-tasks.js => attachments/get-many.js} (55%) rename server/api/helpers/{get-attachment-to-project-path.js => attachments/get-project-path.js} (75%) mode change 100755 => 100644 rename server/api/helpers/{update-attachment.js => attachments/update-one.js} (89%) create mode 100644 server/api/helpers/board-memberships/create-one.js create mode 100644 server/api/helpers/board-memberships/delete-one.js rename server/api/helpers/{get-labels.js => board-memberships/get-many.js} (55%) create mode 100644 server/api/helpers/board-memberships/get-project-path.js rename server/api/helpers/{create-board.js => boards/create-one.js} (60%) create mode 100644 server/api/helpers/boards/delete-one.js create mode 100644 server/api/helpers/boards/get-board-memberships.js create mode 100644 server/api/helpers/boards/get-card-ids.js rename server/api/helpers/{get-cards-for-board.js => boards/get-cards.js} (56%) create mode 100644 server/api/helpers/boards/get-labels.js create mode 100644 server/api/helpers/boards/get-lists.js rename server/api/helpers/{get-boards.js => boards/get-many.js} (53%) create mode 100644 server/api/helpers/boards/get-member-user-ids.js rename server/api/helpers/{get-board-to-project-path.js => boards/get-project-path.js} (87%) mode change 100755 => 100644 rename server/api/helpers/{update-board.js => boards/update-one.js} (83%) rename server/api/helpers/{create-card-label.js => card-labels/create-one.js} (90%) rename server/api/helpers/{delete-card-label.js => card-labels/delete-one.js} (88%) rename server/api/helpers/{get-projects.js => card-labels/get-many.js} (53%) rename server/api/helpers/{create-card-membership.js => card-memberships/create-one.js} (88%) rename server/api/helpers/{delete-card-membership.js => card-memberships/delete-one.js} (92%) create mode 100644 server/api/helpers/card-memberships/get-many.js create mode 100644 server/api/helpers/card-subscriptions/get-many.js rename server/api/helpers/{create-card.js => cards/create-one.js} (69%) rename server/api/helpers/{delete-card.js => cards/delete-one.js} (86%) rename server/api/helpers/{get-actions-for-card.js => cards/get-actions.js} (56%) create mode 100644 server/api/helpers/cards/get-attachments.js create mode 100644 server/api/helpers/cards/get-card-labels.js create mode 100644 server/api/helpers/cards/get-card-memberships.js create mode 100644 server/api/helpers/cards/get-card-subscriptions.js create mode 100644 server/api/helpers/cards/get-label-ids.js create mode 100644 server/api/helpers/cards/get-labels.js rename server/api/helpers/{get-cards.js => cards/get-many.js} (63%) rename server/api/helpers/{get-card-to-project-path.js => cards/get-project-path.js} (74%) mode change 100755 => 100644 create mode 100644 server/api/helpers/cards/get-subscription-user-ids.js create mode 100644 server/api/helpers/cards/get-tasks.js rename server/api/helpers/{update-card.js => cards/update-one.js} (57%) delete mode 100644 server/api/helpers/create-action.js delete mode 100644 server/api/helpers/create-project-membership.js delete mode 100644 server/api/helpers/create-project.js delete mode 100644 server/api/helpers/delete-board.js delete mode 100644 server/api/helpers/delete-list.js delete mode 100644 server/api/helpers/delete-project-membership.js delete mode 100755 server/api/helpers/get-admin-user-ids.js delete mode 100644 server/api/helpers/get-attachments-for-card.js delete mode 100644 server/api/helpers/get-attachments.js delete mode 100644 server/api/helpers/get-boards-for-project.js delete mode 100644 server/api/helpers/get-card-labels-for-card.js delete mode 100644 server/api/helpers/get-card-labels.js delete mode 100644 server/api/helpers/get-card-memberships.js delete mode 100644 server/api/helpers/get-card-subscriptions.js delete mode 100644 server/api/helpers/get-cards-for-list.js delete mode 100644 server/api/helpers/get-label-ids-for-card.js delete mode 100644 server/api/helpers/get-labels-for-board.js delete mode 100644 server/api/helpers/get-labels-for-card.js delete mode 100644 server/api/helpers/get-lists-for-board.js delete mode 100755 server/api/helpers/get-membership-project-ids-for-user.js delete mode 100755 server/api/helpers/get-membership-user-ids-for-project.js delete mode 100644 server/api/helpers/get-memberships-for-card.js delete mode 100644 server/api/helpers/get-memberships-for-project.js delete mode 100644 server/api/helpers/get-notifications-for-user.js delete mode 100644 server/api/helpers/get-notifications.js delete mode 100644 server/api/helpers/get-project-memberships-for-user.js delete mode 100644 server/api/helpers/get-project-memberships.js delete mode 100644 server/api/helpers/get-subscription-user-ids-for-card.js delete mode 100644 server/api/helpers/get-subscriptions-by-user-for-card.js delete mode 100644 server/api/helpers/get-subscriptions-for-card.js delete mode 100644 server/api/helpers/get-tasks-for-card.js delete mode 100755 server/api/helpers/is-user-member-for-project.js rename server/api/helpers/{create-label.js => labels/create-one.js} (88%) rename server/api/helpers/{delete-label.js => labels/delete-one.js} (88%) create mode 100644 server/api/helpers/labels/get-many.js rename server/api/helpers/{get-label-to-project-path.js => labels/get-project-path.js} (74%) mode change 100755 => 100644 rename server/api/helpers/{update-label.js => labels/update-one.js} (88%) rename server/api/helpers/{create-list.js => lists/create-one.js} (82%) create mode 100644 server/api/helpers/lists/delete-one.js create mode 100644 server/api/helpers/lists/get-cards.js create mode 100644 server/api/helpers/lists/get-many.js rename server/api/helpers/{get-list-to-project-path.js => lists/get-project-path.js} (74%) mode change 100755 => 100644 rename server/api/helpers/{update-list.js => lists/update-one.js} (84%) create mode 100644 server/api/helpers/notifications/create-one.js create mode 100644 server/api/helpers/notifications/get-many.js create mode 100644 server/api/helpers/notifications/update-many.js create mode 100644 server/api/helpers/project-managers/create-one.js create mode 100644 server/api/helpers/project-managers/delete-one.js create mode 100644 server/api/helpers/project-managers/get-many.js create mode 100644 server/api/helpers/projects/create-one.js rename server/api/helpers/{delete-project.js => projects/delete-one.js} (55%) create mode 100644 server/api/helpers/projects/get-board-ids.js create mode 100644 server/api/helpers/projects/get-board-member-user-ids.js create mode 100644 server/api/helpers/projects/get-boards.js create mode 100644 server/api/helpers/projects/get-manager-and-board-member-user-ids.js create mode 100644 server/api/helpers/projects/get-manager-user-ids.js create mode 100644 server/api/helpers/projects/get-many.js create mode 100644 server/api/helpers/projects/get-project-managers.js rename server/api/helpers/{update-project.js => projects/update-one.js} (95%) rename server/api/helpers/{create-task.js => tasks/create-one.js} (88%) rename server/api/helpers/{delete-task.js => tasks/delete-one.js} (88%) create mode 100644 server/api/helpers/tasks/get-many.js rename server/api/helpers/{get-task-to-project-path.js => tasks/get-project-path.js} (74%) mode change 100755 => 100644 rename server/api/helpers/{update-task.js => tasks/update-one.js} (89%) delete mode 100644 server/api/helpers/update-notifications-for-user.js rename server/api/helpers/{create-user.js => users/create-one.js} (88%) rename server/api/helpers/{delete-user.js => users/delete-one.js} (56%) create mode 100644 server/api/helpers/users/get-admin-ids.js create mode 100644 server/api/helpers/users/get-board-memberships.js create mode 100644 server/api/helpers/users/get-manager-project-ids.js rename server/api/helpers/{get-users.js => users/get-many.js} (81%) create mode 100644 server/api/helpers/users/get-membership-board-ids.js create mode 100644 server/api/helpers/users/get-notifications.js rename server/api/helpers/{get-user-by-email-or-username.js => users/get-one-by-email-or-username.js} (71%) rename server/api/helpers/{get-user.js => users/get-one.js} (61%) create mode 100644 server/api/helpers/users/get-project-managers.js create mode 100644 server/api/helpers/users/is-board-member.js create mode 100644 server/api/helpers/users/is-card-subscriber.js create mode 100644 server/api/helpers/users/is-project-manager.js rename server/api/helpers/{update-user.js => users/update-one.js} (87%) rename server/api/helpers/{ => utils}/create-attachment-receiver.js (97%) rename server/api/helpers/{ => utils}/create-project-background-image-receiver.js (87%) rename server/api/helpers/{ => utils}/create-user-avatar-receiver.js (96%) rename server/api/helpers/{ => utils}/insert-to-positionables.js (97%) rename server/api/helpers/{ => utils}/map-records.js (88%) rename server/api/helpers/{ => utils}/sign-token.js (55%) mode change 100755 => 100644 rename server/api/helpers/{ => utils}/verify-token.js (64%) mode change 100755 => 100644 create mode 100644 server/api/models/BoardMembership.js rename server/api/models/{ProjectMembership.js => ProjectManager.js} (94%) mode change 100755 => 100644 rename server/db/migrations/{20180721234154_create_project_membership_table.js => 20180721234154_create_project_manager_table.js} (88%) create mode 100755 server/db/migrations/20180722001747_create_board_membership_table.js diff --git a/client/package-lock.json b/client/package-lock.json index 19cfa129..b26038b6 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,28 +8,28 @@ "dependencies": { "classnames": "^2.2.6", "connected-react-router": "^6.8.0", - "date-fns": "^2.17.0", + "date-fns": "^2.22.1", "dequal": "^2.0.2", "history": "^4.10.1", - "i18next": "^19.8.7", - "i18next-browser-languagedetector": "^6.0.1", + "i18next": "^20.3.2", + "i18next-browser-languagedetector": "^6.1.2", "initials": "^3.1.1", "lodash": "^4.17.20", - "node-sass": "^4.14.1", + "node-sass": "^6.0.0", "prop-types": "^15.7.2", "react": "^17.0.1", "react-beautiful-dnd": "^13.0.0", - "react-datepicker": "^3.4.1", + "react-datepicker": "^4.1.1", "react-dom": "^17.0.1", "react-dropzone": "^11.3.1", - "react-i18next": "^11.8.6", + "react-i18next": "^11.11.0", "react-input-mask": "^2.0.4", - "react-markdown": "^5.0.3", - "react-redux": "^7.2.2", + "react-markdown": "^6.0.2", + "react-redux": "^7.2.4", "react-router-dom": "^5.2.0", - "react-scripts": "4.0.2", - "react-textarea-autosize": "^8.3.1", - "redux": "^4.0.5", + "react-scripts": "4.0.3", + "react-textarea-autosize": "^8.3.3", + "redux": "^4.1.0", "redux-logger": "^3.0.6", "redux-orm": "^0.16.2", "redux-saga": "^1.1.3", @@ -38,23 +38,23 @@ "sails.io.js": "^1.2.1", "semantic-ui-react": "^2.0.3", "socket.io-client": "^2.3.1", - "validator": "^13.5.2", + "validator": "^13.6.0", "whatwg-fetch": "^3.5.0" }, "devDependencies": { + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.2", "chai": "^4.3.0", "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.6", - "eslint": "^7.19.0", + "eslint": "^7.29.0", "eslint-config-airbnb": "^18.2.1", - "eslint-config-prettier": "^7.2.0", - "eslint-plugin-import": "^2.22.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.23.4", "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-react": "^7.22.0", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0", "jest-enzyme": "^7.1.2", - "prettier": "2.2.1", + "prettier": "2.3.1", "react-test-renderer": "^17.0.1" } }, @@ -67,29 +67,31 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.11.tgz", - "integrity": "sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg==" + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" }, @@ -102,11 +104,14 @@ } }, "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/core/node_modules/semver": { @@ -126,13 +131,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "dependencies": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/generator/node_modules/source-map": { @@ -144,32 +152,41 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } @@ -183,36 +200,43 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.14.5", "regexpu-core": "^4.7.1" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "dependencies": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", @@ -236,169 +260,224 @@ } }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "dependencies": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", - "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", "dependencies": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", - "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "lodash": "^4.17.19" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", - "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", - "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", "dependencies": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "dependencies": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { @@ -466,9 +545,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.11.tgz", - "integrity": "sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", "bin": { "parser": "bin/babel-parser.js" }, @@ -476,31 +555,69 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", "@babel/plugin-syntax-async-generators": "^7.8.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, "node_modules/@babel/plugin-proposal-decorators": { "version": "7.12.1", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz", @@ -515,136 +632,183 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", + "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", - "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=4" @@ -686,12 +850,29 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", - "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", + "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -720,11 +901,14 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", - "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -753,11 +937,14 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", - "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", + "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -829,87 +1016,122 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", - "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dependencies": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", "globals": "^11.1.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } @@ -923,57 +1145,72 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -992,259 +1229,325 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "dependencies": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", "dependencies": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "dependencies": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", + "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz", - "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", + "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz", - "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz", + "integrity": "sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz", - "integrity": "sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", + "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/types": "^7.12.17" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz", - "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", + "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.12.17" + "@babel/plugin-transform-react-jsx": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz", - "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.5.tgz", + "integrity": "sha512-M/fmDX6n0cfHK/NLTcPmrfVAORKDhK8tyjDhyxlUjYyPYYO8FRWwuxBA3WBx8kWN/uBUuwGa3s/0+hQ9JIN3Tg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz", - "integrity": "sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz", + "integrity": "sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", - "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", + "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "dependencies": { "regenerator-transform": "^0.14.2" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1264,122 +1567,158 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz", - "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", + "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-typescript": "^7.12.13" + "@babel/helper-create-class-features-plugin": "^7.14.6", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-env": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", - "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", + "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", "dependencies": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.8", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -1389,47 +1728,51 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.0", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", "semver": "^6.3.0" }, + "engines": { + "node": ">=6.9.0" + }, "peerDependencies": { "@babel/core": "^7.0.0-0" } @@ -1458,15 +1801,19 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz", - "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", + "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-react-display-name": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.13", - "@babel/plugin-transform-react-jsx-development": "^7.12.12", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.5", + "@babel/plugin-transform-react-jsx-development": "^7.14.5", + "@babel/plugin-transform-react-pure-annotations": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -1485,62 +1832,80 @@ } }, "node_modules/@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "dependencies": { "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", - "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz", + "integrity": "sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA==", "dependencies": { - "core-js-pure": "^3.0.0", + "core-js-pure": "^3.15.0", "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/traverse/node_modules/globals": { @@ -1552,13 +1917,15 @@ } }, "node_modules/@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { @@ -1595,14 +1962,14 @@ "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, "node_modules/@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -1613,28 +1980,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, "node_modules/@fluentui/react-component-event-listener": { "version": "0.51.7", "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.51.7.tgz", @@ -1660,6 +2005,11 @@ "react-dom": "^16.8.0 || ^17" } }, + "node_modules/@fluentui/react-component-ref/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/@hapi/address": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", @@ -1699,19 +2049,6 @@ "@hapi/hoek": "^8.3.0" } }, - "node_modules/@hypnosphi/create-react-context": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", - "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "dependencies": { - "gud": "^1.0.0", - "warning": "^4.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": ">=0.14.0" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1727,6 +2064,70 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -1759,6 +2160,61 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/console/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/@jest/console/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@jest/console/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/@jest/core": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", @@ -1797,6 +2253,238 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/core/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/@jest/core/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@jest/core/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/core/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/core/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@jest/core/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/core/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/environment": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", @@ -1811,6 +2499,29 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/@jest/fake-timers": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", @@ -1827,6 +2538,61 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/fake-timers/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/@jest/fake-timers/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@jest/fake-timers/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/@jest/globals": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", @@ -1840,6 +2606,29 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/@jest/reporters": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", @@ -1877,6 +2666,189 @@ "node-notifier": "^8.0.0" } }, + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/reporters/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/@jest/reporters/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@jest/reporters/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/reporters/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/reporters/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@jest/reporters/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jest/reporters/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/source-map": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", @@ -1904,6 +2876,29 @@ "node": ">= 10.14.2" } }, + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/@jest/test-sequencer": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", @@ -1944,7 +2939,7 @@ "node": ">= 10.14.2" } }, - "node_modules/@jest/types": { + "node_modules/@jest/transform/node_modules/@jest/types": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", @@ -1959,12 +2954,69 @@ "node": ">= 10.14.2" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", "dependencies": { - "@nodelib/fs.stat": "2.0.4", + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/transform/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/@jest/transform/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/@jest/transform/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/types": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz", + "integrity": "sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg==", + "optional": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -1972,19 +3024,19 @@ } }, "node_modules/@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", "dependencies": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -2015,9 +3067,9 @@ } }, "node_modules/@popperjs/core": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz", - "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", + "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -2089,9 +3141,9 @@ } }, "node_modules/@rollup/plugin-replace": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz", - "integrity": "sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" @@ -2135,9 +3187,9 @@ } }, "node_modules/@sinonjs/commons": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", - "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dependencies": { "type-detect": "4.0.8" } @@ -2377,15 +3429,18 @@ "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@types/anymatch": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", - "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==" + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "engines": { + "node": ">= 6" + } }, "node_modules/@types/babel__core": { - "version": "7.1.13", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.13.tgz", - "integrity": "sha512-CC6amBNND16pTk4K3ZqKIaba6VGKAQs3gMjEY17FVd56oI/ZWt9OhS6riYiWv9s8ENbYUi7p8lgqb0QHQvUKQQ==", + "version": "7.1.14", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", + "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -2420,27 +3475,27 @@ } }, "node_modules/@types/cheerio": { - "version": "0.22.27", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.27.tgz", - "integrity": "sha512-UpmYZewEWNEE6Ya24RzAQ2X2OYwz32AaLyzYinpM8qqFGRyYufqKSvxPjjZkvS+h16bajfXl7VojrAxWzG/+mA==", + "version": "0.22.29", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.29.tgz", + "integrity": "sha512-rNX1PsrDPxiNiyLnRKiW2NXHJFHqx0Fl3J2WsZq0MTBspa/FgwlqhXJE2crIcc+/2IglLHtSWw7g053oUR8fOg==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/eslint": { - "version": "7.2.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", - "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz", + "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/estree": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", - "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==" + "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==" }, "node_modules/@types/glob": { "version": "7.1.3", @@ -2459,6 +3514,23 @@ "@types/node": "*" } }, + "node_modules/@types/hast": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", + "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "node_modules/@types/html-minifier-terser": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", @@ -2478,9 +3550,9 @@ } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dependencies": { "@types/istanbul-lib-report": "*" } @@ -2504,14 +3576,14 @@ } }, "node_modules/@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==" }, "node_modules/@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==" + "version": "15.12.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz", + "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.0", @@ -2524,15 +3596,14 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "node_modules/@types/prettier": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz", - "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw==" }, "node_modules/@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", - "peer": true + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, "node_modules/@types/q": { "version": "1.5.4", @@ -2540,16 +3611,26 @@ "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" }, "node_modules/@types/react": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz", - "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==", - "peer": true, + "version": "17.0.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.11.tgz", + "integrity": "sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, + "node_modules/@types/react-redux": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.16.tgz", + "integrity": "sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, "node_modules/@types/resolve": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", @@ -2561,8 +3642,7 @@ "node_modules/@types/scheduler": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", - "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==", - "peer": true + "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" }, "node_modules/@types/source-list-map": { "version": "0.1.2", @@ -2575,9 +3655,9 @@ "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==" }, "node_modules/@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz", + "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==" }, "node_modules/@types/uglify-js": { "version": "3.13.0", @@ -2593,15 +3673,15 @@ "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" }, "node_modules/@types/webpack": { - "version": "4.41.26", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", - "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "version": "4.41.29", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.29.tgz", + "integrity": "sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q==", "dependencies": { - "@types/anymatch": "*", "@types/node": "*", - "@types/tapable": "*", + "@types/tapable": "^1", "@types/uglify-js": "*", "@types/webpack-sources": "*", + "anymatch": "^3.0.0", "source-map": "^0.6.0" } }, @@ -2624,9 +3704,11 @@ } }, "node_modules/@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz", + "integrity": "sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==", + "optional": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -2637,18 +3719,17 @@ "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.18.0.tgz", - "integrity": "sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.0.tgz", + "integrity": "sha512-KcF6p3zWhf1f8xO84tuBailV5cN92vhS+VT7UJsPzGBm9VnQqfI9AsiMUFUCYHTYPg1uCCo+HyiDnpDuvkAMfQ==", "dependencies": { - "@typescript-eslint/experimental-utils": "4.18.0", - "@typescript-eslint/scope-manager": "4.18.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.28.0", + "@typescript-eslint/scope-manager": "4.28.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -2667,31 +3748,17 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.18.0.tgz", - "integrity": "sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.0.tgz", + "integrity": "sha512-9XD9s7mt3QWMk82GoyUpc/Ji03vz4T5AYlHF9DcoFNfJ/y3UAclRsfGiE2gLfXtyC+JRA3trR7cR296TEb1oiQ==", "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.18.0", - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/typescript-estree": "4.18.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.28.0", + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/typescript-estree": "4.28.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -2704,15 +3771,32 @@ "eslint": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.18.0.tgz", - "integrity": "sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA==", + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dependencies": { - "@typescript-eslint/scope-manager": "4.18.0", - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/typescript-estree": "4.18.0", - "debug": "^4.1.1" + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.0.tgz", + "integrity": "sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==", + "dependencies": { + "@typescript-eslint/scope-manager": "4.28.0", + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/typescript-estree": "4.28.0", + "debug": "^4.3.1" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -2731,12 +3815,12 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.18.0.tgz", - "integrity": "sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.0.tgz", + "integrity": "sha512-eCALCeScs5P/EYjwo6se9bdjtrh8ByWjtHzOkC4Tia6QQWtQr3PHovxh3TdYTuFcurkYI4rmFsRFpucADIkseg==", "dependencies": { - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/visitor-keys": "4.18.0" + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/visitor-keys": "4.28.0" }, "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" @@ -2747,9 +3831,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.18.0.tgz", - "integrity": "sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.0.tgz", + "integrity": "sha512-p16xMNKKoiJCVZY5PW/AfILw2xe1LfruTcfAKBj3a+wgNYP5I9ZEKNDOItoRt53p4EiPV6iRSICy8EPanG9ZVA==", "engines": { "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, @@ -2759,17 +3843,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz", - "integrity": "sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.0.tgz", + "integrity": "sha512-m19UQTRtxMzKAm8QxfKpvh6OwQSXaW1CdZPoCaQuLwAq7VZMNuhJmZR4g5281s2ECt658sldnJfdpSZZaxUGMQ==", "dependencies": { - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/visitor-keys": "4.18.0", - "debug": "^4.1.1", - "globby": "^11.0.1", + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/visitor-keys": "4.28.0", + "debug": "^4.3.1", + "globby": "^11.0.3", "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { "node": "^10.12.0 || >=12.0.0" @@ -2784,26 +3868,12 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz", - "integrity": "sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.0.tgz", + "integrity": "sha512-PjJyTWwrlrvM5jazxYF5ZPs/nl0kHDZMVbuIcbpawVXaDPelp3+S9zpOz5RmVUfS/fD5l5+ZXNKnWhNYjPzCvw==", "dependencies": { - "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/types": "4.28.0", "eslint-visitor-keys": "^2.0.0" }, "engines": { @@ -2971,6 +4041,43 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.2.tgz", + "integrity": "sha512-9STl8ZKp8VPJgtr6jEAv9IThX0PAJ1JXKv6IlXzq22Ejyk1bhSxJ6RfJCJT9A9+8JlDIf3BX5CC4s0Bs4/1wFQ==", + "dev": true, + "dependencies": { + "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.2", + "react-test-renderer": "^17.0.0" + }, + "peerDependencies": { + "enzyme": "^3.0.0", + "react": "^17.0.0-0", + "react-dom": "^17.0.0-0" + } + }, + "node_modules/@wojtekmaj/enzyme-adapter-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", + "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + }, + "peerDependencies": { + "react": "^17.0.0-0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -3064,6 +4171,17 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -3137,11 +4255,11 @@ } }, "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" @@ -3151,11 +4269,11 @@ } }, "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3195,9 +4313,9 @@ } }, "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -3275,12 +4393,6 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "node_modules/array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, "node_modules/array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -3336,14 +4448,20 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.find": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", - "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", + "node_modules/array.prototype.filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.0.tgz", + "integrity": "sha512-TfO1gz+tLm+Bswq0FBOXPqAchtCr2Rn48T8dLJoRFl8NoEosjZmzptmuo1X8aZBzZcqsR1W8U761tjACJtngTQ==", "dev": true, "dependencies": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.4" + "es-abstract": "^1.18.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.5" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3577,9 +4695,9 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "node_modules/axe-core": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz", - "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.3.tgz", + "integrity": "sha512-pXnVMfJKSIWU2Ml4JHP7pZEPIrgBO1Fd3WGx+fPBsS+KRGhE4vxooD8XBGWbQOIVSZsVK7pUDBBkCicNu80yzQ==", "engines": { "node": ">=4" } @@ -3649,6 +4767,29 @@ "@babel/core": "^7.0.0" } }, + "node_modules/babel-jest/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-jest/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -3763,12 +4904,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", "dependencies": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", "semver": "^6.1.1" }, "peerDependencies": { @@ -3784,23 +4925,23 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", + "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.2.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -4075,6 +5216,14 @@ "regenerator-runtime": "^0.13.4" } }, + "node_modules/babel-preset-react-app/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/babel-preset-react-app/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -4096,7 +5245,7 @@ "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", "hasInstallScript": true }, "node_modules/babel-runtime/node_modules/regenerator-runtime": { @@ -4127,9 +5276,9 @@ } }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base": { "version": "0.11.2", @@ -4244,17 +5393,6 @@ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, - "node_modules/block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dependencies": { - "inherits": "~2.0.0" - }, - "engines": { - "node": "0.4 || >=0.5.8" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -4462,15 +5600,15 @@ } }, "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^1.1.71" }, "bin": { "browserslist": "cli.js" @@ -4546,9 +5684,9 @@ } }, "node_modules/cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", + "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", "dependencies": { "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", @@ -4564,7 +5702,7 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.0", + "ssri": "^8.0.1", "tar": "^6.0.2", "unique-filename": "^1.1.1" }, @@ -4583,22 +5721,6 @@ "node": ">=10" } }, - "node_modules/cacache/node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -4717,9 +5839,13 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001203", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", - "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==" + "version": "1.0.30001239", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz", + "integrity": "sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, "node_modules/capture-exit": { "version": "2.0.0", @@ -4772,9 +5898,9 @@ } }, "node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4836,59 +5962,61 @@ "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==" }, "node_modules/cheerio": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.5.tgz", - "integrity": "sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw==", + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", "dev": true, "dependencies": { - "cheerio-select-tmp": "^0.1.0", - "dom-serializer": "~1.2.0", - "domhandler": "^4.0.0", - "entities": "~2.1.0", - "htmlparser2": "^6.0.0", - "parse5": "^6.0.0", - "parse5-htmlparser2-tree-adapter": "^6.0.0" + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" } }, - "node_modules/cheerio-select-tmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz", - "integrity": "sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ==", - "deprecated": "Use cheerio-select instead", + "node_modules/cheerio-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", + "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", "dev": true, "dependencies": { - "css-select": "^3.1.2", - "css-what": "^4.0.0", - "domelementtype": "^2.1.0", - "domhandler": "^4.0.0", - "domutils": "^2.4.4" + "css-select": "^4.1.3", + "css-what": "^5.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.7.0" }, "funding": { "url": "https://github.com/sponsors/fb55" } }, "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "optional": true, "dependencies": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "readdirp": "~3.6.0" }, "engines": { "node": ">= 8.10.0" }, "optionalDependencies": { - "fsevents": "~2.3.1" + "fsevents": "~2.3.2" } }, "node_modules/chownr": { @@ -4900,25 +6028,19 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dependencies": { - "tslib": "^1.9.0" - }, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "engines": { "node": ">=6.0" } }, - "node_modules/chrome-trace-event/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "optional": true, + "peer": true }, "node_modules/cipher-base": { "version": "1.0.4", @@ -5036,9 +6158,9 @@ } }, "node_modules/classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "node_modules/clean-css": { "version": "4.2.3", @@ -5277,6 +6399,15 @@ "node": ">= 0.8" } }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -5429,14 +6560,6 @@ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -5457,9 +6580,9 @@ } }, "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dependencies": { "safe-buffer": "~5.1.1" } @@ -5510,9 +6633,9 @@ } }, "node_modules/core-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", - "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.1.tgz", + "integrity": "sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -5520,11 +6643,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.1.tgz", + "integrity": "sha512-xGhzYMX6y7oEGQGAJmP2TmtBLvR4nZmRGEcFa3ubHOq5YEp51gGN9AovVa0AoujGZIq+Wm6dISiYyGNfdflYww==", "dependencies": { - "browserslist": "^4.16.3", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "funding": { @@ -5541,9 +6664,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz", - "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.15.1.tgz", + "integrity": "sha512-OZuWHDlYcIda8sJLY4Ec6nWq2hRjlyCqCZ+jCflyleMkVt3tPedDVErvHslyS2nbO+SlBFMSBJYvtLMwxnrzjA==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -5783,20 +6906,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/css-prefers-color-scheme": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", @@ -5812,15 +6921,14 @@ } }, "node_modules/css-select": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", - "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", - "dev": true, + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "dependencies": { "boolbase": "^1.0.0", - "css-what": "^4.0.0", - "domhandler": "^4.0.0", - "domutils": "^2.4.3", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", "nth-check": "^2.0.0" }, "funding": { @@ -5845,10 +6953,9 @@ } }, "node_modules/css-what": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", - "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", "engines": { "node": ">= 6" }, @@ -5873,12 +6980,12 @@ } }, "node_modules/cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "dependencies": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", + "cssnano-preset-default": "^4.0.8", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" }, @@ -5887,9 +6994,9 @@ } }, "node_modules/cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", "dependencies": { "css-declaration-sorter": "^4.0.1", "cssnano-util-raw-cache": "^4.0.1", @@ -5919,7 +7026,7 @@ "postcss-ordered-values": "^4.1.2", "postcss-reduce-initial": "^4.0.3", "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", + "postcss-svgo": "^4.0.3", "postcss-unique-selectors": "^4.0.1" }, "engines": { @@ -6019,9 +7126,9 @@ } }, "node_modules/csso/node_modules/css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -6057,10 +7164,9 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, "node_modules/csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==", - "peer": true + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" }, "node_modules/currently-unhandled": { "version": "0.4.1", @@ -6088,9 +7194,9 @@ } }, "node_modules/damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==" }, "node_modules/dashdash": { "version": "1.14.1", @@ -6117,9 +7223,9 @@ } }, "node_modules/date-fns": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz", - "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.22.1.tgz", + "integrity": "sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==", "engines": { "node": ">=0.11" }, @@ -6153,9 +7259,9 @@ } }, "node_modules/decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.0.tgz", + "integrity": "sha512-MrQRs2gyD//7NeHi9TtsfClkf+cFAewDz+PZHR8ILKglLmBMyVX3ymQ+oeznE3tjrS7beTN+6JXb2C3JDHm7ug==" }, "node_modules/decode-uri-component": { "version": "0.2.0", @@ -6317,6 +7423,14 @@ "node": ">=4" } }, + "node_modules/default-gateway/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/default-gateway/node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -6492,9 +7606,9 @@ } }, "node_modules/detect-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", - "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "node_modules/detect-port-alt": { "version": "1.1.6", @@ -6571,9 +7685,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "node_modules/dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "dependencies": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -6607,12 +7721,12 @@ } }, "node_modules/dom-serializer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", - "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "dependencies": { "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", + "domhandler": "^4.2.0", "entities": "^2.0.0" }, "funding": { @@ -6629,9 +7743,9 @@ } }, "node_modules/domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "funding": [ { "type": "github", @@ -6659,11 +7773,11 @@ } }, "node_modules/domhandler": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz", - "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "dependencies": { - "domelementtype": "^2.1.0" + "domelementtype": "^2.2.0" }, "engines": { "node": ">= 4" @@ -6673,13 +7787,13 @@ } }, "node_modules/domutils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.0.tgz", - "integrity": "sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", "dependencies": { "dom-serializer": "^1.0.1", - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0" + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { "url": "https://github.com/fb55/domutils?sponsor=1" @@ -6766,9 +7880,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.693", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", - "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==" + "version": "1.3.755", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.755.tgz", + "integrity": "sha512-BJ1s/kuUuOeo1bF/EM2E4yqW9te0Hpof3wgwBx40AWJE18zsD1Tqo0kr7ijnOc+lRsrlrqKPauJAHqaxOItoUA==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -6830,9 +7944,9 @@ } }, "node_modules/engine.io-client": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.1.tgz", - "integrity": "sha512-oVu9kBkGbcggulyVF0kz6BV3ganqUeqXvD79WOFKa+11oK692w1NyFkuEj4xrkFRpZhn92QOqTk4RQq5LiBXbQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", "dependencies": { "component-emitter": "~1.3.0", "component-inherit": "0.0.3", @@ -6843,7 +7957,7 @@ "parseqs": "0.0.6", "parseuri": "0.0.6", "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.5.4", + "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" } }, @@ -6860,6 +7974,26 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/engine.io-parser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", @@ -6909,13 +8043,21 @@ } }, "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, "node_modules/enzyme": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", @@ -6949,100 +8091,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/enzyme-adapter-react-16": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz", - "integrity": "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==", - "dev": true, - "dependencies": { - "enzyme-adapter-utils": "^1.14.0", - "enzyme-shallow-equal": "^1.0.4", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.values": "^1.1.2", - "prop-types": "^15.7.2", - "react-is": "^16.13.1", - "react-test-renderer": "^16.0.0-0", - "semver": "^5.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "peerDependencies": { - "enzyme": "^3.0.0", - "react": "^16.0.0-0", - "react-dom": "^16.0.0-0" - } - }, - "node_modules/enzyme-adapter-react-16/node_modules/airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dev": true, - "dependencies": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^16.0.0-alpha" - } - }, - "node_modules/enzyme-adapter-react-16/node_modules/enzyme-adapter-utils": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz", - "integrity": "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==", - "dev": true, - "dependencies": { - "airbnb-prop-types": "^2.16.0", - "function.prototype.name": "^1.1.3", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.fromentries": "^2.0.3", - "prop-types": "^15.7.2", - "semver": "^5.7.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - }, - "peerDependencies": { - "react": "0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0" - } - }, - "node_modules/enzyme-adapter-react-16/node_modules/react-test-renderer": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", - "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "react-is": "^16.8.6", - "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.14.0" - } - }, - "node_modules/enzyme-adapter-react-16/node_modules/scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, "node_modules/enzyme-matchers": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/enzyme-matchers/-/enzyme-matchers-7.1.2.tgz", @@ -7070,13 +8118,13 @@ } }, "node_modules/enzyme-to-json": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.1.tgz", - "integrity": "sha512-15tXuONeq5ORoZjV/bUo2gbtZrN2IH+Z6DvL35QmZyKHgbY1ahn6wcnLd9Xv9OjiwbAXiiP8MRZwbZrCv1wYNg==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz", + "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==", "dev": true, "dependencies": { "@types/cheerio": "^0.22.22", - "lodash": "^4.17.15", + "lodash": "^4.17.21", "react-is": "^16.12.0" }, "engines": { @@ -7086,6 +8134,12 @@ "enzyme": "^3.4.0" } }, + "node_modules/enzyme-to-json/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -7114,9 +8168,9 @@ } }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -7126,14 +8180,14 @@ "has-symbols": "^1.0.2", "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7142,6 +8196,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -7201,11 +8261,14 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { @@ -7285,27 +8348,29 @@ } }, "node_modules/eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", + "@eslint/eslintrc": "^0.4.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -7314,7 +8379,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -7323,7 +8388,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -7377,9 +8442,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -7443,11 +8508,11 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", + "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", "dependencies": { - "debug": "^2.6.9", + "debug": "^3.2.7", "pkg-dir": "^2.0.0" }, "engines": { @@ -7455,22 +8520,17 @@ } }, "node_modules/eslint-module-utils/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "node_modules/eslint-module-utils/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/eslint-plugin-flowtype": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.4.0.tgz", - "integrity": "sha512-O0s0iTT5UxYuoOpHMLSIO2qZMyvrb9shhk1EM5INNGtJ2CffrfUmsnh6TVsnoT41fkXIEndP630WNovhoO87xQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.7.2.tgz", + "integrity": "sha512-7Oq/N0+3nijBnYWQYzz/Mp/7ZCpwxYvClRyW/PLAmimY9uLCBvoXsNsERcJdkKceyOjgRbFhhxs058KTrne9Mg==", "dependencies": { "lodash": "^4.17.15", "string-natural-compare": "^3.0.1" @@ -7483,22 +8543,24 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "version": "2.23.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", + "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", "dependencies": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", "debug": "^2.6.9", - "doctrine": "1.5.0", + "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", + "eslint-module-utils": "^2.6.1", + "find-up": "^2.0.0", "has": "^1.0.3", + "is-core-module": "^2.4.0", "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", + "object.values": "^1.1.3", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", "tsconfig-paths": "^3.9.0" }, "engines": { @@ -7517,31 +8579,25 @@ } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/eslint-plugin-jest": { - "version": "24.3.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.3.2.tgz", - "integrity": "sha512-cicWDr+RvTAOKS3Q/k03+Z3odt3VCiWamNUHWd6QWbVQWcYJyYgUTu8x0mx9GfeDEimawU5kQC+nQ3MFxIM6bw==", + "version": "24.3.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz", + "integrity": "sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg==", "dependencies": { "@typescript-eslint/experimental-utils": "^4.0.1" }, @@ -7583,9 +8639,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" @@ -7604,21 +8660,22 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", - "integrity": "sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", + "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", "dependencies": { - "array-includes": "^3.1.1", - "array.prototype.flatmap": "^1.2.3", + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", "doctrine": "^2.1.0", "has": "^1.0.3", "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "object.entries": "^1.1.2", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.4", "prop-types": "^15.7.2", - "resolve": "^1.18.1", - "string.prototype.matchall": "^4.0.2" + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.5" }, "engines": { "node": ">=4" @@ -7649,10 +8706,22 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-plugin-testing-library": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz", - "integrity": "sha512-nQIFe2muIFv2oR2zIuXE4vTbcFNx8hZKRzgHZqJg8rfopIWwoTwtlbCCNELT/jXzVe1uZF68ALGYoDXjLczKiQ==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz", + "integrity": "sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==", "dependencies": { "@typescript-eslint/experimental-utils": "^3.10.1" }, @@ -7748,20 +8817,6 @@ "node": ">=4" } }, - "node_modules/eslint-plugin-testing-library/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -7797,22 +8852,23 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "engines": { "node": ">=10" } }, "node_modules/eslint-webpack-plugin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz", - "integrity": "sha512-ndD9chZ/kaGnjjx7taRg7c6FK/YKb29SSYzaLtPBIYLYJQmZtuKqtQbAvTS2ymiMQT6X0VW9vZIHK0KLstv93Q==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz", + "integrity": "sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw==", "dependencies": { "@types/eslint": "^7.2.6", "arrify": "^2.0.1", "jest-worker": "^26.6.2", "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", "schema-utils": "^3.0.0" }, "engines": { @@ -7844,20 +8900,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -7992,9 +9034,9 @@ } }, "node_modules/exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==" }, "node_modules/execa": { "version": "4.1.0", @@ -8177,6 +9219,37 @@ "node": ">= 10.14.2" } }, + "node_modules/expect/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/expect/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/expect/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -8380,14 +9453,14 @@ } }, "node_modules/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dependencies": { "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=0.8.0" } }, "node_modules/fb-watchman": { @@ -8552,16 +9625,18 @@ "node": ">=6" } }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "p-try": "^2.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/find-cache-dir/node_modules/p-locate": { @@ -8575,12 +9650,12 @@ "node": ">=6" } }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/find-cache-dir/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/find-cache-dir/node_modules/pkg-dir": { @@ -8595,15 +9670,14 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/flat-cache": { @@ -8638,9 +9712,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", "funding": [ { "type": "individual", @@ -8857,6 +9931,14 @@ "node": ">=0.10.0" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -8881,22 +9963,22 @@ } }, "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" } }, "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { "node": ">= 0.6" } @@ -8983,31 +10065,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -9180,9 +10237,9 @@ } }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9245,9 +10302,9 @@ } }, "node_modules/globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dependencies": { "type-fest": "^0.20.2" }, @@ -9259,9 +10316,9 @@ } }, "node_modules/globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -9309,11 +10366,6 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "optional": true }, - "node_modules/gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, "node_modules/gzip-size": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", @@ -9353,9 +10405,9 @@ } }, "node_modules/harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" }, "node_modules/has": { "version": "1.0.3", @@ -9598,6 +10650,11 @@ "react-is": "^16.7.0" } }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -9607,9 +10664,9 @@ } }, "node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "node_modules/hpack.js": { "version": "2.1.6", @@ -9632,18 +10689,13 @@ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" }, - "node_modules/html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, "node_modules/html-element-map": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.0.tgz", - "integrity": "sha512-AqCt/m9YaiMwaaAyOPdq4Ga0cM+jdDWWGueUMkdROZcTeClaGpN0AQeyGchZhTegQoABmc6+IqH7oCR/8vhQYg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", + "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", "dev": true, "dependencies": { - "array-filter": "^1.0.0", + "array.prototype.filter": "^1.0.0", "call-bind": "^1.0.2" }, "funding": { @@ -9691,54 +10743,12 @@ "node": ">=6" } }, - "node_modules/html-parse-stringify2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz", - "integrity": "sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o=", + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", "dependencies": { - "void-elements": "^2.0.1" - } - }, - "node_modules/html-to-react": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/html-to-react/-/html-to-react-1.4.5.tgz", - "integrity": "sha512-KONZUDFPg5OodWaQu2ymfkDmU0JA7zB1iPfvyHehTmMUZnk0DS7/TyCMTzsLH6b4BvxX15g88qZCXFhJWktsmA==", - "dependencies": { - "domhandler": "^3.3.0", - "htmlparser2": "^5.0", - "lodash.camelcase": "^4.3.0", - "ramda": "^0.27.1" - }, - "peerDependencies": { - "react": "^16.0 || ^17.0" - } - }, - "node_modules/html-to-react/node_modules/domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dependencies": { - "domelementtype": "^2.0.1" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/html-to-react/node_modules/htmlparser2": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", - "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.3.0", - "domutils": "^2.4.2", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/fb55/htmlparser2?sponsor=1" + "void-elements": "3.1.0" } }, "node_modules/html-webpack-plugin": { @@ -9788,10 +10798,9 @@ } }, "node_modules/htmlparser2": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.1.tgz", - "integrity": "sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -9802,7 +10811,7 @@ "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", - "domutils": "^2.4.4", + "domutils": "^2.5.2", "entities": "^2.0.0" } }, @@ -9831,6 +10840,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -9844,6 +10858,19 @@ "node": ">=8.0.0" } }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/http-proxy-middleware": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", @@ -10003,6 +11030,18 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", @@ -10012,19 +11051,19 @@ } }, "node_modules/i18next": { - "version": "19.9.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz", - "integrity": "sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.3.2.tgz", + "integrity": "sha512-e8CML2R9Ng2sSQOM80wb/PrM2j8mDm84o/T4Amzn9ArVyNX5/ENWxxAXkRpZdTQNDaxKImF93Wep4mAoozFrKw==", "dependencies": { "@babel/runtime": "^7.12.0" } }, "node_modules/i18next-browser-languagedetector": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.0.1.tgz", - "integrity": "sha512-3H+OsNQn3FciomUU0d4zPFHsvJv4X66lBelXk9hnIDYDsveIgT7dWZ3/VvcSlpKk9lvCK770blRZ/CwHMXZqWw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.2.tgz", + "integrity": "sha512-YDzIGHhMRvr7M+c8B3EQUKyiMBhfqox4o1qkFvt4QXuu5V2cxf74+NCr+VEkUuU0y+RwcupA238eeolW1Yn80g==", "dependencies": { - "@babel/runtime": "^7.5.5" + "@babel/runtime": "^7.14.6" } }, "node_modules/iconv-lite": { @@ -10116,11 +11155,6 @@ "ramda": "^0.26.1" } }, - "node_modules/immutable-ops/node_modules/ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" - }, "node_modules/import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", @@ -10181,6 +11215,70 @@ "node": ">=8" } }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/import-local/node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -10200,17 +11298,6 @@ "node": ">=0.8.19" } }, - "node_modules/in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", - "bin": { - "in-install": "in-install.js", - "in-publish": "in-publish.js", - "not-in-install": "not-in-install.js", - "not-in-publish": "not-in-publish.js" - } - }, "node_modules/indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -10261,6 +11348,11 @@ "resolved": "https://registry.npmjs.org/initials/-/initials-3.1.1.tgz", "integrity": "sha512-imRkwIpCUer+w9NB41dTENhJrTQTGOJthRa3URF0O9+L7MOMBPmN8njwkiX4u8YnzxbjEp4Is0ohiW6NSA8ZCw==" }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, "node_modules/internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", @@ -10376,9 +11468,9 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "node_modules/is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10396,11 +11488,11 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", "dependencies": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10443,11 +11535,13 @@ } }, "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "optional": true, + "peer": true, "dependencies": { - "ci-info": "^2.0.0" + "ci-info": "^3.1.1" }, "bin": { "is-ci": "bin.js" @@ -10467,9 +11561,9 @@ } }, "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dependencies": { "has": "^1.0.3" }, @@ -10489,9 +11583,9 @@ } }, "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "engines": { "node": ">= 0.4" }, @@ -10530,9 +11624,9 @@ } }, "node_modules/is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "bin": { "is-docker": "cli.js" }, @@ -10637,9 +11731,9 @@ } }, "node_modules/is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", "engines": { "node": ">= 0.4" }, @@ -10705,17 +11799,17 @@ } }, "node_modules/is-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10754,9 +11848,9 @@ } }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", "engines": { "node": ">= 0.4" }, @@ -10770,23 +11864,12 @@ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", "dev": true }, - "node_modules/is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dependencies": { - "html-comment-regex": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dependencies": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10890,6 +11973,28 @@ "node": ">=8" } }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", @@ -10916,14 +12021,13 @@ } }, "node_modules/jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "peer": true, + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", + "integrity": "sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==", "dependencies": { - "@jest/core": "^26.6.3", + "@jest/core": "^26.6.0", "import-local": "^3.0.2", - "jest-cli": "^26.6.3" + "jest-cli": "^26.6.0" }, "bin": { "jest": "bin/jest.js" @@ -10945,37 +12049,29 @@ "node": ">= 10.14.2" } }, - "node_modules/jest-circus": { - "version": "26.6.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz", - "integrity": "sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==", + "node_modules/jest-changed-files/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.0", - "@jest/test-result": "^26.6.0", - "@jest/types": "^26.6.0", - "@types/babel__traverse": "^7.0.4", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^26.6.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.0", - "jest-matcher-utils": "^26.6.0", - "jest-message-util": "^26.6.0", - "jest-runner": "^26.6.0", - "jest-runtime": "^26.6.0", - "jest-snapshot": "^26.6.0", - "jest-util": "^26.6.0", - "pretty-format": "^26.6.0", - "stack-utils": "^2.0.2", - "throat": "^5.0.0" + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { "node": ">= 10.14.2" } }, + "node_modules/jest-changed-files/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/jest-cli": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", @@ -11002,6 +12098,110 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-cli/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-cli/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-cli/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-cli/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-cli/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-cli/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-cli/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-cli/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/jest-config": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", @@ -11038,6 +12238,238 @@ } } }, + "node_modules/jest-config/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-config/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/jest-config/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-config/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-diff": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", @@ -11052,6 +12484,51 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-diff/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-diff/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-diff/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/jest-docblock": { "version": "26.0.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", @@ -11078,6 +12555,83 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-each/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-each/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-each/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/jest-environment-enzyme": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/jest-environment-enzyme/-/jest-environment-enzyme-7.1.2.tgz", @@ -11356,6 +12910,12 @@ "node": ">=4" } }, + "node_modules/jest-environment-enzyme/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "node_modules/jest-environment-enzyme/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -11530,6 +13090,18 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/jest-environment-enzyme/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, "node_modules/jest-environment-enzyme/node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -11776,21 +13348,6 @@ "node": ">= 0.8.0" } }, - "node_modules/jest-environment-enzyme/node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-environment-enzyme/node_modules/locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -11857,6 +13414,21 @@ "node": ">= 0.8.0" } }, + "node_modules/jest-environment-enzyme/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/jest-environment-enzyme/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -11869,17 +13441,13 @@ "node": ">=6" } }, - "node_modules/jest-environment-enzyme/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/jest-environment-enzyme/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/jest-environment-enzyme/node_modules/parse5": { @@ -11888,36 +13456,6 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "node_modules/jest-environment-enzyme/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-environment-enzyme/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jest-environment-enzyme/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-environment-enzyme/node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -11927,20 +13465,6 @@ "node": ">= 0.8.0" } }, - "node_modules/jest-environment-enzyme/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-environment-enzyme/node_modules/read-pkg-up": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", @@ -11973,9 +13497,9 @@ } }, "node_modules/jest-environment-enzyme/node_modules/stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", "dev": true, "dependencies": { "escape-string-regexp": "^2.0.0" @@ -11993,15 +13517,6 @@ "node": ">=8" } }, - "node_modules/jest-environment-enzyme/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/jest-environment-enzyme/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -12105,9 +13620,9 @@ } }, "node_modules/jest-environment-enzyme/node_modules/ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "dev": true, "dependencies": { "async-limiter": "~1.0.0" @@ -12130,6 +13645,61 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-jsdom/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-environment-jsdom/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/jest-environment-node": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", @@ -12146,6 +13716,61 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-node/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-environment-node/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/jest-enzyme": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/jest-enzyme/-/jest-enzyme-7.1.2.tgz", @@ -12162,11 +13787,13 @@ } }, "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "version": "27.0.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.1.tgz", + "integrity": "sha512-9Tggo9zZbu0sHKebiAijyt1NM77Z0uO4tuWOxUCujAiSeXv30Vb5D4xVF4UR4YWNapcftj+PbByU54lKD7/xMg==", + "optional": true, + "peer": true, "engines": { - "node": ">= 10.14.2" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-haste-map": { @@ -12195,6 +13822,61 @@ "fsevents": "^2.1.2" } }, + "node_modules/jest-haste-map/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-haste-map/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-haste-map/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-haste-map/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-haste-map/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/jest-jasmine2": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", @@ -12223,6 +13905,75 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-jasmine2/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-jasmine2/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-jasmine2/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-jasmine2/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/jest-leak-detector": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", @@ -12235,6 +13986,51 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-leak-detector/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-leak-detector/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-leak-detector/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/jest-matcher-utils": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", @@ -12249,6 +14045,51 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-matcher-utils/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/jest-message-util": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", @@ -12268,6 +14109,43 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/jest-mock": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", @@ -12280,6 +14158,29 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/jest-pnp-resolver": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", @@ -12305,21 +14206,24 @@ } }, "node_modules/jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "version": "27.0.5", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.5.tgz", + "integrity": "sha512-Md65pngRh8cRuWVdWznXBB5eDt391OJpdBaJMxfjfuXCvOhM3qQBtLMCMTykhuUKiBMmy5BhqCW7AVOKmPrW+Q==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.2", "chalk": "^4.0.0", + "escalade": "^3.1.1", "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", + "jest-util": "^27.0.2", + "jest-validate": "^27.0.2", + "resolve": "^1.20.0", "slash": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-resolve-dependencies": { @@ -12335,50 +14239,27 @@ "node": ">= 10.14.2" } }, - "node_modules/jest-resolve/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/jest-resolve/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" + "@types/yargs-parser": "*" } }, "node_modules/jest-runner": { @@ -12411,6 +14292,189 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runner/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-runner/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-runner/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runner/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runner/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runtime": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", @@ -12451,6 +14515,238 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-runtime/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-runtime/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-runtime/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/jest-runtime/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, "node_modules/jest-serializer": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", @@ -12489,21 +14785,84 @@ "node": ">= 10.14.2" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/jest-util": { + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-snapshot/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-snapshot/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot/node_modules/jest-util": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", @@ -12519,26 +14878,160 @@ "node": ">= 10.14.2" } }, - "node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "node_modules/jest-snapshot/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-snapshot/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-snapshot/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/jest-snapshot/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-snapshot/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.2.tgz", + "integrity": "sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.0.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate": { + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.2.tgz", + "integrity": "sha512-UgBF6/oVu1ofd1XbaSotXKihi8nZhg0Prm8twQ9uCuAfo59vlxCXMPI/RKmrZEVgi3Nd9dS0I8A0wzWU48pOvg==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^27.0.2", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.0.1", + "leven": "^3.1.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -12583,6 +15076,61 @@ "node": ">= 10.14.2" } }, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watcher/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/jest-watcher/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/jest-watcher/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/jest-worker": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", @@ -12624,12 +15172,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "node_modules/jsdom": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.1.tgz", - "integrity": "sha512-pF73EOsJgwZekbDHEY5VO/yKXUkab/DuvrQB/ANVizbr6UAHJsDdHXuotZYwkJSGQl1JM+ivXaqY+XBDDL4TiA==", + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", + "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", "dependencies": { "abab": "^2.0.5", - "acorn": "^8.0.5", + "acorn": "^8.2.4", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", "cssstyle": "^2.3.0", @@ -12637,12 +15185,13 @@ "decimal.js": "^10.2.1", "domexception": "^2.0.1", "escodegen": "^2.0.0", + "form-data": "^3.0.0", "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", "parse5": "6.0.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.9", "saxes": "^5.0.1", "symbol-tree": "^3.2.4", "tough-cookie": "^4.0.0", @@ -12651,8 +15200,8 @@ "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.4.4", + "whatwg-url": "^8.5.0", + "ws": "^7.4.5", "xml-name-validator": "^3.0.0" }, "engines": { @@ -12668,9 +15217,9 @@ } }, "node_modules/jsdom/node_modules/acorn": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", - "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.0.tgz", + "integrity": "sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==", "bin": { "acorn": "bin/acorn" }, @@ -12864,13 +15413,13 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dependencies": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" }, "engines": { @@ -12878,22 +15427,23 @@ } }, "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dependencies": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/load-json-file/node_modules/strip-bom": { @@ -12926,14 +15476,15 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/lodash": { @@ -12974,10 +15525,10 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -13041,10 +15592,16 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true }, "node_modules/lodash.template": { "version": "4.5.0", @@ -13063,6 +15620,11 @@ "lodash._reinterpolate": "^3.0.0" } }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" + }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -13140,25 +15702,23 @@ } }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dependencies": { - "semver": "^6.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "bin": { - "semver": "bin/semver.js" + "semver": "bin/semver" } }, "node_modules/makeerror": { @@ -13218,12 +15778,16 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/mdast-add-list-metadata": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz", - "integrity": "sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==", + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", "dependencies": { - "unist-util-visit-parents": "1.1.2" + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-find-and-replace": { @@ -13240,30 +15804,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", @@ -13347,6 +15887,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-to-hast": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", + "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-to-markdown": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", @@ -13378,6 +15937,11 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -13387,9 +15951,9 @@ } }, "node_modules/memoize-one": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", - "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, "node_modules/memory-fs": { "version": "0.4.1", @@ -13594,9 +16158,9 @@ } }, "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.6.tgz", - "integrity": "sha512-nHbR1NUOVhmlZNsnhE5B7WJzL7Xd8lc888z4AF27IpHMtO3NstclZmbrMI+AcdTPpO1wuGVwlK1Cnq+n8Sxlrw==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", "dependencies": { "micromark": "~2.11.3" }, @@ -13651,15 +16215,15 @@ } }, "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dependencies": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, "node_modules/miller-rabin": { @@ -13691,19 +16255,19 @@ } }, "node_modules/mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", "dependencies": { - "mime-db": "1.46.0" + "mime-db": "1.48.0" }, "engines": { "node": ">= 0.6" @@ -13971,9 +16535,9 @@ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" }, "node_modules/nanoid": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", - "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -14084,58 +16648,26 @@ } }, "node_modules/node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", "dependencies": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/node-gyp/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/node-gyp/node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/node-gyp/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "node": ">= 10.12.0" } }, "node_modules/node-int64": { @@ -14200,44 +16732,28 @@ "which": "^2.0.2" } }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==" }, "node_modules/node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-6.0.0.tgz", + "integrity": "sha512-GDzDmNgWNc9GNzTcSLTi6DU6mzSPupVJoStIi7cF3GjwSE9q1cVakbvAAVSt59vzUjV9JJoSZFKoo9krbjKd2g==", "hasInstallScript": true, "dependencies": { "async-foreach": "^0.1.3", "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", + "cross-spawn": "^7.0.3", "gaze": "^1.0.0", "get-stdin": "^4.0.1", "glob": "^7.0.3", - "in-publish": "^2.0.0", "lodash": "^4.17.15", "meow": "^3.7.0", "mkdirp": "^0.5.1", "nan": "^2.13.2", - "node-gyp": "^3.8.0", + "node-gyp": "^7.1.0", "npmlog": "^4.0.0", "request": "^2.88.0", "sass-graph": "2.2.5", @@ -14248,7 +16764,7 @@ "node-sass": "bin/node-sass" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, "node_modules/node-sass/node_modules/ansi-regex": { @@ -14282,15 +16798,6 @@ "node": ">=0.10.0" } }, - "node_modules/node-sass/node_modules/cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, "node_modules/node-sass/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -14299,15 +16806,6 @@ "node": ">=0.8.0" } }, - "node_modules/node-sass/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "node_modules/node-sass/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -14327,31 +16825,18 @@ "node": ">=0.8.0" } }, - "node_modules/node-sass/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/node-sass/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dependencies": { "abbrev": "1" }, "bin": { "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" } }, "node_modules/normalize-package-data": { @@ -14365,6 +16850,14 @@ "validate-npm-package-license": "^3.0.1" } }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14421,7 +16914,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", - "dev": true, "dependencies": { "boolbase": "^1.0.0" }, @@ -14547,9 +17039,9 @@ } }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14606,14 +17098,13 @@ } }, "node_modules/object.entries": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", + "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", "dependencies": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" + "es-abstract": "^1.18.2" }, "engines": { "node": ">= 0.4" @@ -14664,14 +17155,13 @@ } }, "node_modules/object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.18.2" }, "engines": { "node": ">= 0.4" @@ -14801,31 +17291,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "node_modules/p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -14846,28 +17311,25 @@ } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dependencies": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/p-map": { @@ -14896,11 +17358,11 @@ } }, "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "engines": { - "node": ">=6" + "node": ">=4" } }, "node_modules/pako": { @@ -15044,11 +17506,11 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/path-is-absolute": { @@ -15073,9 +17535,9 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { "version": "1.8.0", @@ -15103,9 +17565,9 @@ } }, "node_modules/pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -15123,9 +17585,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "engines": { "node": ">=8.6" }, @@ -15182,116 +17644,13 @@ "node": ">=4" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dependencies": { - "find-up": "^3.0.0" + "find-up": "^2.1.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "engines": { "node": ">=4" } @@ -15313,16 +17672,6 @@ "node": ">=6" } }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -15353,9 +17702,9 @@ } }, "node_modules/postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dependencies": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -15726,11 +18075,10 @@ } }, "node_modules/postcss-initial": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", - "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", "dependencies": { - "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, @@ -16440,13 +18788,13 @@ } }, "node_modules/postcss-safe-parser/node_modules/postcss": { - "version": "8.2.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz", - "integrity": "sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", "dependencies": { "colorette": "^1.2.2", - "nanoid": "^3.1.20", - "source-map": "^0.6.1" + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -16475,13 +18823,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "dependencies": { "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", "util-deprecate": "^1.0.2" }, "engines": { @@ -16489,11 +18835,10 @@ } }, "node_modules/postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "dependencies": { - "is-svg": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" @@ -16630,9 +18975,9 @@ } }, "node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -16674,23 +19019,33 @@ } }, "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.2.tgz", + "integrity": "sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.2", "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", + "ansi-styles": "^5.0.0", "react-is": "^17.0.1" }, "engines": { - "node": ">= 10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, "node_modules/process": { "version": "0.11.10", @@ -16748,23 +19103,29 @@ "react-is": "^16.8.1" } }, - "node_modules/prop-types-exact": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", - "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", - "dev": true, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", "dependencies": { - "has": "^1.0.3", - "object.assign": "^4.1.0", - "reflect.ownkeys": "^0.2.0" + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" }, "engines": { @@ -16776,11 +19137,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -16891,9 +19247,9 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "node_modules/queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -16918,9 +19274,9 @@ } }, "node_modules/raf-schd": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", - "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" }, "node_modules/railroad-diagrams": { "version": "1.0.0", @@ -16929,9 +19285,9 @@ "dev": true }, "node_modules/ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==" + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" }, "node_modules/randexp": { "version": "0.4.6", @@ -17002,9 +19358,9 @@ } }, "node_modules/react": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", - "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -17030,33 +19386,34 @@ } }, "node_modules/react-beautiful-dnd": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz", - "integrity": "sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz", + "integrity": "sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA==", "dependencies": { - "@babel/runtime": "^7.8.4", + "@babel/runtime": "^7.9.2", "css-box-model": "^1.2.0", "memoize-one": "^5.1.1", "raf-schd": "^4.0.2", - "react-redux": "^7.1.1", + "react-redux": "^7.2.0", "redux": "^4.0.4", "use-memo-one": "^1.1.1" }, "peerDependencies": { - "react": "^16.8.5", - "react-dom": "^16.8.5" + "react": "^16.8.5 || ^17.0.0", + "react-dom": "^16.8.5 || ^17.0.0" } }, "node_modules/react-datepicker": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-3.6.0.tgz", - "integrity": "sha512-QCCtC1Y5kXZSbULbP33P2p0yTU+0Det7eBFABVM2k6AqdIvyBHVkO/hlq2WDeHlPtaf+DEniCIYjrv2BFdUMHw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.1.1.tgz", + "integrity": "sha512-vtZIA7MbUrffRw1CHiyOGtmTO/tTdZGr5BYaiRucHMTb6rCqA8TkaQhzX6tTwMwP8vV38Khv4UWohrJbiX1rMw==", "dependencies": { + "@popperjs/core": "^2.9.2", "classnames": "^2.2.6", "date-fns": "^2.0.1", "prop-types": "^15.7.2", "react-onclickoutside": "^6.10.0", - "react-popper": "^1.3.8" + "react-popper": "^2.2.5" }, "peerDependencies": { "react": "^16.9.0 || ^17", @@ -17171,6 +19528,26 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/react-dev-utils/node_modules/globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -17206,6 +19583,111 @@ "node": ">= 4" } }, + "node_modules/react-dev-utils/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-dev-utils/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/react-dev-utils/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/react-dev-utils/node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, "node_modules/react-dev-utils/node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -17218,22 +19700,22 @@ } }, "node_modules/react-dom": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", - "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "scheduler": "^0.20.1" + "scheduler": "^0.20.2" }, "peerDependencies": { - "react": "17.0.1" + "react": "17.0.2" } }, "node_modules/react-dropzone": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.3.1.tgz", - "integrity": "sha512-gPyw524T6dYZW81aQoBGmBG90cVNs+YJreh3HaN45Yw09Bm6m4aA6IF9ergHZQAWGeDSJ+DUhDKKAAaDdTj3RQ==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.3.2.tgz", + "integrity": "sha512-Z0l/YHcrNK1r85o6RT77Z5XgTARmlZZGfEKBl3tqTXL9fZNQDuIdRx/J0QjvR60X+yYu26dnHeaG2pWU+1HHvw==", "dependencies": { "attr-accept": "^2.2.1", "file-selector": "^0.2.2", @@ -17257,12 +19739,12 @@ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" }, "node_modules/react-i18next": { - "version": "11.8.10", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.8.10.tgz", - "integrity": "sha512-ckjNzMjYkmx4fQ8zzuaYTosYN3Co6ebrgCQJzuZCcGFYSR/kGHZzSu0xw9VhtnbjJVKx0gEMV3DLRvzi4xDZUw==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.11.0.tgz", + "integrity": "sha512-p1jHmoyJgDFQmyubUEjrx6kCsr1izW/C8i9pOiJy+9lJqLYwNA8sElVplm0VAnop3kH68edT0/g3wB3UvAcRCQ==", "dependencies": { - "@babel/runtime": "^7.13.6", - "html-parse-stringify2": "^2.0.1" + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" }, "peerDependencies": { "i18next": ">= 19.0.0", @@ -17283,25 +19765,28 @@ } }, "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-markdown": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-5.0.3.tgz", - "integrity": "sha512-jDWOc1AvWn0WahpjW6NK64mtx6cwjM4iSsLHJPNBqoAgGOVoIdJMqaKX4++plhOtdd4JksdqzlDibgPx6B/M2w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-6.0.2.tgz", + "integrity": "sha512-Et2AjXAsbmPP1nLQQRqmVgcqzfwcz8uQJ8VAdADs8Nk/aaUA0YeU9RDLuCtD+GwajCnm/+Iiu2KPmXzmD/M3vA==", "dependencies": { - "@types/mdast": "^3.0.3", + "@types/hast": "^2.0.0", "@types/unist": "^2.0.3", - "html-to-react": "^1.3.4", - "mdast-add-list-metadata": "1.0.1", + "comma-separated-tokens": "^1.0.0", "prop-types": "^15.7.2", - "react-is": "^16.8.6", + "property-information": "^5.0.0", + "react-is": "^17.0.0", "remark-parse": "^9.0.0", + "remark-rehype": "^8.0.0", + "space-separated-tokens": "^1.1.0", + "style-to-object": "^0.3.0", "unified": "^9.0.0", "unist-util-visit": "^2.0.0", - "xtend": "^4.0.1" + "vfile": "^4.0.0" }, "funding": { "type": "opencollective", @@ -17313,9 +19798,9 @@ } }, "node_modules/react-onclickoutside": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", - "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.11.2.tgz", + "integrity": "sha512-640486eSwU/t5iD6yeTlefma8dI3bxPXD93hM9JGKyYITAd0P1JFkkcDeyHZRqNpY/fv1YW0Fad9BXr44OY8wQ==", "funding": { "type": "individual", "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" @@ -17326,36 +19811,32 @@ } }, "node_modules/react-popper": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", - "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", "dependencies": { - "@babel/runtime": "^7.1.2", - "@hypnosphi/create-react-context": "^0.3.1", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", + "react-fast-compare": "^3.0.1", "warning": "^4.0.2" }, "peerDependencies": { - "react": "0.14.x || ^15.0.0 || ^16.0.0 || ^17.0.0" + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17" } }, "node_modules/react-redux": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.2.tgz", - "integrity": "sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.4.tgz", + "integrity": "sha512-hOQ5eOSkEJEXdpIKbnRyl04LhaWabkDPV+Ix97wqQX3T3d2NQ8DUblNXXtNMavc7DpswyQM6xfaN4HQDKNY2JA==", "dependencies": { "@babel/runtime": "^7.12.1", + "@types/react-redux": "^7.1.16", "hoist-non-react-statics": "^3.3.2", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", "react-is": "^16.13.1" }, "peerDependencies": { - "react": "^16.8.3 || ^17", - "redux": "^2.0.0 || ^3.0.0 || ^4.0.0-0" + "react": "^16.8.3 || ^17" }, "peerDependenciesMeta": { "react-dom": { @@ -17366,6 +19847,11 @@ } } }, + "node_modules/react-redux/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/react-refresh": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", @@ -17411,10 +19897,15 @@ "react": ">=15" } }, + "node_modules/react-router/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, "node_modules/react-scripts": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.2.tgz", - "integrity": "sha512-okaWNaGDGtnXyM2CLMUl8gYZnAubgxEulC40FYjsxn5bbj+G/mDINdy24wHz4Vypb/LWtIe8rdBU78k/74v8Mw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.3.tgz", + "integrity": "sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A==", "dependencies": { "@babel/core": "7.12.3", "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", @@ -17441,7 +19932,7 @@ "eslint-plugin-react": "^7.21.5", "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-testing-library": "^3.9.2", - "eslint-webpack-plugin": "^2.1.0", + "eslint-webpack-plugin": "^2.5.2", "file-loader": "6.1.1", "fs-extra": "^9.0.1", "html-webpack-plugin": "4.5.0", @@ -17460,7 +19951,7 @@ "postcss-safe-parser": "5.0.2", "prompts": "2.4.0", "react-app-polyfill": "^2.0.0", - "react-dev-utils": "^11.0.2", + "react-dev-utils": "^11.0.3", "react-refresh": "^0.8.3", "resolve": "1.18.1", "resolve-url-loader": "^3.1.2", @@ -17471,7 +19962,7 @@ "ts-pnp": "1.2.0", "url-loader": "4.1.1", "webpack": "4.44.2", - "webpack-dev-server": "3.11.0", + "webpack-dev-server": "3.11.1", "webpack-manifest-plugin": "2.2.0", "workbox-webpack-plugin": "5.1.4" }, @@ -17532,6 +20023,21 @@ "semver": "bin/semver" } }, + "node_modules/react-scripts/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "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" + }, + "engines": { + "node": ">= 10.14.2" + } + }, "node_modules/react-scripts/node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", @@ -17586,6 +20092,14 @@ "node": ">= 8" } }, + "node_modules/react-scripts/node_modules/@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, "node_modules/react-scripts/node_modules/camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", @@ -17597,17 +20111,60 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-scripts/node_modules/jest": { - "version": "26.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", - "integrity": "sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==", + "node_modules/react-scripts/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/react-scripts/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dependencies": { - "@jest/core": "^26.6.0", - "import-local": "^3.0.2", - "jest-cli": "^26.6.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" }, "bin": { - "jest": "bin/jest.js" + "is-ci": "bin.js" + } + }, + "node_modules/react-scripts/node_modules/jest-circus": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz", + "integrity": "sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==", + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.0", + "@jest/test-result": "^26.6.0", + "@jest/types": "^26.6.0", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.0", + "jest-matcher-utils": "^26.6.0", + "jest-message-util": "^26.6.0", + "jest-runner": "^26.6.0", + "jest-runtime": "^26.6.0", + "jest-snapshot": "^26.6.0", + "jest-util": "^26.6.0", + "pretty-format": "^26.6.0", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" }, "engines": { "node": ">= 10.14.2" @@ -17631,6 +20188,88 @@ "node": ">= 10.14.2" } }, + "node_modules/react-scripts/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/react-scripts/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-scripts/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/react-scripts/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/react-scripts/node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -17735,30 +20374,24 @@ } }, "node_modules/react-test-renderer": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.1.tgz", - "integrity": "sha512-/dRae3mj6aObwkjCcxZPlxDFh73XZLgvwhhyON2haZGUEhiaY5EjfAdw+d/rQmlcFwdTpMXCSGVk374QbCTlrA==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", "dev": true, "dependencies": { "object-assign": "^4.1.1", - "react-is": "^17.0.1", + "react-is": "^17.0.2", "react-shallow-renderer": "^16.13.1", - "scheduler": "^0.20.1" + "scheduler": "^0.20.2" }, "peerDependencies": { - "react": "17.0.1" + "react": "17.0.2" } }, - "node_modules/react-test-renderer/node_modules/react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", - "dev": true - }, "node_modules/react-textarea-autosize": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.2.tgz", - "integrity": "sha512-JrMWVgQSaExQByP3ggI1eA8zF4mF0+ddVuX7acUeK2V7bmrpjVOY72vmLz2IXFJSAXoY3D80nEzrn0GWajWK3Q==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", "dependencies": { "@babel/runtime": "^7.10.2", "use-composed-ref": "^1.0.0", @@ -17772,108 +20405,47 @@ } }, "node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dependencies": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dependencies": { "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "read-pkg": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, "node_modules/read-pkg/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dependencies": { - "pify": "^2.0.0" + "pify": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/read-pkg/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/readable-stream": { @@ -17896,9 +20468,9 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "optional": true, "dependencies": { "picomatch": "^2.2.1" @@ -17943,12 +20515,11 @@ } }, "node_modules/redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", - "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", + "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", "dependencies": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" + "@babel/runtime": "^7.9.2" } }, "node_modules/redux-logger": { @@ -17984,12 +20555,6 @@ "@redux-saga/core": "^1.1.3" } }, - "node_modules/reflect.ownkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", - "dev": true - }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -18052,9 +20617,9 @@ } }, "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "engines": { "node": ">=8" }, @@ -18084,9 +20649,9 @@ "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "node_modules/regjsparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "dependencies": { "jsesc": "~0.5.0" }, @@ -18135,21 +20700,33 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-rehype": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz", + "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==", + "dependencies": { + "mdast-util-to-hast": "^10.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "node_modules/renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "dependencies": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" } }, "node_modules/renderkid/node_modules/ansi-regex": { @@ -18160,108 +20737,6 @@ "node": ">=0.10.0" } }, - "node_modules/renderkid/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/renderkid/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/renderkid/node_modules/domhandler/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/renderkid/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/renderkid/node_modules/htmlparser2/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/renderkid/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/renderkid/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/renderkid/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -18274,9 +20749,9 @@ } }, "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "engines": { "node": ">=0.10.0" } @@ -18335,6 +20810,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, "dependencies": { "lodash": "^4.17.19" }, @@ -18350,6 +20826,7 @@ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "dev": true, "dependencies": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", @@ -18366,6 +20843,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -18374,6 +20852,19 @@ "node": ">=0.8" } }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/request/node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -18390,6 +20881,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { "uuid": "bin/uuid" } @@ -18476,9 +20968,9 @@ "deprecated": "https://github.com/lydell/resolve-url#deprecated" }, "node_modules/resolve-url-loader": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", - "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz", + "integrity": "sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==", "dependencies": { "adjust-sourcemap-loader": "3.0.0", "camelcase": "5.3.1", @@ -18486,7 +20978,7 @@ "convert-source-map": "1.7.0", "es6-iterator": "2.0.3", "loader-utils": "1.2.3", - "postcss": "7.0.21", + "postcss": "7.0.36", "rework": "1.0.1", "rework-visit": "1.0.0", "source-map": "0.6.1" @@ -18495,54 +20987,14 @@ "node": ">=6.0.0" } }, - "node_modules/resolve-url-loader/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "safe-buffer": "~5.1.1" } }, - "node_modules/resolve-url-loader/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url-loader/node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url-loader/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/resolve-url-loader/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, "node_modules/resolve-url-loader/node_modules/emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -18551,22 +21003,6 @@ "node": ">= 0.10" } }, - "node_modules/resolve-url-loader/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/resolve-url-loader/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, "node_modules/resolve-url-loader/node_modules/json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -18591,30 +21027,6 @@ "node": ">=4.0.0" } }, - "node_modules/resolve-url-loader/node_modules/postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/resolve-url-loader/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -19083,6 +21495,14 @@ "node": ">=4" } }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/sane/node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -19222,6 +21642,20 @@ "node": ">=6" } }, + "node_modules/sass-graph/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/sass-graph/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -19233,12 +21667,12 @@ "node": ">=6" } }, - "node_modules/sass-graph/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/sass-graph/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/sass-graph/node_modules/string-width": { @@ -19305,9 +21739,9 @@ } }, "node_modules/sass-loader": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", - "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.0.tgz", + "integrity": "sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw==", "dependencies": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -19324,7 +21758,7 @@ }, "peerDependencies": { "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0", "sass": "^1.3.0", "webpack": "^4.36.0 || ^5.0.0" }, @@ -19357,20 +21791,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/sass-loader/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -19388,9 +21808,9 @@ } }, "node_modules/scheduler": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", - "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -19445,9 +21865,9 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "node_modules/selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "dependencies": { "node-forge": "^0.10.0" } @@ -19476,25 +21896,18 @@ "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/semantic-ui-react/node_modules/react-popper": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz", - "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==", - "dependencies": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" - }, - "peerDependencies": { - "@popperjs/core": "^2.0.0", - "react": "^16.8.0 || ^17" - } - }, "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/send": { @@ -20027,26 +22440,26 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dependencies": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" } }, "node_modules/sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "dependencies": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" } }, "node_modules/sockjs-client/node_modules/debug": { @@ -20057,21 +22470,11 @@ "ms": "^2.1.1" } }, - "node_modules/sockjs-client/node_modules/faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/sockjs/node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { "uuid": "bin/uuid" } @@ -20100,6 +22503,14 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", @@ -20131,6 +22542,15 @@ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -20155,9 +22575,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==" }, "node_modules/spdy": { "version": "4.0.2", @@ -20267,6 +22687,14 @@ "node": ">=10" } }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, "node_modules/stackframe": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", @@ -20385,6 +22813,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -20490,14 +22919,15 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", - "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz", + "integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has-symbols": "^1.0.1", + "es-abstract": "^1.18.2", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", "internal-slot": "^1.0.3", "regexp.prototype.flags": "^1.3.1", "side-channel": "^1.0.4" @@ -20651,6 +23081,14 @@ "webpack": "^4.0.0 || ^5.0.0" } }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, "node_modules/stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -20689,9 +23127,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -20848,37 +23286,31 @@ "node": ">=4" } }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/table/node_modules/ajv": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", - "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -20930,13 +23362,30 @@ } }, "node_modules/tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "dependencies": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/temp-dir": { @@ -21046,6 +23495,43 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terser-webpack-plugin/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/terser-webpack-plugin/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -21060,6 +23546,47 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/terser-webpack-plugin/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser-webpack-plugin/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -21088,10 +23615,18 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/terser-webpack-plugin/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", - "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", "dependencies": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -21285,9 +23820,9 @@ } }, "node_modules/tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dependencies": { "punycode": "^2.1.1" }, @@ -21374,9 +23909,9 @@ } }, "node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -21465,11 +24000,6 @@ "node": ">= 0.6" } }, - "node_modules/typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -21484,9 +24014,9 @@ } }, "node_modules/typescript": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", - "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.4.tgz", + "integrity": "sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==", "peer": true, "bin": { "tsc": "bin/tsc", @@ -21518,14 +24048,17 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dependencies": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -21648,6 +24181,24 @@ "node": ">=4" } }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-is": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", @@ -21657,6 +24208,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -21684,11 +24244,6 @@ } }, "node_modules/unist-util-visit-parents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz", - "integrity": "sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q==" - }, - "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", @@ -21971,9 +24526,9 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, "node_modules/v8-to-istanbul": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", - "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -22001,9 +24556,9 @@ } }, "node_modules/validator": { - "version": "13.5.2", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz", - "integrity": "sha512-mD45p0rvHVBlY2Zuy3F3ESIe1h5X58GPfAtslBjY7EtTqGquZTj+VX/J4RnHWN8FKq0C9WRVt1oWAcytWRuYLQ==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==", "engines": { "node": ">= 0.10" } @@ -22077,9 +24632,9 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", "engines": { "node": ">=0.10.0" } @@ -22491,9 +25046,9 @@ } }, "node_modules/webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", + "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", "dependencies": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", @@ -22515,11 +25070,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -22885,6 +25440,20 @@ "node": ">=0.10.0" } }, + "node_modules/webpack-dev-server/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/webpack-dev-server/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -22896,12 +25465,12 @@ "node": ">=6" } }, - "node_modules/webpack-dev-server/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "node_modules/webpack-dev-server/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/webpack-dev-server/node_modules/pkg-dir": { @@ -23067,9 +25636,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dependencies": { "async-limiter": "~1.0.0" } @@ -23124,6 +25693,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { "uuid": "bin/uuid" } @@ -23420,9 +25990,9 @@ } }, "node_modules/webpack/node_modules/ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dependencies": { "figgy-pudding": "^3.5.1" } @@ -23467,14 +26037,16 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=0.8.0" } }, "node_modules/websocket-extensions": { @@ -23504,12 +26076,12 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" }, "node_modules/whatwg-url": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", - "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.6.0.tgz", + "integrity": "sha512-os0KkeeqUOl7ccdDT1qqUcS4KH4tcBTSKK5Nl5WKb2lyxInIZ/CpjkqKa1Ss12mjfdcRX9mHmPPs7/SxG1Hbdw==", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.2", + "lodash": "^4.7.0", + "tr46": "^2.1.0", "webidl-conversions": "^6.1.0" }, "engines": { @@ -23851,9 +26423,9 @@ } }, "node_modules/ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.0.tgz", + "integrity": "sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw==", "engines": { "node": ">=8.3.0" }, @@ -23881,9 +26453,9 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "node_modules/xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", "engines": { "node": ">=0.4.0" } @@ -23897,9 +26469,9 @@ } }, "node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "node_modules/yallist": { "version": "4.0.0", @@ -23952,6 +26524,18 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -23960,6 +26544,58 @@ "node": ">=8" } }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, "node_modules/yargs/node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -24009,39 +26645,38 @@ } }, "@babel/compat-data": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.11.tgz", - "integrity": "sha512-BwKEkO+2a67DcFeS3RLl0Z3Gs2OvdXewuWjc1Hfokhb5eQWP9YRYH1/+VrVZvql2CfjOiNGqSAFOYt4lsqTHzg==" + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==" }, "@babel/core": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", - "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.10", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" } }, "semver": { @@ -24057,11 +26692,11 @@ } }, "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "requires": { - "@babel/types": "^7.13.0", + "@babel/types": "^7.14.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -24074,30 +26709,30 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-compilation-targets": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", - "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", "semver": "^6.3.0" }, "dependencies": { @@ -24109,30 +26744,31 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.14.5", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "requires": { "@babel/helper-compilation-targets": "^7.13.0", "@babel/helper-module-imports": "^7.12.13", @@ -24152,167 +26788,165 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", - "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" } }, "@babel/helper-module-transforms": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", - "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "lodash": "^4.17.19" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==" + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-replace-supers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", - "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helper-simple-access": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", - "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.14.5" } }, "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.14.5" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==" }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -24369,27 +27003,47 @@ } }, "@babel/parser": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.11.tgz", - "integrity": "sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q==" + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==" + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" + } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-decorators": { @@ -24403,106 +27057,117 @@ } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", + "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.14.5" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", - "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -24529,12 +27194,20 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/plugin-syntax-decorators": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", - "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", + "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -24554,11 +27227,11 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", - "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-import-meta": { @@ -24578,11 +27251,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", - "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", + "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -24633,67 +27306,75 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-typescript": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz", - "integrity": "sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", + "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", "globals": "^11.1.0" }, "dependencies": { @@ -24705,45 +27386,45 @@ } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-flow-strip-types": { @@ -24756,196 +27437,196 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", + "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.13.10.tgz", - "integrity": "sha512-E+aCW9j7mLq01tOuGV08YzLBt+vSyr4bOPT75B6WrAlrUfmOYOZ/yWk847EH0dv0xXiCihWLEmlX//O30YhpIw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", + "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz", - "integrity": "sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz", + "integrity": "sha512-07aqY1ChoPgIxsuDviptRpVkWCSbXWmzQqcgy65C6YSFOfPFvb/DX3bBRHh7pCd/PMEEYHYWUTSVkCbkVainYQ==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz", - "integrity": "sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.5.tgz", + "integrity": "sha512-7RylxNeDnxc1OleDm0F5Q/BSL+whYRbOAR+bwgCxIr0L32v7UFh/pz1DLMZideAUxKT6eMoS2zQH6fyODLEi8Q==", "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/types": "^7.12.17" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-jsx": "^7.14.5", + "@babel/types": "^7.14.5" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz", - "integrity": "sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", + "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", "requires": { - "@babel/plugin-transform-react-jsx": "^7.12.17" + "@babel/plugin-transform-react-jsx": "^7.14.5" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz", - "integrity": "sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.5.tgz", + "integrity": "sha512-M/fmDX6n0cfHK/NLTcPmrfVAORKDhK8tyjDhyxlUjYyPYYO8FRWwuxBA3WBx8kWN/uBUuwGa3s/0+hQ9JIN3Tg==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz", - "integrity": "sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz", + "integrity": "sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", - "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", + "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-runtime": { @@ -24957,100 +27638,111 @@ "@babel/helper-plugin-utils": "^7.10.4", "resolve": "^1.8.1", "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typescript": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.13.0.tgz", - "integrity": "sha512-elQEwluzaU8R8dbVuW2Q2Y8Nznf7hnjM7+DSCd14Lo5fF63C9qNLbwZYbmZrtV9/ySpSUpkRpQXvJb6xyu4hCQ==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.14.6.tgz", + "integrity": "sha512-XlTdBq7Awr4FYIzqhmYY80WN0V0azF74DMPyFqVHBvf81ZUgc4X7ZOpx6O8eLDK6iM5cCQzeyJw0ynTaefixRA==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-typescript": "^7.12.13" + "@babel/helper-create-class-features-plugin": "^7.14.6", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-typescript": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.10.tgz", - "integrity": "sha512-nOsTScuoRghRtUsRr/c69d042ysfPHcu+KOB4A9aAO9eJYqrkat+LF8G1yp1HD18QiwixT2CisZTr/0b3YZPXQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", + "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.8", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -25060,45 +27752,46 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.0", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", "semver": "^6.3.0" }, "dependencies": { @@ -25122,15 +27815,16 @@ } }, "@babel/preset-react": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.13.tgz", - "integrity": "sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", + "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-transform-react-display-name": "^7.12.13", - "@babel/plugin-transform-react-jsx": "^7.12.13", - "@babel/plugin-transform-react-jsx-development": "^7.12.12", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.5", + "@babel/plugin-transform-react-jsx-development": "^7.14.5", + "@babel/plugin-transform-react-pure-annotations": "^7.14.5" } }, "@babel/preset-typescript": { @@ -25143,64 +27837,64 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", - "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.14.7.tgz", + "integrity": "sha512-Wvzcw4mBYbTagyBVZpAJWI06auSIj033T/yNE0Zn1xcup83MieCddZA7ls3kme17L4NOGBrQ09Q+nKB41RLWBA==", "requires": { - "core-js-pure": "^3.0.0", + "core-js-pure": "^3.15.0", "regenerator-runtime": "^0.13.4" } }, "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" } } } }, "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" } }, "globals": { @@ -25211,12 +27905,11 @@ } }, "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", + "@babel/helper-validator-identifier": "^7.14.5", "to-fast-properties": "^2.0.0" } }, @@ -25245,34 +27938,19 @@ "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" }, "@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "requires": { - "type-fest": "^0.8.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } } }, "@fluentui/react-component-event-listener": { @@ -25290,6 +27968,13 @@ "requires": { "@babel/runtime": "^7.10.4", "react-is": "^16.6.3" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, "@hapi/address": { @@ -25326,15 +28011,6 @@ "@hapi/hoek": "^8.3.0" } }, - "@hypnosphi/create-react-context": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz", - "integrity": "sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==", - "requires": { - "gud": "^1.0.0", - "warning": "^4.0.3" - } - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -25347,6 +28023,49 @@ "resolve-from": "^5.0.0" }, "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -25370,6 +28089,54 @@ "jest-message-util": "^26.6.2", "jest-util": "^26.6.2", "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + } } }, "@jest/core": { @@ -25405,6 +28172,179 @@ "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } } }, "@jest/environment": { @@ -25416,6 +28356,28 @@ "@jest/types": "^26.6.2", "@types/node": "*", "jest-mock": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + } } }, "@jest/fake-timers": { @@ -25429,6 +28391,54 @@ "jest-message-util": "^26.6.2", "jest-mock": "^26.6.2", "jest-util": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + } } }, "@jest/globals": { @@ -25439,6 +28449,28 @@ "@jest/environment": "^26.6.2", "@jest/types": "^26.6.2", "expect": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + } } }, "@jest/reporters": { @@ -25471,6 +28503,145 @@ "string-length": "^4.0.1", "terminal-link": "^2.0.0", "v8-to-istanbul": "^7.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } } }, "@jest/source-map": { @@ -25492,6 +28663,28 @@ "@jest/types": "^26.6.2", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + } } }, "@jest/test-sequencer": { @@ -25526,40 +28719,90 @@ "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + } } }, "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.0.2.tgz", + "integrity": "sha512-XpjCtJ/99HB4PmyJ2vgmN7vT+JLP7RW1FBT9RgnMFS4Dt7cvIyBee8O3/j98aUZ34ZpenPZFqmaaObWSeL65dg==", + "optional": true, + "peer": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" } }, "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "requires": { - "@nodelib/fs.stat": "2.0.4", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", + "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", "requires": { - "@nodelib/fs.scandir": "2.1.4", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -25580,9 +28823,9 @@ } }, "@popperjs/core": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.1.tgz", - "integrity": "sha512-DvJbbn3dUgMxDnJLH+RZQPnXak1h4ZVYQ7CWiFWjQwBFkVajT4rfw2PdpHLTSTwxrYfnoEXkuBiwkDm6tPMQeA==" + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz", + "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" }, "@redux-saga/core": { "version": "1.1.3", @@ -25644,9 +28887,9 @@ } }, "@rollup/plugin-replace": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz", - "integrity": "sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", "requires": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" @@ -25679,9 +28922,9 @@ } }, "@sinonjs/commons": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", - "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "requires": { "type-detect": "4.0.8" } @@ -25819,15 +29062,15 @@ "loader-utils": "^2.0.0" } }, - "@types/anymatch": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", - "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==" + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" }, "@types/babel__core": { - "version": "7.1.13", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.13.tgz", - "integrity": "sha512-CC6amBNND16pTk4K3ZqKIaba6VGKAQs3gMjEY17FVd56oI/ZWt9OhS6riYiWv9s8ENbYUi7p8lgqb0QHQvUKQQ==", + "version": "7.1.14", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", + "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -25862,27 +29105,27 @@ } }, "@types/cheerio": { - "version": "0.22.27", - "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.27.tgz", - "integrity": "sha512-UpmYZewEWNEE6Ya24RzAQ2X2OYwz32AaLyzYinpM8qqFGRyYufqKSvxPjjZkvS+h16bajfXl7VojrAxWzG/+mA==", + "version": "0.22.29", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.29.tgz", + "integrity": "sha512-rNX1PsrDPxiNiyLnRKiW2NXHJFHqx0Fl3J2WsZq0MTBspa/FgwlqhXJE2crIcc+/2IglLHtSWw7g053oUR8fOg==", "dev": true, "requires": { "@types/node": "*" } }, "@types/eslint": { - "version": "7.2.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", - "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz", + "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==", "requires": { "@types/estree": "*", "@types/json-schema": "*" } }, "@types/estree": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", - "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==" + "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==" }, "@types/glob": { "version": "7.1.3", @@ -25901,6 +29144,23 @@ "@types/node": "*" } }, + "@types/hast": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.1.tgz", + "integrity": "sha512-viwwrB+6xGzw+G1eWpF9geV3fnsDgXqHG+cqgiHrvQfDUW5hzhCyV7Sy3UJxhfRFBsgky2SSW33qi/YrIkjX5Q==", + "requires": { + "@types/unist": "*" + } + }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, "@types/html-minifier-terser": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", @@ -25920,9 +29180,9 @@ } }, "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "requires": { "@types/istanbul-lib-report": "*" } @@ -25946,14 +29206,14 @@ } }, "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==" }, "@types/node": { - "version": "14.14.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", - "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==" + "version": "15.12.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz", + "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==" }, "@types/normalize-package-data": { "version": "2.4.0", @@ -25966,15 +29226,14 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "@types/prettier": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz", - "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.0.tgz", + "integrity": "sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw==" }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", - "peer": true + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" }, "@types/q": { "version": "1.5.4", @@ -25982,16 +29241,26 @@ "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" }, "@types/react": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz", - "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==", - "peer": true, + "version": "17.0.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.11.tgz", + "integrity": "sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, + "@types/react-redux": { + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.16.tgz", + "integrity": "sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw==", + "requires": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, "@types/resolve": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", @@ -26003,8 +29272,7 @@ "@types/scheduler": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz", - "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==", - "peer": true + "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" }, "@types/source-list-map": { "version": "0.1.2", @@ -26017,9 +29285,9 @@ "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==" }, "@types/tapable": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz", - "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz", + "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==" }, "@types/uglify-js": { "version": "3.13.0", @@ -26035,15 +29303,15 @@ "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" }, "@types/webpack": { - "version": "4.41.26", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.26.tgz", - "integrity": "sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA==", + "version": "4.41.29", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.29.tgz", + "integrity": "sha512-6pLaORaVNZxiB3FSHbyBiWM7QdazAWda1zvAq4SbZObZqHSDbWLi62iFdblVea6SK9eyBIVp5yHhKt/yNQdR7Q==", "requires": { - "@types/anymatch": "*", "@types/node": "*", - "@types/tapable": "*", + "@types/tapable": "^1", "@types/uglify-js": "*", "@types/webpack-sources": "*", + "anymatch": "^3.0.0", "source-map": "^0.6.0" } }, @@ -26065,9 +29333,11 @@ } }, "@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.3.tgz", + "integrity": "sha512-YlFfTGS+zqCgXuXNV26rOIeETOkXnGQXP/pjjL9P0gO/EP9jTmc7pUBhx+jVEIxpq41RX33GQ7N3DzOSfZoglQ==", + "optional": true, + "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -26078,98 +29348,87 @@ "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==" }, "@typescript-eslint/eslint-plugin": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.18.0.tgz", - "integrity": "sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.0.tgz", + "integrity": "sha512-KcF6p3zWhf1f8xO84tuBailV5cN92vhS+VT7UJsPzGBm9VnQqfI9AsiMUFUCYHTYPg1uCCo+HyiDnpDuvkAMfQ==", "requires": { - "@typescript-eslint/experimental-utils": "4.18.0", - "@typescript-eslint/scope-manager": "4.18.0", - "debug": "^4.1.1", + "@typescript-eslint/experimental-utils": "4.28.0", + "@typescript-eslint/scope-manager": "4.28.0", + "debug": "^4.3.1", "functional-red-black-tree": "^1.0.1", - "lodash": "^4.17.15", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "requires": { - "lru-cache": "^6.0.0" - } - } + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" } }, "@typescript-eslint/experimental-utils": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.18.0.tgz", - "integrity": "sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.0.tgz", + "integrity": "sha512-9XD9s7mt3QWMk82GoyUpc/Ji03vz4T5AYlHF9DcoFNfJ/y3UAclRsfGiE2gLfXtyC+JRA3trR7cR296TEb1oiQ==", "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.18.0", - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/typescript-estree": "4.18.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.18.0.tgz", - "integrity": "sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA==", - "requires": { - "@typescript-eslint/scope-manager": "4.18.0", - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/typescript-estree": "4.18.0", - "debug": "^4.1.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.18.0.tgz", - "integrity": "sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ==", - "requires": { - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/visitor-keys": "4.18.0" - } - }, - "@typescript-eslint/types": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.18.0.tgz", - "integrity": "sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A==" - }, - "@typescript-eslint/typescript-estree": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz", - "integrity": "sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg==", - "requires": { - "@typescript-eslint/types": "4.18.0", - "@typescript-eslint/visitor-keys": "4.18.0", - "debug": "^4.1.1", - "globby": "^11.0.1", - "is-glob": "^4.0.1", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.28.0", + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/typescript-estree": "4.28.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "requires": { - "lru-cache": "^6.0.0" + "eslint-visitor-keys": "^2.0.0" } } } }, - "@typescript-eslint/visitor-keys": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz", - "integrity": "sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw==", + "@typescript-eslint/parser": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.0.tgz", + "integrity": "sha512-7x4D22oPY8fDaOCvkuXtYYTQ6mTMmkivwEzS+7iml9F9VkHGbbZ3x4fHRwxAb5KeuSkLqfnYjs46tGx2Nour4A==", "requires": { - "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/scope-manager": "4.28.0", + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/typescript-estree": "4.28.0", + "debug": "^4.3.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.0.tgz", + "integrity": "sha512-eCALCeScs5P/EYjwo6se9bdjtrh8ByWjtHzOkC4Tia6QQWtQr3PHovxh3TdYTuFcurkYI4rmFsRFpucADIkseg==", + "requires": { + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/visitor-keys": "4.28.0" + } + }, + "@typescript-eslint/types": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.0.tgz", + "integrity": "sha512-p16xMNKKoiJCVZY5PW/AfILw2xe1LfruTcfAKBj3a+wgNYP5I9ZEKNDOItoRt53p4EiPV6iRSICy8EPanG9ZVA==" + }, + "@typescript-eslint/typescript-estree": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.0.tgz", + "integrity": "sha512-m19UQTRtxMzKAm8QxfKpvh6OwQSXaW1CdZPoCaQuLwAq7VZMNuhJmZR4g5281s2ECt658sldnJfdpSZZaxUGMQ==", + "requires": { + "@typescript-eslint/types": "4.28.0", + "@typescript-eslint/visitor-keys": "4.28.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.0.tgz", + "integrity": "sha512-PjJyTWwrlrvM5jazxYF5ZPs/nl0kHDZMVbuIcbpawVXaDPelp3+S9zpOz5RmVUfS/fD5l5+ZXNKnWhNYjPzCvw==", + "requires": { + "@typescript-eslint/types": "4.28.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -26330,6 +29589,35 @@ "@xtuc/long": "4.2.2" } }, + "@wojtekmaj/enzyme-adapter-react-17": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-react-17/-/enzyme-adapter-react-17-0.6.2.tgz", + "integrity": "sha512-9STl8ZKp8VPJgtr6jEAv9IThX0PAJ1JXKv6IlXzq22Ejyk1bhSxJ6RfJCJT9A9+8JlDIf3BX5CC4s0Bs4/1wFQ==", + "dev": true, + "requires": { + "@wojtekmaj/enzyme-adapter-utils": "^0.1.1", + "enzyme-shallow-equal": "^1.0.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.values": "^1.1.0", + "prop-types": "^15.7.0", + "react-is": "^17.0.2", + "react-test-renderer": "^17.0.0" + } + }, + "@wojtekmaj/enzyme-adapter-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@wojtekmaj/enzyme-adapter-utils/-/enzyme-adapter-utils-0.1.1.tgz", + "integrity": "sha512-bNPWtN/d8huKOkC6j1E3EkSamnRrHHT7YuR6f9JppAQqtoAm3v4/vERe4J14jQKmHLCyEBHXrlgb7H6l817hVg==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.0", + "has": "^1.0.0", + "object.assign": "^4.1.0", + "object.fromentries": "^2.0.0", + "prop-types": "^15.7.0" + } + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -26403,6 +29691,14 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -26458,17 +29754,17 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" } } }, @@ -26491,9 +29787,9 @@ } }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -26556,12 +29852,6 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, - "array-filter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", - "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", - "dev": true - }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -26599,14 +29889,17 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "array.prototype.find": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.1.1.tgz", - "integrity": "sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA==", + "array.prototype.filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.0.tgz", + "integrity": "sha512-TfO1gz+tLm+Bswq0FBOXPqAchtCr2Rn48T8dLJoRFl8NoEosjZmzptmuo1X8aZBzZcqsR1W8U761tjACJtngTQ==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.4" + "es-abstract": "^1.18.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.5" } }, "array.prototype.flat": { @@ -26789,9 +30082,9 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axe-core": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz", - "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.2.3.tgz", + "integrity": "sha512-pXnVMfJKSIWU2Ml4JHP7pZEPIrgBO1Fd3WGx+fPBsS+KRGhE4vxooD8XBGWbQOIVSZsVK7pUDBBkCicNu80yzQ==" }, "axobject-query": { "version": "2.2.0", @@ -26839,6 +30132,28 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "slash": "^3.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + } } }, "babel-loader": { @@ -26935,12 +30250,12 @@ "requires": {} }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", "semver": "^6.1.1" }, "dependencies": { @@ -26952,20 +30267,20 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", + "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.2.2" } }, "babel-plugin-syntax-object-rest-spread": { @@ -27200,6 +30515,11 @@ "regenerator-runtime": "^0.13.4" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -27244,9 +30564,9 @@ "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base": { "version": "0.11.2", @@ -27331,14 +30651,6 @@ "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "~2.0.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -27521,15 +30833,15 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^1.1.71" } }, "bser": { @@ -27588,9 +30900,9 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", + "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", "requires": { "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", @@ -27606,7 +30918,7 @@ "p-map": "^4.0.0", "promise-inflight": "^1.0.1", "rimraf": "^3.0.2", - "ssri": "^8.0.0", + "ssri": "^8.0.1", "tar": "^6.0.2", "unique-filename": "^1.1.1" }, @@ -27615,19 +30927,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } } } }, @@ -27726,9 +31025,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001203", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz", - "integrity": "sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w==" + "version": "1.0.30001239", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz", + "integrity": "sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ==" }, "capture-exit": { "version": "2.0.0", @@ -27768,9 +31067,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27808,47 +31107,47 @@ "integrity": "sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==" }, "cheerio": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.5.tgz", - "integrity": "sha512-yoqps/VCaZgN4pfXtenwHROTp8NG6/Hlt4Jpz2FEP0ZJQ+ZUkVDd0hAPDNKhj3nakpfPt/CNs57yEtxD1bXQiw==", + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", "dev": true, "requires": { - "cheerio-select-tmp": "^0.1.0", - "dom-serializer": "~1.2.0", - "domhandler": "^4.0.0", - "entities": "~2.1.0", - "htmlparser2": "^6.0.0", - "parse5": "^6.0.0", - "parse5-htmlparser2-tree-adapter": "^6.0.0" + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" } }, - "cheerio-select-tmp": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/cheerio-select-tmp/-/cheerio-select-tmp-0.1.1.tgz", - "integrity": "sha512-YYs5JvbpU19VYJyj+F7oYrIE2BOll1/hRU7rEy/5+v9BzkSo3bK81iAeeQEMI92vRIxz677m72UmJUiVwwgjfQ==", + "cheerio-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", + "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", "dev": true, "requires": { - "css-select": "^3.1.2", - "css-what": "^4.0.0", - "domelementtype": "^2.1.0", - "domhandler": "^4.0.0", - "domutils": "^2.4.4" + "css-select": "^4.1.3", + "css-what": "^5.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0", + "domutils": "^2.7.0" } }, "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "optional": true, "requires": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" + "readdirp": "~3.6.0" } }, "chownr": { @@ -27857,24 +31156,16 @@ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", + "optional": true, + "peer": true }, "cipher-base": { "version": "1.0.4", @@ -27974,9 +31265,9 @@ } }, "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-css": { "version": "4.2.3", @@ -28172,6 +31463,11 @@ "delayed-stream": "~1.0.0" } }, + "comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" + }, "commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -28299,11 +31595,6 @@ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -28318,9 +31609,9 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "requires": { "safe-buffer": "~5.1.1" } @@ -28364,16 +31655,16 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", - "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==" + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.1.tgz", + "integrity": "sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg==" }, "core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.1.tgz", + "integrity": "sha512-xGhzYMX6y7oEGQGAJmP2TmtBLvR4nZmRGEcFa3ubHOq5YEp51gGN9AovVa0AoujGZIq+Wm6dISiYyGNfdflYww==", "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.16.6", "semver": "7.0.0" }, "dependencies": { @@ -28385,9 +31676,9 @@ } }, "core-js-pure": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.1.tgz", - "integrity": "sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==" + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.15.1.tgz", + "integrity": "sha512-OZuWHDlYcIda8sJLY4Ec6nWq2hRjlyCqCZ+jCflyleMkVt3tPedDVErvHslyS2nbO+SlBFMSBJYvtLMwxnrzjA==" }, "core-util-is": { "version": "1.0.2", @@ -28570,14 +31861,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "requires": { - "lru-cache": "^6.0.0" - } } } }, @@ -28590,15 +31873,14 @@ } }, "css-select": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz", - "integrity": "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==", - "dev": true, + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "requires": { "boolbase": "^1.0.0", - "css-what": "^4.0.0", - "domhandler": "^4.0.0", - "domutils": "^2.4.3", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", "nth-check": "^2.0.0" } }, @@ -28617,10 +31899,9 @@ } }, "css-what": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz", - "integrity": "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==", - "dev": true + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" }, "cssdb": { "version": "4.4.0", @@ -28633,12 +31914,12 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "requires": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", + "cssnano-preset-default": "^4.0.8", "is-resolvable": "^1.0.0", "postcss": "^7.0.0" }, @@ -28680,9 +31961,9 @@ } }, "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", "requires": { "css-declaration-sorter": "^4.0.1", "cssnano-util-raw-cache": "^4.0.1", @@ -28712,7 +31993,7 @@ "postcss-ordered-values": "^4.1.2", "postcss-reduce-initial": "^4.0.3", "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", + "postcss-svgo": "^4.0.3", "postcss-unique-selectors": "^4.0.1" } }, @@ -28748,9 +32029,9 @@ }, "dependencies": { "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "requires": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -28784,10 +32065,9 @@ } }, "csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==", - "peer": true + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", + "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" }, "currently-unhandled": { "version": "0.4.1", @@ -28812,9 +32092,9 @@ } }, "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.7.tgz", + "integrity": "sha512-VvdQIPGdWP0SqFXghj79Wf/5LArmreyMsGLa6FG6iC4t3j7j5s71TrwWmT/4akbDQIqjfACkLZmjXhA7g2oUZw==" }, "dashdash": { "version": "1.14.1", @@ -28835,9 +32115,9 @@ } }, "date-fns": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz", - "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==" + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.22.1.tgz", + "integrity": "sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==" }, "debug": { "version": "4.3.1", @@ -28853,9 +32133,9 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.0.tgz", + "integrity": "sha512-MrQRs2gyD//7NeHi9TtsfClkf+cFAewDz+PZHR8ILKglLmBMyVX3ymQ+oeznE3tjrS7beTN+6JXb2C3JDHm7ug==" }, "decode-uri-component": { "version": "0.2.0", @@ -28986,6 +32266,11 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -29122,9 +32407,9 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" }, "detect-node": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.5.tgz", - "integrity": "sha512-qi86tE6hRcFHy8jI1m2VG+LaPUR1LhqDa5G8tVjuUXmOrpuAgqsA1pN0+ldgr3aKUH+QLI9hCY/OcRYisERejw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" }, "detect-port-alt": { "version": "1.1.6", @@ -29192,9 +32477,9 @@ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -29225,12 +32510,12 @@ } }, "dom-serializer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz", - "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "requires": { "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", + "domhandler": "^4.2.0", "entities": "^2.0.0" } }, @@ -29240,9 +32525,9 @@ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" }, "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" }, "domexception": { "version": "2.0.1", @@ -29260,21 +32545,21 @@ } }, "domhandler": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz", - "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", "requires": { - "domelementtype": "^2.1.0" + "domelementtype": "^2.2.0" } }, "domutils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.0.tgz", - "integrity": "sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", "requires": { "dom-serializer": "^1.0.1", - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0" + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, "dot-case": { @@ -29347,9 +32632,9 @@ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" }, "electron-to-chromium": { - "version": "1.3.693", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.693.tgz", - "integrity": "sha512-vUdsE8yyeu30RecppQtI+XTz2++LWLVEIYmzeCaCRLSdtKZ2eXqdJcrs85KwLiPOPVc6PELgWyXBsfqIvzGZag==" + "version": "1.3.755", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.755.tgz", + "integrity": "sha512-BJ1s/kuUuOeo1bF/EM2E4yqW9te0Hpof3wgwBx40AWJE18zsD1Tqo0kr7ijnOc+lRsrlrqKPauJAHqaxOItoUA==" }, "elliptic": { "version": "6.5.4", @@ -29401,9 +32686,9 @@ } }, "engine.io-client": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.1.tgz", - "integrity": "sha512-oVu9kBkGbcggulyVF0kz6BV3ganqUeqXvD79WOFKa+11oK692w1NyFkuEj4xrkFRpZhn92QOqTk4RQq5LiBXbQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", "requires": { "component-emitter": "~1.3.0", "component-inherit": "0.0.3", @@ -29414,7 +32699,7 @@ "parseqs": "0.0.6", "parseuri": "0.0.6", "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.5.4", + "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" }, "dependencies": { @@ -29430,6 +32715,12 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} } } }, @@ -29475,9 +32766,14 @@ } }, "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" }, "enzyme": { "version": "3.11.0", @@ -29509,79 +32805,6 @@ "string.prototype.trim": "^1.2.1" } }, - "enzyme-adapter-react-16": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz", - "integrity": "sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==", - "dev": true, - "requires": { - "enzyme-adapter-utils": "^1.14.0", - "enzyme-shallow-equal": "^1.0.4", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.values": "^1.1.2", - "prop-types": "^15.7.2", - "react-is": "^16.13.1", - "react-test-renderer": "^16.0.0-0", - "semver": "^5.7.0" - }, - "dependencies": { - "airbnb-prop-types": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", - "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", - "dev": true, - "requires": { - "array.prototype.find": "^2.1.1", - "function.prototype.name": "^1.1.2", - "is-regex": "^1.1.0", - "object-is": "^1.1.2", - "object.assign": "^4.1.0", - "object.entries": "^1.1.2", - "prop-types": "^15.7.2", - "prop-types-exact": "^1.2.0", - "react-is": "^16.13.1" - } - }, - "enzyme-adapter-utils": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz", - "integrity": "sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==", - "dev": true, - "requires": { - "airbnb-prop-types": "^2.16.0", - "function.prototype.name": "^1.1.3", - "has": "^1.0.3", - "object.assign": "^4.1.2", - "object.fromentries": "^2.0.3", - "prop-types": "^15.7.2", - "semver": "^5.7.1" - } - }, - "react-test-renderer": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", - "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "react-is": "^16.8.6", - "scheduler": "^0.19.1" - } - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } - } - }, "enzyme-matchers": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/enzyme-matchers/-/enzyme-matchers-7.1.2.tgz", @@ -29603,14 +32826,22 @@ } }, "enzyme-to-json": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.1.tgz", - "integrity": "sha512-15tXuONeq5ORoZjV/bUo2gbtZrN2IH+Z6DvL35QmZyKHgbY1ahn6wcnLd9Xv9OjiwbAXiiP8MRZwbZrCv1wYNg==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/enzyme-to-json/-/enzyme-to-json-3.6.2.tgz", + "integrity": "sha512-Ynm6Z6R6iwQ0g2g1YToz6DWhxVnt8Dy1ijR2zynRKxTyBGA8rCDXU3rs2Qc4OKvUvc2Qoe1bcFK6bnPs20TrTg==", "dev": true, "requires": { "@types/cheerio": "^0.22.22", - "lodash": "^4.17.15", + "lodash": "^4.17.21", "react-is": "^16.12.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + } } }, "errno": { @@ -29638,9 +32869,9 @@ } }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -29650,16 +32881,22 @@ "has-symbols": "^1.0.2", "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -29710,9 +32947,9 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "escodegen": { "version": "2.0.0", @@ -29769,27 +33006,29 @@ } }, "eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", + "@eslint/eslintrc": "^0.4.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -29798,7 +33037,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -29807,19 +33046,9 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "eslint-config-airbnb": { @@ -29845,9 +33074,9 @@ } }, "eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", "dev": true, "requires": {} }, @@ -29884,55 +33113,52 @@ } }, "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", + "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", "requires": { - "debug": "^2.6.9", + "debug": "^3.2.7", "pkg-dir": "^2.0.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "eslint-plugin-flowtype": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.4.0.tgz", - "integrity": "sha512-O0s0iTT5UxYuoOpHMLSIO2qZMyvrb9shhk1EM5INNGtJ2CffrfUmsnh6TVsnoT41fkXIEndP630WNovhoO87xQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.7.2.tgz", + "integrity": "sha512-7Oq/N0+3nijBnYWQYzz/Mp/7ZCpwxYvClRyW/PLAmimY9uLCBvoXsNsERcJdkKceyOjgRbFhhxs058KTrne9Mg==", "requires": { "lodash": "^4.17.15", "string-natural-compare": "^3.0.1" } }, "eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "version": "2.23.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", + "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", "debug": "^2.6.9", - "doctrine": "1.5.0", + "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", + "eslint-module-utils": "^2.6.1", + "find-up": "^2.0.0", "has": "^1.0.3", + "is-core-module": "^2.4.0", "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", + "object.values": "^1.1.3", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", "tsconfig-paths": "^3.9.0" }, "dependencies": { @@ -29945,19 +33171,13 @@ } }, "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "esutils": "^2.0.2" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -29966,9 +33186,9 @@ } }, "eslint-plugin-jest": { - "version": "24.3.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.3.2.tgz", - "integrity": "sha512-cicWDr+RvTAOKS3Q/k03+Z3odt3VCiWamNUHWd6QWbVQWcYJyYgUTu8x0mx9GfeDEimawU5kQC+nQ3MFxIM6bw==", + "version": "24.3.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.3.6.tgz", + "integrity": "sha512-WOVH4TIaBLIeCX576rLcOgjNXqP+jNlCiEmRgFTfQtJ52DpwnIQKAVGlGPAN7CZ33bW6eNfHD6s8ZbEUTQubJg==", "requires": { "@typescript-eslint/experimental-utils": "^4.0.1" } @@ -29992,30 +33212,31 @@ } }, "eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz", - "integrity": "sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", + "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", "requires": { - "array-includes": "^3.1.1", - "array.prototype.flatmap": "^1.2.3", + "array-includes": "^3.1.3", + "array.prototype.flatmap": "^1.2.4", "doctrine": "^2.1.0", "has": "^1.0.3", "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "object.entries": "^1.1.2", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", + "minimatch": "^3.0.4", + "object.entries": "^1.1.4", + "object.fromentries": "^2.0.4", + "object.values": "^1.1.4", "prop-types": "^15.7.2", - "resolve": "^1.18.1", - "string.prototype.matchall": "^4.0.2" + "resolve": "^2.0.0-next.3", + "string.prototype.matchall": "^4.0.5" }, "dependencies": { "doctrine": { @@ -30025,6 +33246,15 @@ "requires": { "esutils": "^2.0.2" } + }, + "resolve": { + "version": "2.0.0-next.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", + "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } } } }, @@ -30035,9 +33265,9 @@ "requires": {} }, "eslint-plugin-testing-library": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz", - "integrity": "sha512-nQIFe2muIFv2oR2zIuXE4vTbcFNx8hZKRzgHZqJg8rfopIWwoTwtlbCCNELT/jXzVe1uZF68ALGYoDXjLczKiQ==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz", + "integrity": "sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==", "requires": { "@typescript-eslint/experimental-utils": "^3.10.1" }, @@ -30086,14 +33316,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "requires": { - "lru-cache": "^6.0.0" - } } } }, @@ -30122,19 +33344,20 @@ } }, "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" }, "eslint-webpack-plugin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz", - "integrity": "sha512-ndD9chZ/kaGnjjx7taRg7c6FK/YKb29SSYzaLtPBIYLYJQmZtuKqtQbAvTS2ymiMQT6X0VW9vZIHK0KLstv93Q==", + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.4.tgz", + "integrity": "sha512-7rYh0m76KyKSDE+B+2PUQrlNS4HJ51t3WKpkJg6vo2jFMbEPTG99cBV0Dm7LXSHucN4WGCG65wQcRiTFrj7iWw==", "requires": { "@types/eslint": "^7.2.6", "arrify": "^2.0.1", "jest-worker": "^26.6.2", "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", "schema-utils": "^3.0.0" }, "dependencies": { @@ -30250,9 +33473,9 @@ } }, "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==" }, "execa": { "version": "4.1.0", @@ -30397,6 +33620,33 @@ "jest-matcher-utils": "^26.6.2", "jest-message-util": "^26.6.2", "jest-regex-util": "^26.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + } } }, "express": { @@ -30581,9 +33831,9 @@ } }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "requires": { "websocket-driver": ">=0.5.1" } @@ -30713,13 +33963,12 @@ "path-exists": "^3.0.0" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -30730,10 +33979,10 @@ "p-limit": "^2.0.0" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pkg-dir": { "version": "3.0.0", @@ -30746,12 +33995,11 @@ } }, "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^2.0.0" } }, "flat-cache": { @@ -30783,9 +34031,9 @@ } }, "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" }, "for-in": { "version": "1.0.2", @@ -30948,6 +34196,11 @@ "to-regex": "^3.0.2" } }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -30968,19 +34221,19 @@ } }, "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fragment-cache": { "version": "0.2.1", @@ -31045,27 +34298,6 @@ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -31195,9 +34427,9 @@ } }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -31244,17 +34476,17 @@ } }, "globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "requires": { "type-fest": "^0.20.2" } }, "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -31292,11 +34524,6 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "optional": true }, - "gud": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz", - "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==" - }, "gzip-size": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", @@ -31326,9 +34553,9 @@ } }, "harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" }, "has": { "version": "1.0.3", @@ -31520,6 +34747,13 @@ "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { "react-is": "^16.7.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, "hoopy": { @@ -31528,9 +34762,9 @@ "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==" }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "hpack.js": { "version": "2.1.6", @@ -31553,18 +34787,13 @@ "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, "html-element-map": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.0.tgz", - "integrity": "sha512-AqCt/m9YaiMwaaAyOPdq4Ga0cM+jdDWWGueUMkdROZcTeClaGpN0AQeyGchZhTegQoABmc6+IqH7oCR/8vhQYg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.3.1.tgz", + "integrity": "sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==", "dev": true, "requires": { - "array-filter": "^1.0.0", + "array.prototype.filter": "^1.0.0", "call-bind": "^1.0.2" } }, @@ -31600,44 +34829,12 @@ "terser": "^4.6.3" } }, - "html-parse-stringify2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz", - "integrity": "sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o=", + "html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", "requires": { - "void-elements": "^2.0.1" - } - }, - "html-to-react": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/html-to-react/-/html-to-react-1.4.5.tgz", - "integrity": "sha512-KONZUDFPg5OodWaQu2ymfkDmU0JA7zB1iPfvyHehTmMUZnk0DS7/TyCMTzsLH6b4BvxX15g88qZCXFhJWktsmA==", - "requires": { - "domhandler": "^3.3.0", - "htmlparser2": "^5.0", - "lodash.camelcase": "^4.3.0", - "ramda": "^0.27.1" - }, - "dependencies": { - "domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "requires": { - "domelementtype": "^2.0.1" - } - }, - "htmlparser2": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", - "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.3.0", - "domutils": "^2.4.2", - "entities": "^2.0.0" - } - } + "void-elements": "3.1.0" } }, "html-webpack-plugin": { @@ -31677,14 +34874,13 @@ } }, "htmlparser2": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.1.tgz", - "integrity": "sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w==", - "dev": true, + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", - "domutils": "^2.4.4", + "domutils": "^2.5.2", "entities": "^2.0.0" } }, @@ -31712,6 +34908,11 @@ } } }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -31722,6 +34923,16 @@ "requires-port": "^1.0.0" } }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, "http-proxy-middleware": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", @@ -31855,25 +35066,34 @@ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, "human-signals": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" }, "i18next": { - "version": "19.9.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz", - "integrity": "sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg==", + "version": "20.3.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.3.2.tgz", + "integrity": "sha512-e8CML2R9Ng2sSQOM80wb/PrM2j8mDm84o/T4Amzn9ArVyNX5/ENWxxAXkRpZdTQNDaxKImF93Wep4mAoozFrKw==", "requires": { "@babel/runtime": "^7.12.0" } }, "i18next-browser-languagedetector": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.0.1.tgz", - "integrity": "sha512-3H+OsNQn3FciomUU0d4zPFHsvJv4X66lBelXk9hnIDYDsveIgT7dWZ3/VvcSlpKk9lvCK770blRZ/CwHMXZqWw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.2.tgz", + "integrity": "sha512-YDzIGHhMRvr7M+c8B3EQUKyiMBhfqox4o1qkFvt4QXuu5V2cxf74+NCr+VEkUuU0y+RwcupA238eeolW1Yn80g==", "requires": { - "@babel/runtime": "^7.5.5" + "@babel/runtime": "^7.14.6" } }, "iconv-lite": { @@ -31933,13 +35153,6 @@ "requires": { "@babel/runtime": "^7.0.0", "ramda": "^0.26.1" - }, - "dependencies": { - "ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" - } } }, "import-cwd": { @@ -31983,6 +35196,49 @@ "resolve-cwd": "^3.0.0" }, "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -31998,11 +35254,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "in-publish": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" - }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", @@ -32050,6 +35301,11 @@ "resolved": "https://registry.npmjs.org/initials/-/initials-3.1.1.tgz", "integrity": "sha512-imRkwIpCUer+w9NB41dTENhJrTQTGOJthRa3URF0O9+L7MOMBPmN8njwkiX4u8YnzxbjEp4Is0ohiW6NSA8ZCw==" }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, "internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", @@ -32133,9 +35389,9 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" }, "is-binary-path": { "version": "2.1.0", @@ -32147,11 +35403,11 @@ } }, "is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" } }, "is-buffer": { @@ -32165,11 +35421,13 @@ "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "optional": true, + "peer": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "^3.1.1" } }, "is-color-stop": { @@ -32186,9 +35444,9 @@ } }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "requires": { "has": "^1.0.3" } @@ -32202,9 +35460,9 @@ } }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" }, "is-decimal": { "version": "1.0.4", @@ -32227,9 +35485,9 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" }, "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" }, "is-extendable": { "version": "1.0.1", @@ -32291,9 +35549,9 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" }, "is-obj": { "version": "1.0.1", @@ -32335,17 +35593,17 @@ } }, "is-potential-custom-element-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", - "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-regexp": { @@ -32369,9 +35627,9 @@ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" }, "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" }, "is-subset": { "version": "0.1.1", @@ -32379,20 +35637,12 @@ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", "dev": true }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-typedarray": { @@ -32469,6 +35719,21 @@ "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, "istanbul-lib-source-maps": { @@ -32491,14 +35756,13 @@ } }, "jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "peer": true, + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", + "integrity": "sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==", "requires": { - "@jest/core": "^26.6.3", + "@jest/core": "^26.6.0", "import-local": "^3.0.2", - "jest-cli": "^26.6.3" + "jest-cli": "^26.6.0" } }, "jest-changed-files": { @@ -32509,34 +35773,28 @@ "@jest/types": "^26.6.2", "execa": "^4.0.0", "throat": "^5.0.0" - } - }, - "jest-circus": { - "version": "26.6.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz", - "integrity": "sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.0", - "@jest/test-result": "^26.6.0", - "@jest/types": "^26.6.0", - "@types/babel__traverse": "^7.0.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^26.6.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.0", - "jest-matcher-utils": "^26.6.0", - "jest-message-util": "^26.6.0", - "jest-runner": "^26.6.0", - "jest-runtime": "^26.6.0", - "jest-snapshot": "^26.6.0", - "jest-util": "^26.6.0", - "pretty-format": "^26.6.0", - "stack-utils": "^2.0.2", - "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + } } }, "jest-cli": { @@ -32557,6 +35815,88 @@ "jest-validate": "^26.6.2", "prompts": "^2.0.1", "yargs": "^15.4.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-config": { @@ -32582,6 +35922,179 @@ "jest-validate": "^26.6.2", "micromatch": "^4.0.2", "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } } }, "jest-diff": { @@ -32593,6 +36106,44 @@ "diff-sequences": "^26.6.2", "jest-get-type": "^26.3.0", "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-docblock": { @@ -32613,6 +36164,70 @@ "jest-get-type": "^26.3.0", "jest-util": "^26.6.2", "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-environment-enzyme": { @@ -32841,6 +36456,12 @@ "supports-color": "^5.3.0" } }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -32987,6 +36608,15 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -33190,18 +36820,6 @@ "type-check": "~0.3.2" } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -33256,6 +36874,15 @@ "word-wrap": "~1.2.3" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -33265,15 +36892,11 @@ "p-limit": "^2.0.0" } }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true }, "parse5": { "version": "4.0.0", @@ -33281,44 +36904,12 @@ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, "read-pkg-up": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", @@ -33342,9 +36933,9 @@ "dev": true }, "stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", "dev": true, "requires": { "escape-string-regexp": "^2.0.0" @@ -33358,12 +36949,6 @@ } } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -33452,9 +37037,9 @@ } }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "dev": true, "requires": { "async-limiter": "~1.0.0" @@ -33474,6 +37059,54 @@ "jest-mock": "^26.6.2", "jest-util": "^26.6.2", "jsdom": "^16.4.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + } } }, "jest-environment-node": { @@ -33487,6 +37120,54 @@ "@types/node": "*", "jest-mock": "^26.6.2", "jest-util": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + } } }, "jest-enzyme": { @@ -33501,9 +37182,11 @@ } }, "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + "version": "27.0.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.1.tgz", + "integrity": "sha512-9Tggo9zZbu0sHKebiAijyt1NM77Z0uO4tuWOxUCujAiSeXv30Vb5D4xVF4UR4YWNapcftj+PbByU54lKD7/xMg==", + "optional": true, + "peer": true }, "jest-haste-map": { "version": "26.6.2", @@ -33524,6 +37207,54 @@ "micromatch": "^4.0.2", "sane": "^4.0.3", "walker": "^1.0.7" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + } } }, "jest-jasmine2": { @@ -33549,6 +37280,65 @@ "jest-util": "^26.6.2", "pretty-format": "^26.6.2", "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-leak-detector": { @@ -33558,6 +37348,44 @@ "requires": { "jest-get-type": "^26.3.0", "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-matcher-utils": { @@ -33569,6 +37397,44 @@ "jest-diff": "^26.6.2", "jest-get-type": "^26.3.0", "pretty-format": "^26.6.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-message-util": { @@ -33585,6 +37451,39 @@ "pretty-format": "^26.6.2", "slash": "^3.0.0", "stack-utils": "^2.0.2" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + } } }, "jest-mock": { @@ -33594,6 +37493,28 @@ "requires": { "@jest/types": "^26.6.2", "@types/node": "*" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + } } }, "jest-pnp-resolver": { @@ -33608,20 +37529,186 @@ "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==" }, "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "version": "27.0.5", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.0.5.tgz", + "integrity": "sha512-Md65pngRh8cRuWVdWznXBB5eDt391OJpdBaJMxfjfuXCvOhM3qQBtLMCMTykhuUKiBMmy5BhqCW7AVOKmPrW+Q==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.2", "chalk": "^4.0.0", + "escalade": "^3.1.1", "graceful-fs": "^4.2.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", + "jest-util": "^27.0.2", + "jest-validate": "^27.0.2", + "resolve": "^1.20.0", "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" }, "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + } + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -33657,43 +37744,6 @@ } } }, - "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", - "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" - } - }, - "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - } - }, "jest-runtime": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", @@ -33726,6 +37776,179 @@ "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^15.4.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } } }, "jest-serializer": { @@ -33760,46 +37983,197 @@ "semver": "^7.3.2" }, "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "requires": { - "lru-cache": "^6.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" } } }, "jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.0.2.tgz", + "integrity": "sha512-1d9uH3a00OFGGWSibpNYr+jojZ6AckOMCXV2Z4K3YXDnzpkAaXQyIpY14FOJPiUmil7CD+A6Qs+lnnh6ctRbIA==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.2", "@types/node": "*", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "is-ci": "^3.0.0", + "picomatch": "^2.2.3" } }, "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.0.2.tgz", + "integrity": "sha512-UgBF6/oVu1ofd1XbaSotXKihi8nZhg0Prm8twQ9uCuAfo59vlxCXMPI/RKmrZEVgi3Nd9dS0I8A0wzWU48pOvg==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", + "@jest/types": "^27.0.2", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", + "jest-get-type": "^27.0.1", "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "pretty-format": "^27.0.2" }, "dependencies": { "camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "optional": true, + "peer": true } } }, @@ -33829,6 +38203,54 @@ "chalk": "^4.0.0", "jest-util": "^26.6.2", "string-length": "^4.0.1" + }, + "dependencies": { + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + } } }, "jest-worker": { @@ -33866,12 +38288,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.1.tgz", - "integrity": "sha512-pF73EOsJgwZekbDHEY5VO/yKXUkab/DuvrQB/ANVizbr6UAHJsDdHXuotZYwkJSGQl1JM+ivXaqY+XBDDL4TiA==", + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.6.0.tgz", + "integrity": "sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==", "requires": { "abab": "^2.0.5", - "acorn": "^8.0.5", + "acorn": "^8.2.4", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", "cssstyle": "^2.3.0", @@ -33879,12 +38301,13 @@ "decimal.js": "^10.2.1", "domexception": "^2.0.1", "escodegen": "^2.0.0", + "form-data": "^3.0.0", "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", "nwsapi": "^2.2.0", "parse5": "6.0.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.9", "saxes": "^5.0.1", "symbol-tree": "^3.2.4", "tough-cookie": "^4.0.0", @@ -33893,15 +38316,15 @@ "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.4.4", + "whatwg-url": "^8.5.0", + "ws": "^7.4.5", "xml-name-validator": "^3.0.0" }, "dependencies": { "acorn": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", - "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==" + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.0.tgz", + "integrity": "sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==" } } }, @@ -34055,28 +38478,29 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" }, "dependencies": { "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "strip-bom": { "version": "3.0.0", @@ -34101,11 +38525,12 @@ } }, "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "^4.1.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -34146,10 +38571,10 @@ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, "lodash.debounce": { "version": "4.0.8", @@ -34213,10 +38638,16 @@ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true }, "lodash.template": { "version": "4.5.0", @@ -34235,6 +38666,11 @@ "lodash._reinterpolate": "^3.0.0" } }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -34292,17 +38728,18 @@ } }, "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "requires": { - "semver": "^6.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "dependencies": { "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -34350,12 +38787,12 @@ "safe-buffer": "^5.1.2" } }, - "mdast-add-list-metadata": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-add-list-metadata/-/mdast-add-list-metadata-1.0.1.tgz", - "integrity": "sha512-fB/VP4MJ0LaRsog7hGPxgOrSL3gE/2uEdZyDuSEnKCv/8IkYHiDkIQSbChiJoHyxZZXZ9bzckyRk+vNxFzh8rA==", + "mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", "requires": { - "unist-util-visit-parents": "1.1.2" + "unist-util-visit": "^2.0.0" } }, "mdast-util-find-and-replace": { @@ -34366,22 +38803,6 @@ "escape-string-regexp": "^4.0.0", "unist-util-is": "^4.0.0", "unist-util-visit-parents": "^3.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - } } }, "mdast-util-from-markdown": { @@ -34443,6 +38864,21 @@ "mdast-util-to-markdown": "~0.6.0" } }, + "mdast-util-to-hast": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", + "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, "mdast-util-to-markdown": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", @@ -34466,15 +38902,20 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "memoize-one": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", - "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, "memory-fs": { "version": "0.4.1", @@ -34631,9 +39072,9 @@ } }, "micromark-extension-gfm-autolink-literal": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.6.tgz", - "integrity": "sha512-nHbR1NUOVhmlZNsnhE5B7WJzL7Xd8lc888z4AF27IpHMtO3NstclZmbrMI+AcdTPpO1wuGVwlK1Cnq+n8Sxlrw==", + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", "requires": { "micromark": "~2.11.3" } @@ -34668,12 +39109,12 @@ } }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" } }, "miller-rabin": { @@ -34698,16 +39139,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" }, "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", "requires": { - "mime-db": "1.46.0" + "mime-db": "1.48.0" } }, "mimic-fn": { @@ -34917,9 +39358,9 @@ "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" }, "nanoid": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.22.tgz", - "integrity": "sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==" + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==" }, "nanomatch": { "version": "1.2.13", @@ -35007,45 +39448,20 @@ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" } }, "node-int64": { @@ -35107,41 +39523,29 @@ "shellwords": "^0.1.1", "uuid": "^8.3.0", "which": "^2.0.2" - }, - "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "optional": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==" }, "node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-6.0.0.tgz", + "integrity": "sha512-GDzDmNgWNc9GNzTcSLTi6DU6mzSPupVJoStIi7cF3GjwSE9q1cVakbvAAVSt59vzUjV9JJoSZFKoo9krbjKd2g==", "requires": { "async-foreach": "^0.1.3", "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", + "cross-spawn": "^7.0.3", "gaze": "^1.0.0", "get-stdin": "^4.0.1", "glob": "^7.0.3", - "in-publish": "^2.0.0", "lodash": "^4.17.15", "meow": "^3.7.0", "mkdirp": "^0.5.1", "nan": "^2.13.2", - "node-gyp": "^3.8.0", + "node-gyp": "^7.1.0", "npmlog": "^4.0.0", "request": "^2.88.0", "sass-graph": "2.2.5", @@ -35171,29 +39575,11 @@ "supports-color": "^2.0.0" } }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -35206,26 +39592,13 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "requires": { "abbrev": "1" } @@ -35239,6 +39612,13 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "normalize-path": { @@ -35285,7 +39665,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", - "dev": true, "requires": { "boolbase": "^1.0.0" } @@ -35382,9 +39761,9 @@ } }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" }, "object-is": { "version": "1.1.5", @@ -35420,14 +39799,13 @@ } }, "object.entries": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", + "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" + "es-abstract": "^1.18.2" } }, "object.fromentries": { @@ -35460,14 +39838,13 @@ } }, "object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.18.2" } }, "obuf": { @@ -35563,25 +39940,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -35593,19 +39951,19 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "p-try": "^2.0.0" + "p-try": "^1.0.0" } }, "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "^2.2.0" + "p-limit": "^1.1.0" } }, "p-map": { @@ -35625,9 +39983,9 @@ } }, "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "pako": { "version": "1.0.11", @@ -35751,9 +40109,9 @@ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, "path-is-absolute": { "version": "1.0.1", @@ -35771,9 +40129,9 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { "version": "1.8.0", @@ -35795,9 +40153,9 @@ "dev": true }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -35812,9 +40170,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" }, "pify": { "version": "4.0.1", @@ -35848,91 +40206,14 @@ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "requires": { "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } } }, "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } + "find-up": "^2.1.0" } }, "pn": { @@ -35949,11 +40230,6 @@ "ts-pnp": "^1.1.6" } }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, "portfinder": { "version": "1.0.28", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", @@ -35980,9 +40256,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -36328,11 +40604,10 @@ } }, "postcss-initial": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", - "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", "requires": { - "lodash.template": "^4.5.0", "postcss": "^7.0.2" } }, @@ -36934,13 +41209,13 @@ }, "dependencies": { "postcss": { - "version": "8.2.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.8.tgz", - "integrity": "sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", "requires": { "colorette": "^1.2.2", - "nanoid": "^3.1.20", - "source-map": "^0.6.1" + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" } } } @@ -36964,22 +41239,19 @@ } }, "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "requires": { "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", "util-deprecate": "^1.0.2" } }, "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "requires": { - "is-svg": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" @@ -37028,9 +41300,9 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", "dev": true }, "prettier-linter-helpers": { @@ -37057,20 +41329,24 @@ } }, "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.0.2.tgz", + "integrity": "sha512-mXKbbBPnYTG7Yra9qFBtqj+IXcsvxsvOBco3QHxtxTl+hHKq6QdzMZ+q0CtL4ORHZgwGImRr2XZUX2EWzORxig==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^26.6.2", + "@jest/types": "^27.0.2", "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", + "ansi-styles": "^5.0.0", "react-is": "^17.0.1" }, "dependencies": { - "react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==" + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true } } }, @@ -37119,25 +41395,29 @@ "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.8.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, - "prop-types-exact": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", - "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", - "dev": true, + "property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", "requires": { - "has": "^1.0.3", - "object.assign": "^4.1.0", - "reflect.ownkeys": "^0.2.0" + "xtend": "^4.0.0" } }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -37146,11 +41426,6 @@ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -37246,9 +41521,9 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "raf": { "version": "3.4.1", @@ -37259,9 +41534,9 @@ } }, "raf-schd": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.2.tgz", - "integrity": "sha512-VhlMZmGy6A6hrkJWHLNTGl5gtgMUm+xfGza6wbwnE914yeQ5Ybm18vgM734RZhMgfw4tacUrWseGZlpUrrakEQ==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" }, "railroad-diagrams": { "version": "1.0.0", @@ -37270,9 +41545,9 @@ "dev": true }, "ramda": { - "version": "0.27.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz", - "integrity": "sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==" + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==" }, "randexp": { "version": "0.4.6", @@ -37331,9 +41606,9 @@ "requires": {} }, "react": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", - "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -37353,29 +41628,30 @@ } }, "react-beautiful-dnd": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.0.0.tgz", - "integrity": "sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.0.tgz", + "integrity": "sha512-aGvblPZTJowOWUNiwd6tNfEpgkX5OxmpqxHKNW/4VmvZTNTbeiq7bA3bn5T+QSF2uibXB0D1DmJsb1aC/+3cUA==", "requires": { - "@babel/runtime": "^7.8.4", + "@babel/runtime": "^7.9.2", "css-box-model": "^1.2.0", "memoize-one": "^5.1.1", "raf-schd": "^4.0.2", - "react-redux": "^7.1.1", + "react-redux": "^7.2.0", "redux": "^4.0.4", "use-memo-one": "^1.1.1" } }, "react-datepicker": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-3.6.0.tgz", - "integrity": "sha512-QCCtC1Y5kXZSbULbP33P2p0yTU+0Det7eBFABVM2k6AqdIvyBHVkO/hlq2WDeHlPtaf+DEniCIYjrv2BFdUMHw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.1.1.tgz", + "integrity": "sha512-vtZIA7MbUrffRw1CHiyOGtmTO/tTdZGr5BYaiRucHMTb6rCqA8TkaQhzX6tTwMwP8vV38Khv4UWohrJbiX1rMw==", "requires": { + "@popperjs/core": "^2.9.2", "classnames": "^2.2.6", "date-fns": "^2.0.1", "prop-types": "^15.7.2", "react-onclickoutside": "^6.10.0", - "react-popper": "^1.3.8" + "react-popper": "^2.2.5" } }, "react-dev-utils": { @@ -37466,6 +41742,20 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -37489,6 +41779,80 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -37500,19 +41864,19 @@ } }, "react-dom": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", - "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "scheduler": "^0.20.1" + "scheduler": "^0.20.2" } }, "react-dropzone": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.3.1.tgz", - "integrity": "sha512-gPyw524T6dYZW81aQoBGmBG90cVNs+YJreh3HaN45Yw09Bm6m4aA6IF9ergHZQAWGeDSJ+DUhDKKAAaDdTj3RQ==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.3.2.tgz", + "integrity": "sha512-Z0l/YHcrNK1r85o6RT77Z5XgTARmlZZGfEKBl3tqTXL9fZNQDuIdRx/J0QjvR60X+yYu26dnHeaG2pWU+1HHvw==", "requires": { "attr-accept": "^2.2.1", "file-selector": "^0.2.2", @@ -37530,12 +41894,12 @@ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" }, "react-i18next": { - "version": "11.8.10", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.8.10.tgz", - "integrity": "sha512-ckjNzMjYkmx4fQ8zzuaYTosYN3Co6ebrgCQJzuZCcGFYSR/kGHZzSu0xw9VhtnbjJVKx0gEMV3DLRvzi4xDZUw==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.11.0.tgz", + "integrity": "sha512-p1jHmoyJgDFQmyubUEjrx6kCsr1izW/C8i9pOiJy+9lJqLYwNA8sElVplm0VAnop3kH68edT0/g3wB3UvAcRCQ==", "requires": { - "@babel/runtime": "^7.13.6", - "html-parse-stringify2": "^2.0.1" + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" } }, "react-input-mask": { @@ -37548,57 +41912,63 @@ } }, "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "react-markdown": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-5.0.3.tgz", - "integrity": "sha512-jDWOc1AvWn0WahpjW6NK64mtx6cwjM4iSsLHJPNBqoAgGOVoIdJMqaKX4++plhOtdd4JksdqzlDibgPx6B/M2w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-6.0.2.tgz", + "integrity": "sha512-Et2AjXAsbmPP1nLQQRqmVgcqzfwcz8uQJ8VAdADs8Nk/aaUA0YeU9RDLuCtD+GwajCnm/+Iiu2KPmXzmD/M3vA==", "requires": { - "@types/mdast": "^3.0.3", + "@types/hast": "^2.0.0", "@types/unist": "^2.0.3", - "html-to-react": "^1.3.4", - "mdast-add-list-metadata": "1.0.1", + "comma-separated-tokens": "^1.0.0", "prop-types": "^15.7.2", - "react-is": "^16.8.6", + "property-information": "^5.0.0", + "react-is": "^17.0.0", "remark-parse": "^9.0.0", + "remark-rehype": "^8.0.0", + "space-separated-tokens": "^1.1.0", + "style-to-object": "^0.3.0", "unified": "^9.0.0", "unist-util-visit": "^2.0.0", - "xtend": "^4.0.1" + "vfile": "^4.0.0" } }, "react-onclickoutside": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.10.0.tgz", - "integrity": "sha512-7i2L3ef+0ILXpL6P+Hg304eCQswh4jl3ynwR71BSlMU49PE2uk31k8B2GkP6yE9s2D4jTGKnzuSpzWxu4YxfQQ==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.11.2.tgz", + "integrity": "sha512-640486eSwU/t5iD6yeTlefma8dI3bxPXD93hM9JGKyYITAd0P1JFkkcDeyHZRqNpY/fv1YW0Fad9BXr44OY8wQ==", "requires": {} }, "react-popper": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-1.3.11.tgz", - "integrity": "sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", + "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", "requires": { - "@babel/runtime": "^7.1.2", - "@hypnosphi/create-react-context": "^0.3.1", - "deep-equal": "^1.1.1", - "popper.js": "^1.14.4", - "prop-types": "^15.6.1", - "typed-styles": "^0.0.7", + "react-fast-compare": "^3.0.1", "warning": "^4.0.2" } }, "react-redux": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.2.tgz", - "integrity": "sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.4.tgz", + "integrity": "sha512-hOQ5eOSkEJEXdpIKbnRyl04LhaWabkDPV+Ix97wqQX3T3d2NQ8DUblNXXtNMavc7DpswyQM6xfaN4HQDKNY2JA==", "requires": { "@babel/runtime": "^7.12.1", + "@types/react-redux": "^7.1.16", "hoist-non-react-statics": "^3.3.2", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", "react-is": "^16.13.1" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, "react-refresh": { @@ -37621,6 +41991,13 @@ "react-is": "^16.6.0", "tiny-invariant": "^1.0.2", "tiny-warning": "^1.0.0" + }, + "dependencies": { + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + } } }, "react-router-dom": { @@ -37638,9 +42015,9 @@ } }, "react-scripts": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.2.tgz", - "integrity": "sha512-okaWNaGDGtnXyM2CLMUl8gYZnAubgxEulC40FYjsxn5bbj+G/mDINdy24wHz4Vypb/LWtIe8rdBU78k/74v8Mw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.3.tgz", + "integrity": "sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A==", "requires": { "@babel/core": "7.12.3", "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", @@ -37667,7 +42044,7 @@ "eslint-plugin-react": "^7.21.5", "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-testing-library": "^3.9.2", - "eslint-webpack-plugin": "^2.1.0", + "eslint-webpack-plugin": "^2.5.2", "file-loader": "6.1.1", "fs-extra": "^9.0.1", "fsevents": "^2.1.3", @@ -37687,7 +42064,7 @@ "postcss-safe-parser": "5.0.2", "prompts": "2.4.0", "react-app-polyfill": "^2.0.0", - "react-dev-utils": "^11.0.2", + "react-dev-utils": "^11.0.3", "react-refresh": "^0.8.3", "resolve": "1.18.1", "resolve-url-loader": "^3.1.2", @@ -37698,7 +42075,7 @@ "ts-pnp": "1.2.0", "url-loader": "4.1.1", "webpack": "4.44.2", - "webpack-dev-server": "3.11.0", + "webpack-dev-server": "3.11.1", "webpack-manifest-plugin": "2.2.0", "workbox-webpack-plugin": "5.1.4" }, @@ -37733,6 +42110,18 @@ } } }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", @@ -37753,19 +42142,67 @@ } } }, + "@types/yargs": { + "version": "15.0.13", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", + "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, "camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" }, - "jest": { - "version": "26.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", - "integrity": "sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==", + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "@jest/core": "^26.6.0", - "import-local": "^3.0.2", - "jest-cli": "^26.6.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-circus": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz", + "integrity": "sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.0", + "@jest/test-result": "^26.6.0", + "@jest/types": "^26.6.0", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.0", + "jest-matcher-utils": "^26.6.0", + "jest-message-util": "^26.6.0", + "jest-runner": "^26.6.0", + "jest-runtime": "^26.6.0", + "jest-snapshot": "^26.6.0", + "jest-util": "^26.6.0", + "pretty-format": "^26.6.0", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" } }, "jest-resolve": { @@ -37783,6 +42220,64 @@ "slash": "^3.0.0" } }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -37857,29 +42352,21 @@ } }, "react-test-renderer": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.1.tgz", - "integrity": "sha512-/dRae3mj6aObwkjCcxZPlxDFh73XZLgvwhhyON2haZGUEhiaY5EjfAdw+d/rQmlcFwdTpMXCSGVk374QbCTlrA==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz", + "integrity": "sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==", "dev": true, "requires": { "object-assign": "^4.1.1", - "react-is": "^17.0.1", + "react-is": "^17.0.2", "react-shallow-renderer": "^16.13.1", - "scheduler": "^0.20.1" - }, - "dependencies": { - "react-is": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", - "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", - "dev": true - } + "scheduler": "^0.20.2" } }, "react-textarea-autosize": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.2.tgz", - "integrity": "sha512-JrMWVgQSaExQByP3ggI1eA8zF4mF0+ddVuX7acUeK2V7bmrpjVOY72vmLz2IXFJSAXoY3D80nEzrn0GWajWK3Q==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.3.tgz", + "integrity": "sha512-2XlHXK2TDxS6vbQaoPbMOfQ8GK7+irc2fVK6QFIcC8GOnH3zI/v481n+j1L0WaPVvKxwesnY93fEfH++sus2rQ==", "requires": { "@babel/runtime": "^7.10.2", "use-composed-ref": "^1.0.0", @@ -37887,82 +42374,37 @@ } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" }, "dependencies": { "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "requires": { - "pify": "^2.0.0" + "pify": "^3.0.0" } }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" } } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "requires": { "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } + "read-pkg": "^3.0.0" } }, "readable-stream": { @@ -37987,9 +42429,9 @@ } }, "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "optional": true, "requires": { "picomatch": "^2.2.1" @@ -38022,12 +42464,11 @@ } }, "redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", - "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", + "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" + "@babel/runtime": "^7.9.2" } }, "redux-logger": { @@ -38065,12 +42506,6 @@ "@redux-saga/core": "^1.1.3" } }, - "reflect.ownkeys": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", - "dev": true - }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -38121,9 +42556,9 @@ } }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" }, "regexpu-core": { "version": "4.7.1", @@ -38144,9 +42579,9 @@ "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "regjsparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", "requires": { "jsesc": "~0.5.0" }, @@ -38180,21 +42615,29 @@ "mdast-util-from-markdown": "^0.8.0" } }, + "remark-rehype": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz", + "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==", + "requires": { + "mdast-util-to-hast": "^10.2.0" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "renderkid": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.5.tgz", - "integrity": "sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "requires": { - "css-select": "^2.0.2", - "dom-converter": "^0.2", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { @@ -38202,105 +42645,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - } - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - } - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -38312,9 +42656,9 @@ } }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" }, "repeat-string": { "version": "1.6.1", @@ -38356,6 +42700,16 @@ "uuid": "^3.3.2" }, "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -38376,6 +42730,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, "requires": { "lodash": "^4.17.19" } @@ -38384,6 +42739,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, "requires": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", @@ -38394,6 +42750,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -38466,9 +42823,9 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "resolve-url-loader": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", - "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz", + "integrity": "sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg==", "requires": { "adjust-sourcemap-loader": "3.0.0", "camelcase": "5.3.1", @@ -38476,68 +42833,25 @@ "convert-source-map": "1.7.0", "es6-iterator": "2.0.3", "loader-utils": "1.2.3", - "postcss": "7.0.21", + "postcss": "7.0.36", "rework": "1.0.1", "rework-visit": "1.0.0", "source-map": "0.6.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { - "color-convert": "^1.9.0" + "safe-buffer": "~5.1.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -38555,24 +42869,6 @@ "emojis-list": "^2.0.0", "json5": "^1.0.1" } - }, - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } } } }, @@ -38952,6 +43248,11 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -39063,6 +43364,14 @@ "path-exists": "^3.0.0" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -39071,10 +43380,10 @@ "p-limit": "^2.0.0" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "string-width": { "version": "3.1.0", @@ -39133,9 +43442,9 @@ } }, "sass-loader": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.1.1.tgz", - "integrity": "sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.0.tgz", + "integrity": "sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw==", "requires": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -39153,14 +43462,6 @@ "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "requires": { - "lru-cache": "^6.0.0" - } } } }, @@ -39178,9 +43479,9 @@ } }, "scheduler": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", - "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -39227,9 +43528,9 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "requires": { "node-forge": "^0.10.0" } @@ -39252,23 +43553,15 @@ "react-is": "^16.8.6 || ^17.0.0", "react-popper": "^2.2.4", "shallowequal": "^1.1.0" - }, - "dependencies": { - "react-popper": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.4.tgz", - "integrity": "sha512-NacOu4zWupdQjVXq02XpTD3yFPSfg5a7fex0wa3uGKVkFK7UN6LvVxgcb+xYr56UCuWiNPMH20tntdVdJRwYew==", - "requires": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" - } - } } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } }, "send": { "version": "0.17.1", @@ -39736,13 +44029,13 @@ } }, "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "requires": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" }, "dependencies": { "uuid": { @@ -39753,16 +44046,16 @@ } }, "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" }, "dependencies": { "debug": { @@ -39772,14 +44065,6 @@ "requires": { "ms": "^2.1.1" } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "requires": { - "websocket-driver": ">=0.5.1" - } } } }, @@ -39801,6 +44086,11 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" + }, "source-map-resolve": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", @@ -39832,6 +44122,11 @@ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -39856,9 +44151,9 @@ } }, "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==" }, "spdy": { "version": "4.0.2", @@ -39945,6 +44240,13 @@ "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", "requires": { "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + } } }, "stackframe": { @@ -40043,7 +44345,8 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true }, "stream-browserify": { "version": "2.0.2", @@ -40133,14 +44436,15 @@ } }, "string.prototype.matchall": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz", - "integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz", + "integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has-symbols": "^1.0.1", + "es-abstract": "^1.18.2", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", "internal-slot": "^1.0.3", "regexp.prototype.flags": "^1.3.1", "side-channel": "^1.0.4" @@ -40239,6 +44543,14 @@ "schema-utils": "^2.7.0" } }, + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "requires": { + "inline-style-parser": "0.1.1" + } + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -40270,9 +44582,9 @@ } }, "supports-hyperlinks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", - "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", "requires": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -40403,31 +44715,28 @@ } } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ajv": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", - "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -40468,13 +44777,23 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "temp-dir": { @@ -40556,6 +44875,31 @@ "pkg-dir": "^4.1.0" } }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -40564,6 +44908,34 @@ "yocto-queue": "^0.1.0" } }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + }, + "dependencies": { + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -40582,10 +44954,15 @@ "ajv-keywords": "^3.5.2" } }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, "terser": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.1.tgz", - "integrity": "sha512-yv9YLFQQ+3ZqgWCUk+pvNJwgUTdlIxUk1WTN+RnaFJe2L7ipG2csPT0ra2XRm7Cs8cxN7QXmK1rFzEwYEQkzXw==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -40743,9 +45120,9 @@ } }, "tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "requires": { "punycode": "^2.1.1" } @@ -40810,9 +45187,9 @@ } }, "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" }, "tsutils": { "version": "3.21.0", @@ -40879,11 +45256,6 @@ "mime-types": "~2.1.24" } }, - "typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -40898,9 +45270,9 @@ } }, "typescript": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", - "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.4.tgz", + "integrity": "sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==", "peer": true }, "typescript-compare": { @@ -40925,14 +45297,14 @@ } }, "unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "requires": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" } }, "unicode-canonical-property-names-ecmascript": { @@ -41031,11 +45403,26 @@ "crypto-random-string": "^1.0.0" } }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" + }, "unist-util-is": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" }, + "unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" + }, "unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -41052,23 +45439,16 @@ "@types/unist": "^2.0.0", "unist-util-is": "^4.0.0", "unist-util-visit-parents": "^3.0.0" - }, - "dependencies": { - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } - } } }, "unist-util-visit-parents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-1.1.2.tgz", - "integrity": "sha512-yvo+MMLjEwdc3RhhPYSximset7rwjMrdt9E41Smmvg25UQIenzrN83cRnF1JMzoMi9zZOQeYXHSDf7p+IQkW3Q==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } }, "universalify": { "version": "2.0.0", @@ -41275,9 +45655,9 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" }, "v8-to-istanbul": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", - "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", "requires": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", @@ -41301,9 +45681,9 @@ } }, "validator": { - "version": "13.5.2", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz", - "integrity": "sha512-mD45p0rvHVBlY2Zuy3F3ESIe1h5X58GPfAtslBjY7EtTqGquZTj+VX/J4RnHWN8FKq0C9WRVt1oWAcytWRuYLQ==" + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==" }, "value-equal": { "version": "1.0.1", @@ -41356,9 +45736,9 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" }, "w3c-hr-time": { "version": "1.0.2", @@ -41865,9 +46245,9 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "requires": { "figgy-pudding": "^3.5.1" } @@ -41924,9 +46304,9 @@ } }, "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", + "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", @@ -41948,11 +46328,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -42236,6 +46616,14 @@ "to-regex": "^3.0.2" } }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -42244,10 +46632,10 @@ "p-limit": "^2.0.0" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pkg-dir": { "version": "3.0.0", @@ -42371,9 +46759,9 @@ } }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "requires": { "async-limiter": "~1.0.0" } @@ -42473,10 +46861,12 @@ } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -42504,12 +46894,12 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" }, "whatwg-url": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", - "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.6.0.tgz", + "integrity": "sha512-os0KkeeqUOl7ccdDT1qqUcS4KH4tcBTSKK5Nl5WKb2lyxInIZ/CpjkqKa1Ss12mjfdcRX9mHmPPs7/SxG1Hbdw==", "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^2.0.2", + "lodash": "^4.7.0", + "tr46": "^2.1.0", "webidl-conversions": "^6.1.0" } }, @@ -42813,9 +47203,9 @@ } }, "ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.0.tgz", + "integrity": "sha512-6ezXvzOZupqKj4jUqbQ9tXuJNo+BR2gU8fFRk3XCP3e0G6WT414u5ELe6Y0vtp7kmSJ3F7YWObSNr1ESsgi4vw==", "requires": {} }, "xml-name-validator": { @@ -42829,9 +47219,9 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" }, "xtend": { "version": "4.0.2", @@ -42839,9 +47229,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" }, "yallist": { "version": "4.0.0", @@ -42876,11 +47266,54 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", diff --git a/client/package.json b/client/package.json index e2f19e70..8cc0b037 100755 --- a/client/package.json +++ b/client/package.json @@ -32,8 +32,7 @@ "extends": [ "airbnb", "airbnb/hooks", - "plugin:prettier/recommended", - "prettier/react" + "plugin:prettier/recommended" ], "rules": { "import/no-extraneous-dependencies": [ @@ -58,28 +57,28 @@ "dependencies": { "classnames": "^2.2.6", "connected-react-router": "^6.8.0", - "date-fns": "^2.17.0", + "date-fns": "^2.22.1", "dequal": "^2.0.2", "history": "^4.10.1", - "i18next": "^19.8.7", - "i18next-browser-languagedetector": "^6.0.1", + "i18next": "^20.3.2", + "i18next-browser-languagedetector": "^6.1.2", "initials": "^3.1.1", "lodash": "^4.17.20", - "node-sass": "^4.14.1", + "node-sass": "^6.0.0", "prop-types": "^15.7.2", "react": "^17.0.1", "react-beautiful-dnd": "^13.0.0", - "react-datepicker": "^3.4.1", + "react-datepicker": "^4.1.1", "react-dom": "^17.0.1", "react-dropzone": "^11.3.1", - "react-i18next": "^11.8.6", + "react-i18next": "^11.11.0", "react-input-mask": "^2.0.4", - "react-markdown": "^5.0.3", - "react-redux": "^7.2.2", + "react-markdown": "^6.0.2", + "react-redux": "^7.2.4", "react-router-dom": "^5.2.0", - "react-scripts": "4.0.2", - "react-textarea-autosize": "^8.3.1", - "redux": "^4.0.5", + "react-scripts": "4.0.3", + "react-textarea-autosize": "^8.3.3", + "redux": "^4.1.0", "redux-logger": "^3.0.6", "redux-orm": "^0.16.2", "redux-saga": "^1.1.3", @@ -88,23 +87,23 @@ "sails.io.js": "^1.2.1", "semantic-ui-react": "^2.0.3", "socket.io-client": "^2.3.1", - "validator": "^13.5.2", + "validator": "^13.6.0", "whatwg-fetch": "^3.5.0" }, "devDependencies": { + "@wojtekmaj/enzyme-adapter-react-17": "^0.6.2", "chai": "^4.3.0", "enzyme": "^3.11.0", - "enzyme-adapter-react-16": "^1.15.6", - "eslint": "^7.19.0", + "eslint": "^7.29.0", "eslint-config-airbnb": "^18.2.1", - "eslint-config-prettier": "^7.2.0", - "eslint-plugin-import": "^2.22.1", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.23.4", "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-react": "^7.22.0", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0", "jest-enzyme": "^7.1.2", - "prettier": "2.2.1", + "prettier": "2.3.1", "react-test-renderer": "^17.0.1" } } diff --git a/client/src/actions/action.js b/client/src/actions/action.js index 820d9e46..b0c6fd68 100644 --- a/client/src/actions/action.js +++ b/client/src/actions/action.js @@ -1,23 +1,21 @@ import ActionTypes from '../constants/ActionTypes'; -/* Events */ - -export const createActionReceived = (action) => ({ - type: ActionTypes.ACTION_CREATE_RECEIVED, +export const handleActionCreate = (action) => ({ + type: ActionTypes.ACTION_CREATE_HANDLE, payload: { action, }, }); -export const updateActionReceived = (action) => ({ - type: ActionTypes.ACTION_UPDATE_RECEIVED, +export const handleActionUpdate = (action) => ({ + type: ActionTypes.ACTION_UPDATE_HANDLE, payload: { action, }, }); -export const deleteActionReceived = (action) => ({ - type: ActionTypes.ACTION_DELETE_RECEIVED, +export const handleActionDelete = (action) => ({ + type: ActionTypes.ACTION_DELETE_HANDLE, payload: { action, }, diff --git a/client/src/actions/actions.js b/client/src/actions/actions.js index f5453e3a..b6678e75 100644 --- a/client/src/actions/actions.js +++ b/client/src/actions/actions.js @@ -1,16 +1,15 @@ import ActionTypes from '../constants/ActionTypes'; -/* Events */ - -export const fetchActionsRequested = (cardId) => ({ - type: ActionTypes.ACTIONS_FETCH_REQUESTED, +// eslint-disable-next-line import/prefer-default-export +export const fetchActions = (cardId) => ({ + type: ActionTypes.ACTIONS_FETCH, payload: { cardId, }, }); -export const fetchActionsSucceeded = (cardId, actions, users) => ({ - type: ActionTypes.ACTIONS_FETCH_SUCCEEDED, +fetchActions.success = (cardId, actions, users) => ({ + type: ActionTypes.ACTIONS_FETCH__SUCCESS, payload: { cardId, actions, @@ -18,8 +17,8 @@ export const fetchActionsSucceeded = (cardId, actions, users) => ({ }, }); -export const fetchActionsFailed = (cardId, error) => ({ - type: ActionTypes.ACTIONS_FETCH_FAILED, +fetchActions.failure = (cardId, error) => ({ + type: ActionTypes.ACTIONS_FETCH__FAILURE, payload: { cardId, error, diff --git a/client/src/actions/attachment.js b/client/src/actions/attachment.js index e81bb9ed..b89e5af0 100644 --- a/client/src/actions/attachment.js +++ b/client/src/actions/attachment.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createAttachment = (attachment) => ({ type: ActionTypes.ATTACHMENT_CREATE, payload: { @@ -9,6 +7,29 @@ export const createAttachment = (attachment) => ({ }, }); +createAttachment.success = (localId, attachment) => ({ + type: ActionTypes.ATTACHMENT_CREATE__SUCCESS, + payload: { + localId, + attachment, + }, +}); + +createAttachment.failure = (localId, error) => ({ + type: ActionTypes.ATTACHMENT_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleAttachmentCreate = (attachment) => ({ + type: ActionTypes.ATTACHMENT_CREATE_HANDLE, + payload: { + attachment, + }, +}); + export const updateAttachment = (id, data) => ({ type: ActionTypes.ATTACHMENT_UPDATE, payload: { @@ -17,6 +38,28 @@ export const updateAttachment = (id, data) => ({ }, }); +updateAttachment.success = (attachment) => ({ + type: ActionTypes.ATTACHMENT_UPDATE__SUCCESS, + payload: { + attachment, + }, +}); + +updateAttachment.failure = (id, error) => ({ + type: ActionTypes.ATTACHMENT_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleAttachmentUpdate = (attachment) => ({ + type: ActionTypes.ATTACHMENT_UPDATE_HANDLE, + payload: { + attachment, + }, +}); + export const deleteAttachment = (id) => ({ type: ActionTypes.ATTACHMENT_DELETE, payload: { @@ -24,93 +67,23 @@ export const deleteAttachment = (id) => ({ }, }); -/* Events */ - -export const createAttachmentRequested = (localId, data) => ({ - type: ActionTypes.ATTACHMENT_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createAttachmentSucceeded = (localId, attachment) => ({ - type: ActionTypes.ATTACHMENT_CREATE_SUCCEEDED, - payload: { - localId, - attachment, - }, -}); - -export const createAttachmentFailed = (localId, error) => ({ - type: ActionTypes.ATTACHMENT_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const createAttachmentReceived = (attachment) => ({ - type: ActionTypes.ATTACHMENT_CREATE_RECEIVED, +deleteAttachment.success = (attachment) => ({ + type: ActionTypes.ATTACHMENT_DELETE__SUCCESS, payload: { attachment, }, }); -export const updateAttachmentRequested = (id, data) => ({ - type: ActionTypes.ATTACHMENT_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateAttachmentSucceeded = (attachment) => ({ - type: ActionTypes.ATTACHMENT_UPDATE_SUCCEEDED, - payload: { - attachment, - }, -}); - -export const updateAttachmentFailed = (id, error) => ({ - type: ActionTypes.ATTACHMENT_UPDATE_FAILED, +deleteAttachment.failure = (id, error) => ({ + type: ActionTypes.ATTACHMENT_DELETE__FAILURE, payload: { id, error, }, }); -export const updateAttachmentReceived = (attachment) => ({ - type: ActionTypes.ATTACHMENT_UPDATE_RECEIVED, - payload: { - attachment, - }, -}); - -export const deleteAttachmentRequested = (id) => ({ - type: ActionTypes.ATTACHMENT_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteAttachmentSucceeded = (attachment) => ({ - type: ActionTypes.ATTACHMENT_DELETE_SUCCEEDED, - payload: { - attachment, - }, -}); - -export const deleteAttachmentFailed = (id, error) => ({ - type: ActionTypes.ATTACHMENT_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteAttachmentReceived = (attachment) => ({ - type: ActionTypes.ATTACHMENT_DELETE_RECEIVED, +export const handleAttachmentDelete = (attachment) => ({ + type: ActionTypes.ATTACHMENT_DELETE_HANDLE, payload: { attachment, }, diff --git a/client/src/actions/board-membership.js b/client/src/actions/board-membership.js new file mode 100644 index 00000000..c6b2a568 --- /dev/null +++ b/client/src/actions/board-membership.js @@ -0,0 +1,97 @@ +import ActionTypes from '../constants/ActionTypes'; + +export const createBoardMembership = (boardMembership) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_CREATE, + payload: { + boardMembership, + }, +}); + +createBoardMembership.success = (localId, boardMembership) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_CREATE__SUCCESS, + payload: { + localId, + boardMembership, + }, +}); + +createBoardMembership.failure = (localId, error) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleBoardMembershipCreate = ( + boardMembership, + project, + board, + users, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, +) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE, + payload: { + boardMembership, + project, + board, + users, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + }, +}); + +handleBoardMembershipCreate.fetchProject = (id, currentUserId, currentBoardId) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE__PROJECT_FETCH, + payload: { + id, + currentUserId, + currentBoardId, + }, +}); + +export const deleteBoardMembership = (id) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_DELETE, + payload: { + id, + }, +}); + +deleteBoardMembership.success = (boardMembership) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_DELETE__SUCCESS, + payload: { + boardMembership, + }, +}); + +deleteBoardMembership.failure = (id, error) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_DELETE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleBoardMembershipDelete = (boardMembership) => ({ + type: ActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE, + payload: { + boardMembership, + }, +}); diff --git a/client/src/actions/board.js b/client/src/actions/board.js index acf3519e..23e336f9 100644 --- a/client/src/actions/board.js +++ b/client/src/actions/board.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createBoard = (board) => ({ type: ActionTypes.BOARD_CREATE, payload: { @@ -9,6 +7,74 @@ export const createBoard = (board) => ({ }, }); +createBoard.success = (localId, board, boardMemberships) => ({ + type: ActionTypes.BOARD_CREATE__SUCCESS, + payload: { + localId, + board, + boardMemberships, + }, +}); + +createBoard.failure = (localId, error) => ({ + type: ActionTypes.BOARD_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleBoardCreate = (board) => ({ + type: ActionTypes.BOARD_CREATE_HANDLE, + payload: { + board, + }, +}); + +export const fetchBoard = (id) => ({ + type: ActionTypes.BOARD_FETCH, + payload: { + id, + }, +}); + +fetchBoard.success = ( + board, + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, +) => ({ + type: ActionTypes.BOARD_FETCH__SUCCESS, + payload: { + board, + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + }, +}); + +fetchBoard.failure = (id, error) => ({ + type: ActionTypes.BOARD_FETCH__FAILURE, + payload: { + id, + error, + }, +}); + export const updateBoard = (id, data) => ({ type: ActionTypes.BOARD_UPDATE, payload: { @@ -17,6 +83,28 @@ export const updateBoard = (id, data) => ({ }, }); +updateBoard.success = (board) => ({ + type: ActionTypes.BOARD_UPDATE__SUCCESS, + payload: { + board, + }, +}); + +updateBoard.failure = (id, error) => ({ + type: ActionTypes.BOARD_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleBoardUpdate = (board) => ({ + type: ActionTypes.BOARD_UPDATE_HANDLE, + payload: { + board, + }, +}); + export const deleteBoard = (id) => ({ type: ActionTypes.BOARD_DELETE, payload: { @@ -24,135 +112,23 @@ export const deleteBoard = (id) => ({ }, }); -/* Events */ - -export const createBoardRequested = (localId, data) => ({ - type: ActionTypes.BOARD_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createBoardSucceeded = (localId, board, lists, labels) => ({ - type: ActionTypes.BOARD_CREATE_SUCCEEDED, - payload: { - localId, - board, - lists, - labels, - }, -}); - -export const createBoardFailed = (localId, error) => ({ - type: ActionTypes.BOARD_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const createBoardReceived = (board, lists, labels) => ({ - type: ActionTypes.BOARD_CREATE_RECEIVED, +deleteBoard.success = (board) => ({ + type: ActionTypes.BOARD_DELETE__SUCCESS, payload: { board, - lists, - labels, }, }); -export const fetchBoardRequested = (id) => ({ - type: ActionTypes.BOARD_FETCH_REQUESTED, - payload: { - id, - }, -}); - -export const fetchBoardSucceeded = ( - board, - labels, - lists, - cards, - cardMemberships, - cardLabels, - tasks, - attachments, -) => ({ - type: ActionTypes.BOARD_FETCH_SUCCEEDED, - payload: { - board, - labels, - lists, - cards, - cardMemberships, - cardLabels, - tasks, - attachments, - }, -}); - -export const fetchBoardFailed = (id, error) => ({ - type: ActionTypes.BOARD_FETCH_FAILED, +deleteBoard.failure = (id, error) => ({ + type: ActionTypes.BOARD_DELETE__FAILURE, payload: { id, error, }, }); -export const updateBoardRequested = (id, data) => ({ - type: ActionTypes.BOARD_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateBoardSucceeded = (board) => ({ - type: ActionTypes.BOARD_UPDATE_SUCCEEDED, - payload: { - board, - }, -}); - -export const updateBoardFailed = (id, error) => ({ - type: ActionTypes.BOARD_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const updateBoardReceived = (board) => ({ - type: ActionTypes.BOARD_UPDATE_RECEIVED, - payload: { - board, - }, -}); - -export const deleteBoardRequested = (id) => ({ - type: ActionTypes.BOARD_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteBoardSucceeded = (board) => ({ - type: ActionTypes.BOARD_DELETE_SUCCEEDED, - payload: { - board, - }, -}); - -export const deleteBoardFailed = (id, error) => ({ - type: ActionTypes.BOARD_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteBoardReceived = (board) => ({ - type: ActionTypes.BOARD_DELETE_RECEIVED, +export const handleBoardDelete = (board) => ({ + type: ActionTypes.BOARD_DELETE_HANDLE, payload: { board, }, diff --git a/client/src/actions/card-label.js b/client/src/actions/card-label.js deleted file mode 100644 index e302d412..00000000 --- a/client/src/actions/card-label.js +++ /dev/null @@ -1,62 +0,0 @@ -import ActionTypes from '../constants/ActionTypes'; - -/* Events */ - -export const createCardLabelRequested = (data) => ({ - type: ActionTypes.CARD_LABEL_CREATE_REQUESTED, - payload: { - data, - }, -}); - -export const createCardLabelSucceeded = (cardLabel) => ({ - type: ActionTypes.CARD_LABEL_CREATE_SUCCEEDED, - payload: { - cardLabel, - }, -}); - -export const createCardLabelFailed = (error) => ({ - type: ActionTypes.CARD_LABEL_CREATE_FAILED, - payload: { - error, - }, -}); - -export const createCardLabelReceived = (cardLabel) => ({ - type: ActionTypes.CARD_LABEL_CREATE_RECEIVED, - payload: { - cardLabel, - }, -}); - -export const deleteCardLabelRequested = (cardId, labelId) => ({ - type: ActionTypes.CARD_LABEL_DELETE_REQUESTED, - payload: { - cardId, - labelId, - }, -}); - -export const deleteCardLabelSucceeded = (cardLabel) => ({ - type: ActionTypes.CARD_LABEL_DELETE_SUCCEEDED, - payload: { - cardLabel, - }, -}); - -export const deleteCardLabelFailed = (cardId, labelId, error) => ({ - type: ActionTypes.CARD_LABEL_DELETE_FAILED, - payload: { - cardId, - labelId, - error, - }, -}); - -export const deleteCardLabelReceived = (cardLabel) => ({ - type: ActionTypes.CARD_LABEL_DELETE_RECEIVED, - payload: { - cardLabel, - }, -}); diff --git a/client/src/actions/card-membership.js b/client/src/actions/card-membership.js deleted file mode 100644 index c870562d..00000000 --- a/client/src/actions/card-membership.js +++ /dev/null @@ -1,62 +0,0 @@ -import ActionTypes from '../constants/ActionTypes'; - -/* Events */ - -export const createCardMembershipRequested = (data) => ({ - type: ActionTypes.CARD_MEMBERSHIP_CREATE_REQUESTED, - payload: { - data, - }, -}); - -export const createCardMembershipSucceeded = (cardMembership) => ({ - type: ActionTypes.CARD_MEMBERSHIP_CREATE_SUCCEEDED, - payload: { - cardMembership, - }, -}); - -export const createCardMembershipFailed = (error) => ({ - type: ActionTypes.CARD_MEMBERSHIP_CREATE_FAILED, - payload: { - error, - }, -}); - -export const createCardMembershipReceived = (cardMembership) => ({ - type: ActionTypes.CARD_MEMBERSHIP_CREATE_RECEIVED, - payload: { - cardMembership, - }, -}); - -export const deleteCardMembershipRequested = (cardId, userId) => ({ - type: ActionTypes.CARD_MEMBERSHIP_DELETE_REQUESTED, - payload: { - cardId, - userId, - }, -}); - -export const deleteCardMembershipSucceeded = (cardMembership) => ({ - type: ActionTypes.CARD_MEMBERSHIP_DELETE_SUCCEEDED, - payload: { - cardMembership, - }, -}); - -export const deleteCardMembershipFailed = (cardId, userId, error) => ({ - type: ActionTypes.CARD_MEMBERSHIP_DELETE_FAILED, - payload: { - cardId, - userId, - error, - }, -}); - -export const deleteCardMembershipReceived = (cardMembership) => ({ - type: ActionTypes.CARD_MEMBERSHIP_DELETE_RECEIVED, - payload: { - cardMembership, - }, -}); diff --git a/client/src/actions/card.js b/client/src/actions/card.js index 08fcc03b..1efb3473 100644 --- a/client/src/actions/card.js +++ b/client/src/actions/card.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createCard = (card) => ({ type: ActionTypes.CARD_CREATE, payload: { @@ -9,6 +7,29 @@ export const createCard = (card) => ({ }, }); +createCard.success = (localId, card) => ({ + type: ActionTypes.CARD_CREATE__SUCCESS, + payload: { + localId, + card, + }, +}); + +createCard.failure = (localId, error) => ({ + type: ActionTypes.CARD_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleCardCreate = (card) => ({ + type: ActionTypes.CARD_CREATE_HANDLE, + payload: { + card, + }, +}); + export const updateCard = (id, data) => ({ type: ActionTypes.CARD_UPDATE, payload: { @@ -17,6 +38,28 @@ export const updateCard = (id, data) => ({ }, }); +updateCard.success = (card) => ({ + type: ActionTypes.CARD_UPDATE__SUCCESS, + payload: { + card, + }, +}); + +updateCard.failure = (id, error) => ({ + type: ActionTypes.CARD_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleCardUpdate = (card) => ({ + type: ActionTypes.CARD_UPDATE_HANDLE, + payload: { + card, + }, +}); + export const deleteCard = (id) => ({ type: ActionTypes.CARD_DELETE, payload: { @@ -24,130 +67,23 @@ export const deleteCard = (id) => ({ }, }); -/* Events */ - -export const createCardRequested = (localId, data) => ({ - type: ActionTypes.CARD_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createCardSucceeded = ( - localId, - card, - cardMemberships, - cardLabels, - tasks, - attachments, -) => ({ - type: ActionTypes.CARD_CREATE_SUCCEEDED, - payload: { - localId, - card, - cardMemberships, - cardLabels, - tasks, - attachments, - }, -}); - -export const createCardFailed = (localId, error) => ({ - type: ActionTypes.CARD_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const createCardReceived = (card, cardMemberships, cardLabels, tasks, attachments) => ({ - type: ActionTypes.CARD_CREATE_RECEIVED, - payload: { - card, - cardMemberships, - cardLabels, - tasks, - attachments, - }, -}); - -export const fetchCardRequested = (id) => ({ - type: ActionTypes.CARD_FETCH_REQUESTED, - payload: { - id, - }, -}); - -export const fetchCardSucceeded = (card) => ({ - type: ActionTypes.CARD_FETCH_SUCCEEDED, +deleteCard.success = (card) => ({ + type: ActionTypes.CARD_DELETE__SUCCESS, payload: { card, }, }); -export const fetchCardFailed = (id, error) => ({ - type: ActionTypes.CARD_FETCH_FAILED, +deleteCard.failure = (id, error) => ({ + type: ActionTypes.CARD_DELETE__FAILURE, payload: { id, error, }, }); -export const updateCardRequested = (id, data) => ({ - type: ActionTypes.CARD_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateCardSucceeded = (card) => ({ - type: ActionTypes.CARD_UPDATE_SUCCEEDED, - payload: { - card, - }, -}); - -export const updateCardFailed = (id, error) => ({ - type: ActionTypes.CARD_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const updateCardReceived = (card) => ({ - type: ActionTypes.CARD_UPDATE_RECEIVED, - payload: { - card, - }, -}); - -export const deleteCardRequested = (id) => ({ - type: ActionTypes.CARD_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteCardSucceeded = (card) => ({ - type: ActionTypes.CARD_DELETE_SUCCEEDED, - payload: { - card, - }, -}); - -export const deleteCardFailed = (id, error) => ({ - type: ActionTypes.CARD_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteCardReceived = (card) => ({ - type: ActionTypes.CARD_DELETE_RECEIVED, +export const handleCardDelete = (card) => ({ + type: ActionTypes.CARD_DELETE_HANDLE, payload: { card, }, diff --git a/client/src/actions/comment-action.js b/client/src/actions/comment-action.js index 8ffdeb59..b9443e30 100644 --- a/client/src/actions/comment-action.js +++ b/client/src/actions/comment-action.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createCommentAction = (action) => ({ type: ActionTypes.COMMENT_ACTION_CREATE, payload: { @@ -9,6 +7,22 @@ export const createCommentAction = (action) => ({ }, }); +createCommentAction.success = (localId, action) => ({ + type: ActionTypes.COMMENT_ACTION_CREATE__SUCCESS, + payload: { + localId, + action, + }, +}); + +createCommentAction.failure = (localId, error) => ({ + type: ActionTypes.COMMENT_ACTION_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + export const updateCommentAction = (id, data) => ({ type: ActionTypes.COMMENT_ACTION_UPDATE, payload: { @@ -17,6 +31,21 @@ export const updateCommentAction = (id, data) => ({ }, }); +updateCommentAction.success = (action) => ({ + type: ActionTypes.COMMENT_ACTION_UPDATE__SUCCESS, + payload: { + action, + }, +}); + +updateCommentAction.failure = (id, error) => ({ + type: ActionTypes.COMMENT_ACTION_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + export const deleteCommentAction = (id) => ({ type: ActionTypes.COMMENT_ACTION_DELETE, payload: { @@ -24,71 +53,15 @@ export const deleteCommentAction = (id) => ({ }, }); -/* Events */ - -export const createCommentActionRequested = (localId, data) => ({ - type: ActionTypes.COMMENT_ACTION_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createCommentActionSucceeded = (localId, action) => ({ - type: ActionTypes.COMMENT_ACTION_CREATE_SUCCEEDED, - payload: { - localId, - action, - }, -}); - -export const createCommentActionFailed = (localId, error) => ({ - type: ActionTypes.COMMENT_ACTION_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const updateCommentActionRequested = (id, data) => ({ - type: ActionTypes.COMMENT_ACTION_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateCommentActionSucceeded = (action) => ({ - type: ActionTypes.COMMENT_ACTION_UPDATE_SUCCEEDED, +deleteCommentAction.success = (action) => ({ + type: ActionTypes.COMMENT_ACTION_DELETE__SUCCESS, payload: { action, }, }); -export const updateCommentActionFailed = (id, error) => ({ - type: ActionTypes.COMMENT_ACTION_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteCommentActionRequested = (id) => ({ - type: ActionTypes.COMMENT_ACTION_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteCommentActionSucceeded = (action) => ({ - type: ActionTypes.COMMENT_ACTION_DELETE_SUCCEEDED, - payload: { - action, - }, -}); - -export const deleteCommentActionFailed = (id, error) => ({ - type: ActionTypes.COMMENT_ACTION_DELETE_FAILED, +deleteCommentAction.failure = (id, error) => ({ + type: ActionTypes.COMMENT_ACTION_DELETE__FAILURE, payload: { id, error, diff --git a/client/src/actions/core.js b/client/src/actions/core.js index 4b936a55..b81f1768 100644 --- a/client/src/actions/core.js +++ b/client/src/actions/core.js @@ -1,9 +1,41 @@ import ActionTypes from '../constants/ActionTypes'; -/* Events */ - // eslint-disable-next-line import/prefer-default-export -export const coreInitialized = () => ({ - type: ActionTypes.CORE_INITIALIZED, - payload: {}, +export const initializeCore = ( + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, +) => ({ + type: ActionTypes.CORE_INITIALIZE, + payload: { + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, + }, }); diff --git a/client/src/actions/entry/action.js b/client/src/actions/entry/action.js new file mode 100644 index 00000000..01cd322c --- /dev/null +++ b/client/src/actions/entry/action.js @@ -0,0 +1,22 @@ +import EntryActionTypes from '../../constants/EntryActionTypes'; + +export const handleActionCreate = (action) => ({ + type: EntryActionTypes.ACTION_CREATE_HANDLE, + payload: { + action, + }, +}); + +export const handleActionUpdate = (action) => ({ + type: EntryActionTypes.ACTION_UPDATE_HANDLE, + payload: { + action, + }, +}); + +export const handleActionDelete = (action) => ({ + type: EntryActionTypes.ACTION_DELETE_HANDLE, + payload: { + action, + }, +}); diff --git a/client/src/actions/entry/attachment.js b/client/src/actions/entry/attachment.js index 8940f5ab..128a120c 100644 --- a/client/src/actions/entry/attachment.js +++ b/client/src/actions/entry/attachment.js @@ -7,6 +7,14 @@ export const createAttachmentInCurrentCard = (data) => ({ }, }); +export const handleAttachmentCreate = (attachment, requestId) => ({ + type: EntryActionTypes.ATTACHMENT_CREATE_HANDLE, + payload: { + attachment, + requestId, + }, +}); + export const updateAttachment = (id, data) => ({ type: EntryActionTypes.ATTACHMENT_UPDATE, payload: { @@ -15,9 +23,23 @@ export const updateAttachment = (id, data) => ({ }, }); +export const handleAttachmentUpdate = (attachment) => ({ + type: EntryActionTypes.ATTACHMENT_UPDATE_HANDLE, + payload: { + attachment, + }, +}); + export const deleteAttachment = (id) => ({ type: EntryActionTypes.ATTACHMENT_DELETE, payload: { id, }, }); + +export const handleAttachmentDelete = (attachment) => ({ + type: EntryActionTypes.ATTACHMENT_DELETE_HANDLE, + payload: { + attachment, + }, +}); diff --git a/client/src/actions/entry/board-membership.js b/client/src/actions/entry/board-membership.js new file mode 100644 index 00000000..109ec360 --- /dev/null +++ b/client/src/actions/entry/board-membership.js @@ -0,0 +1,29 @@ +import EntryActionTypes from '../../constants/EntryActionTypes'; + +export const createMembershipInCurrentBoard = (data) => ({ + type: EntryActionTypes.MEMBERSHIP_IN_CURRENT_BOARD_CREATE, + payload: { + data, + }, +}); + +export const handleBoardMembershipCreate = (boardMembership) => ({ + type: EntryActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE, + payload: { + boardMembership, + }, +}); + +export const deleteBoardMembership = (id) => ({ + type: EntryActionTypes.BOARD_MEMBERSHIP_DELETE, + payload: { + id, + }, +}); + +export const handleBoardMembershipDelete = (boardMembership) => ({ + type: EntryActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE, + payload: { + boardMembership, + }, +}); diff --git a/client/src/actions/entry/board.js b/client/src/actions/entry/board.js index 32e97848..e9e4fd4c 100755 --- a/client/src/actions/entry/board.js +++ b/client/src/actions/entry/board.js @@ -7,6 +7,13 @@ export const createBoardInCurrentProject = (data) => ({ }, }); +export const handleBoardCreate = (board) => ({ + type: EntryActionTypes.BOARD_CREATE_HANDLE, + payload: { + board, + }, +}); + export const fetchBoard = (id) => ({ type: EntryActionTypes.BOARD_FETCH, payload: { @@ -22,6 +29,13 @@ export const updateBoard = (id, data) => ({ }, }); +export const handleBoardUpdate = (board) => ({ + type: EntryActionTypes.BOARD_UPDATE_HANDLE, + payload: { + board, + }, +}); + export const moveBoard = (id, index) => ({ type: EntryActionTypes.BOARD_MOVE, payload: { @@ -36,3 +50,10 @@ export const deleteBoard = (id) => ({ id, }, }); + +export const handleBoardDelete = (board) => ({ + type: EntryActionTypes.BOARD_DELETE_HANDLE, + payload: { + board, + }, +}); diff --git a/client/src/actions/entry/card.js b/client/src/actions/entry/card.js index 76a9129e..1382448d 100755 --- a/client/src/actions/entry/card.js +++ b/client/src/actions/entry/card.js @@ -8,6 +8,13 @@ export const createCard = (listId, data) => ({ }, }); +export const handleCardCreate = (card) => ({ + type: EntryActionTypes.CARD_CREATE_HANDLE, + payload: { + card, + }, +}); + export const updateCard = (id, data) => ({ type: EntryActionTypes.CARD_UPDATE, payload: { @@ -23,6 +30,13 @@ export const updateCurrentCard = (data) => ({ }, }); +export const handleCardUpdate = (card) => ({ + type: EntryActionTypes.CARD_UPDATE_HANDLE, + payload: { + card, + }, +}); + export const moveCard = (id, listId, index = 0) => ({ type: EntryActionTypes.CARD_MOVE, payload: { @@ -70,3 +84,10 @@ export const deleteCurrentCard = () => ({ type: EntryActionTypes.CURRENT_CARD_DELETE, payload: {}, }); + +export const handleCardDelete = (card) => ({ + type: EntryActionTypes.CARD_DELETE_HANDLE, + payload: { + card, + }, +}); diff --git a/client/src/actions/entry/core.js b/client/src/actions/entry/core.js new file mode 100644 index 00000000..b6aa410b --- /dev/null +++ b/client/src/actions/entry/core.js @@ -0,0 +1,7 @@ +import EntryActionTypes from '../../constants/EntryActionTypes'; + +// eslint-disable-next-line import/prefer-default-export +export const initializeCore = () => ({ + type: EntryActionTypes.CORE_INITIALIZE, + payload: {}, +}); diff --git a/client/src/actions/entry/index.js b/client/src/actions/entry/index.js index 39449483..56339dcc 100755 --- a/client/src/actions/entry/index.js +++ b/client/src/actions/entry/index.js @@ -1,14 +1,18 @@ +export * from './socket'; export * from './login'; +export * from './core'; export * from './modal'; export * from './user'; export * from './project'; -export * from './project-membership'; +export * from './project-manager'; export * from './board'; +export * from './board-membership'; export * from './label'; export * from './list'; export * from './card'; export * from './task'; export * from './attachment'; export * from './actions'; +export * from './action'; export * from './comment-action'; export * from './notification'; diff --git a/client/src/actions/entry/label.js b/client/src/actions/entry/label.js index ca14a7e6..cec6baec 100755 --- a/client/src/actions/entry/label.js +++ b/client/src/actions/entry/label.js @@ -7,6 +7,13 @@ export const createLabelInCurrentBoard = (data) => ({ }, }); +export const handleLabelCreate = (label) => ({ + type: EntryActionTypes.LABEL_CREATE_HANDLE, + payload: { + label, + }, +}); + export const updateLabel = (id, data) => ({ type: EntryActionTypes.LABEL_UPDATE, payload: { @@ -15,6 +22,13 @@ export const updateLabel = (id, data) => ({ }, }); +export const handleLabelUpdate = (label) => ({ + type: EntryActionTypes.LABEL_UPDATE_HANDLE, + payload: { + label, + }, +}); + export const deleteLabel = (id) => ({ type: EntryActionTypes.LABEL_DELETE, payload: { @@ -22,6 +36,13 @@ export const deleteLabel = (id) => ({ }, }); +export const handleLabelDelete = (label) => ({ + type: EntryActionTypes.LABEL_DELETE_HANDLE, + payload: { + label, + }, +}); + export const addLabelToCard = (id, cardId) => ({ type: EntryActionTypes.LABEL_TO_CARD_ADD, payload: { @@ -37,6 +58,13 @@ export const addLabelToCurrentCard = (id) => ({ }, }); +export const handleLabelToCardAdd = (cardLabel) => ({ + type: EntryActionTypes.LABEL_TO_CARD_ADD_HANDLE, + payload: { + cardLabel, + }, +}); + export const removeLabelFromCard = (id, cardId) => ({ type: EntryActionTypes.LABEL_FROM_CARD_REMOVE, payload: { @@ -52,6 +80,13 @@ export const removeLabelFromCurrentCard = (id) => ({ }, }); +export const handleLabelFromCardRemove = (cardLabel) => ({ + type: EntryActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE, + payload: { + cardLabel, + }, +}); + export const addLabelToFilterInCurrentBoard = (id) => ({ type: EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD, payload: { diff --git a/client/src/actions/entry/list.js b/client/src/actions/entry/list.js index eec01b07..9a7446a2 100755 --- a/client/src/actions/entry/list.js +++ b/client/src/actions/entry/list.js @@ -7,6 +7,13 @@ export const createListInCurrentBoard = (data) => ({ }, }); +export const handleListCreate = (list) => ({ + type: EntryActionTypes.LIST_CREATE_HANDLE, + payload: { + list, + }, +}); + export const updateList = (id, data) => ({ type: EntryActionTypes.LIST_UPDATE, payload: { @@ -15,6 +22,13 @@ export const updateList = (id, data) => ({ }, }); +export const handleListUpdate = (list) => ({ + type: EntryActionTypes.LIST_UPDATE_HANDLE, + payload: { + list, + }, +}); + export const moveList = (id, index) => ({ type: EntryActionTypes.LIST_MOVE, payload: { @@ -29,3 +43,10 @@ export const deleteList = (id) => ({ id, }, }); + +export const handleListDelete = (list) => ({ + type: EntryActionTypes.LIST_DELETE_HANDLE, + payload: { + list, + }, +}); diff --git a/client/src/actions/entry/modal.js b/client/src/actions/entry/modal.js index f300dbb7..f0b882de 100755 --- a/client/src/actions/entry/modal.js +++ b/client/src/actions/entry/modal.js @@ -22,6 +22,13 @@ export const openProjectAddModal = () => ({ }, }); +export const openProjectSettingsModal = () => ({ + type: EntryActionTypes.MODAL_OPEN, + payload: { + type: ModalTypes.PROJECT_SETTINGS, + }, +}); + export const closeModal = () => ({ type: EntryActionTypes.MODAL_CLOSE, payload: {}, diff --git a/client/src/actions/entry/notification.js b/client/src/actions/entry/notification.js index 2a586da6..0f2a7395 100755 --- a/client/src/actions/entry/notification.js +++ b/client/src/actions/entry/notification.js @@ -1,9 +1,22 @@ import EntryActionTypes from '../../constants/EntryActionTypes'; -// eslint-disable-next-line import/prefer-default-export +export const handleNotificationCreate = (notification) => ({ + type: EntryActionTypes.NOTIFICATION_CREATE_HANDLE, + payload: { + notification, + }, +}); + export const deleteNotification = (id) => ({ type: EntryActionTypes.NOTIFICATION_DELETE, payload: { id, }, }); + +export const handleNotificationDelete = (notification) => ({ + type: EntryActionTypes.NOTIFICATION_DELETE_HANDLE, + payload: { + notification, + }, +}); diff --git a/client/src/actions/entry/project-manager.js b/client/src/actions/entry/project-manager.js new file mode 100755 index 00000000..3fc6b42d --- /dev/null +++ b/client/src/actions/entry/project-manager.js @@ -0,0 +1,29 @@ +import EntryActionTypes from '../../constants/EntryActionTypes'; + +export const createManagerInCurrentProject = (data) => ({ + type: EntryActionTypes.MANAGER_IN_CURRENT_PROJECT_CREATE, + payload: { + data, + }, +}); + +export const handleProjectManagerCreate = (projectManager) => ({ + type: EntryActionTypes.PROJECT_MANAGER_CREATE_HANDLE, + payload: { + projectManager, + }, +}); + +export const deleteProjectManager = (id) => ({ + type: EntryActionTypes.PROJECT_MANAGER_DELETE, + payload: { + id, + }, +}); + +export const handleProjectManagerDelete = (projectManager) => ({ + type: EntryActionTypes.PROJECT_MANAGER_DELETE_HANDLE, + payload: { + projectManager, + }, +}); diff --git a/client/src/actions/entry/project-membership.js b/client/src/actions/entry/project-membership.js deleted file mode 100755 index 6964f530..00000000 --- a/client/src/actions/entry/project-membership.js +++ /dev/null @@ -1,15 +0,0 @@ -import EntryActionTypes from '../../constants/EntryActionTypes'; - -export const createMembershipInCurrentProject = (data) => ({ - type: EntryActionTypes.MEMBERSHIP_IN_CURRENT_PROJECT_CREATE, - payload: { - data, - }, -}); - -export const deleteProjectMembership = (id) => ({ - type: EntryActionTypes.PROJECT_MEMBERSHIP_DELETE, - payload: { - id, - }, -}); diff --git a/client/src/actions/entry/project.js b/client/src/actions/entry/project.js index d0affde8..5fa97cc8 100755 --- a/client/src/actions/entry/project.js +++ b/client/src/actions/entry/project.js @@ -7,6 +7,13 @@ export const createProject = (data) => ({ }, }); +export const handleProjectCreate = (project) => ({ + type: EntryActionTypes.PROJECT_CREATE_HANDLE, + payload: { + project, + }, +}); + export const updateCurrentProject = (data) => ({ type: EntryActionTypes.CURRENT_PROJECT_UPDATE, payload: { @@ -14,6 +21,13 @@ export const updateCurrentProject = (data) => ({ }, }); +export const handleProjectUpdate = (project) => ({ + type: EntryActionTypes.PROJECT_UPDATE_HANDLE, + payload: { + project, + }, +}); + export const updateCurrentProjectBackgroundImage = (data) => ({ type: EntryActionTypes.CURRENT_PROJECT_BACKGROUND_IMAGE_UPDATE, payload: { @@ -25,3 +39,10 @@ export const deleteCurrentProject = () => ({ type: EntryActionTypes.CURRENT_PROJECT_DELETE, payload: {}, }); + +export const handleProjectDelete = (project) => ({ + type: EntryActionTypes.PROJECT_DELETE_HANDLE, + payload: { + project, + }, +}); diff --git a/client/src/actions/entry/socket.js b/client/src/actions/entry/socket.js new file mode 100644 index 00000000..c200ecb5 --- /dev/null +++ b/client/src/actions/entry/socket.js @@ -0,0 +1,11 @@ +import EntryActionTypes from '../../constants/EntryActionTypes'; + +export const handleSocketDisconnect = () => ({ + type: EntryActionTypes.SOCKET_DISCONNECT_HANDLE, + payload: {}, +}); + +export const handleSocketReconnect = () => ({ + type: EntryActionTypes.SOCKET_RECONNECT_HANDLE, + payload: {}, +}); diff --git a/client/src/actions/entry/task.js b/client/src/actions/entry/task.js index 1e1a4ca7..570df0a9 100755 --- a/client/src/actions/entry/task.js +++ b/client/src/actions/entry/task.js @@ -7,6 +7,13 @@ export const createTaskInCurrentCard = (data) => ({ }, }); +export const handleTaskCreate = (task) => ({ + type: EntryActionTypes.TASK_CREATE_HANDLE, + payload: { + task, + }, +}); + export const updateTask = (id, data) => ({ type: EntryActionTypes.TASK_UPDATE, payload: { @@ -15,9 +22,23 @@ export const updateTask = (id, data) => ({ }, }); +export const handleTaskUpdate = (task) => ({ + type: EntryActionTypes.TASK_UPDATE_HANDLE, + payload: { + task, + }, +}); + export const deleteTask = (id) => ({ type: EntryActionTypes.TASK_DELETE, payload: { id, }, }); + +export const handleTaskDelete = (task) => ({ + type: EntryActionTypes.TASK_DELETE_HANDLE, + payload: { + task, + }, +}); diff --git a/client/src/actions/entry/user.js b/client/src/actions/entry/user.js index 7abf8013..03c6686e 100755 --- a/client/src/actions/entry/user.js +++ b/client/src/actions/entry/user.js @@ -7,6 +7,13 @@ export const createUser = (data) => ({ }, }); +export const handleUserCreate = (user) => ({ + type: EntryActionTypes.USER_CREATE_HANDLE, + payload: { + user, + }, +}); + export const clearUserCreateError = () => ({ type: EntryActionTypes.USER_CREATE_ERROR_CLEAR, payload: {}, @@ -27,6 +34,13 @@ export const updateCurrentUser = (data) => ({ }, }); +export const handleUserUpdate = (user) => ({ + type: EntryActionTypes.USER_UPDATE_HANDLE, + payload: { + user, + }, +}); + export const updateCurrentUserEmail = (data) => ({ type: EntryActionTypes.CURRENT_USER_EMAIL_UPDATE, payload: { @@ -77,6 +91,13 @@ export const deleteUser = (id) => ({ }, }); +export const handleUserDelete = (user) => ({ + type: EntryActionTypes.USER_DELETE_HANDLE, + payload: { + user, + }, +}); + export const addUserToCard = (id, cardId) => ({ type: EntryActionTypes.USER_TO_CARD_ADD, payload: { @@ -92,6 +113,13 @@ export const addUserToCurrentCard = (id) => ({ }, }); +export const handleUserToCardAdd = (cardMembership) => ({ + type: EntryActionTypes.USER_TO_CARD_ADD_HANDLE, + payload: { + cardMembership, + }, +}); + export const removeUserFromCard = (id, cardId) => ({ type: EntryActionTypes.USER_FROM_CARD_REMOVE, payload: { @@ -107,6 +135,13 @@ export const removeUserFromCurrentCard = (id) => ({ }, }); +export const handleUserFromCardRemove = (cardMembership) => ({ + type: EntryActionTypes.USER_FROM_CARD_REMOVE_HANDLE, + payload: { + cardMembership, + }, +}); + export const addUserToFilterInCurrentBoard = (id) => ({ type: EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD, payload: { diff --git a/client/src/actions/index.js b/client/src/actions/index.js index 3e29ec5d..161add47 100644 --- a/client/src/actions/index.js +++ b/client/src/actions/index.js @@ -1,22 +1,19 @@ +export * from './router'; export * from './socket'; export * from './login'; export * from './core'; export * from './modal'; -export * from './users'; export * from './user'; -export * from './projects'; export * from './project'; -export * from './project-membership'; +export * from './project-manager'; export * from './board'; +export * from './board-membership'; export * from './label'; export * from './list'; export * from './card'; -export * from './card-membership'; -export * from './card-label'; export * from './task'; export * from './attachment'; export * from './actions'; export * from './action'; export * from './comment-action'; -export * from './notifications'; export * from './notification'; diff --git a/client/src/actions/label.js b/client/src/actions/label.js index 6e507f21..5a9c3072 100644 --- a/client/src/actions/label.js +++ b/client/src/actions/label.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createLabel = (label) => ({ type: ActionTypes.LABEL_CREATE, payload: { @@ -9,6 +7,29 @@ export const createLabel = (label) => ({ }, }); +createLabel.success = (localId, label) => ({ + type: ActionTypes.LABEL_CREATE__SUCCESS, + payload: { + localId, + label, + }, +}); + +createLabel.failure = (localId, error) => ({ + type: ActionTypes.LABEL_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleLabelCreate = (label) => ({ + type: ActionTypes.LABEL_CREATE_HANDLE, + payload: { + label, + }, +}); + export const updateLabel = (id, data) => ({ type: ActionTypes.LABEL_UPDATE, payload: { @@ -17,6 +38,28 @@ export const updateLabel = (id, data) => ({ }, }); +updateLabel.success = (label) => ({ + type: ActionTypes.LABEL_UPDATE__SUCCESS, + payload: { + label, + }, +}); + +updateLabel.failure = (id, error) => ({ + type: ActionTypes.LABEL_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleLabelUpdate = (label) => ({ + type: ActionTypes.LABEL_UPDATE_HANDLE, + payload: { + label, + }, +}); + export const deleteLabel = (id) => ({ type: ActionTypes.LABEL_DELETE, payload: { @@ -24,6 +67,28 @@ export const deleteLabel = (id) => ({ }, }); +deleteLabel.success = (label) => ({ + type: ActionTypes.LABEL_DELETE__SUCCESS, + payload: { + label, + }, +}); + +deleteLabel.failure = (id, error) => ({ + type: ActionTypes.LABEL_DELETE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleLabelDelete = (label) => ({ + type: ActionTypes.LABEL_DELETE_HANDLE, + payload: { + label, + }, +}); + export const addLabelToCard = (id, cardId) => ({ type: ActionTypes.LABEL_TO_CARD_ADD, payload: { @@ -32,6 +97,29 @@ export const addLabelToCard = (id, cardId) => ({ }, }); +addLabelToCard.success = (cardLabel) => ({ + type: ActionTypes.LABEL_TO_CARD_ADD__SUCCESS, + payload: { + cardLabel, + }, +}); + +addLabelToCard.failure = (id, cardId, error) => ({ + type: ActionTypes.LABEL_TO_CARD_ADD__FAILURE, + payload: { + id, + cardId, + error, + }, +}); + +export const handleLabelToCardAdd = (cardLabel) => ({ + type: ActionTypes.LABEL_TO_CARD_ADD_HANDLE, + payload: { + cardLabel, + }, +}); + export const removeLabelFromCard = (id, cardId) => ({ type: ActionTypes.LABEL_FROM_CARD_REMOVE, payload: { @@ -40,6 +128,29 @@ export const removeLabelFromCard = (id, cardId) => ({ }, }); +removeLabelFromCard.success = (cardLabel) => ({ + type: ActionTypes.LABEL_FROM_CARD_REMOVE__SUCCESS, + payload: { + cardLabel, + }, +}); + +removeLabelFromCard.failure = (id, cardId, error) => ({ + type: ActionTypes.LABEL_FROM_CARD_REMOVE__FAILURE, + payload: { + id, + cardId, + error, + }, +}); + +export const handleLabelFromCardRemove = (cardLabel) => ({ + type: ActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE, + payload: { + cardLabel, + }, +}); + export const addLabelToBoardFilter = (id, boardId) => ({ type: ActionTypes.LABEL_TO_BOARD_FILTER_ADD, payload: { @@ -55,95 +166,3 @@ export const removeLabelFromBoardFilter = (id, boardId) => ({ boardId, }, }); - -/* Events */ - -export const createLabelRequested = (localId, data) => ({ - type: ActionTypes.LABEL_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createLabelSucceeded = (localId, label) => ({ - type: ActionTypes.LABEL_CREATE_SUCCEEDED, - payload: { - localId, - label, - }, -}); - -export const createLabelFailed = (localId, error) => ({ - type: ActionTypes.LABEL_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const createLabelReceived = (label) => ({ - type: ActionTypes.LABEL_CREATE_RECEIVED, - payload: { - label, - }, -}); - -export const updateLabelRequested = (id, data) => ({ - type: ActionTypes.LABEL_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateLabelSucceeded = (label) => ({ - type: ActionTypes.LABEL_UPDATE_SUCCEEDED, - payload: { - label, - }, -}); - -export const updateLabelFailed = (id, error) => ({ - type: ActionTypes.LABEL_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const updateLabelReceived = (label) => ({ - type: ActionTypes.LABEL_UPDATE_RECEIVED, - payload: { - label, - }, -}); - -export const deleteLabelRequested = (id) => ({ - type: ActionTypes.LABEL_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteLabelSucceeded = (label) => ({ - type: ActionTypes.LABEL_DELETE_SUCCEEDED, - payload: { - label, - }, -}); - -export const deleteLabelFailed = (id, error) => ({ - type: ActionTypes.LABEL_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteLabelReceived = (label) => ({ - type: ActionTypes.LABEL_DELETE_RECEIVED, - payload: { - label, - }, -}); diff --git a/client/src/actions/list.js b/client/src/actions/list.js index ac1b1cce..71702be7 100644 --- a/client/src/actions/list.js +++ b/client/src/actions/list.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createList = (list) => ({ type: ActionTypes.LIST_CREATE, payload: { @@ -9,6 +7,29 @@ export const createList = (list) => ({ }, }); +createList.success = (localId, list) => ({ + type: ActionTypes.LIST_CREATE__SUCCESS, + payload: { + localId, + list, + }, +}); + +createList.failure = (localId, error) => ({ + type: ActionTypes.LIST_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleListCreate = (list) => ({ + type: ActionTypes.LIST_CREATE_HANDLE, + payload: { + list, + }, +}); + export const updateList = (id, data) => ({ type: ActionTypes.LIST_UPDATE, payload: { @@ -17,6 +38,28 @@ export const updateList = (id, data) => ({ }, }); +updateList.success = (list) => ({ + type: ActionTypes.LIST_UPDATE__SUCCESS, + payload: { + list, + }, +}); + +updateList.failure = (id, error) => ({ + type: ActionTypes.LIST_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleListUpdate = (list) => ({ + type: ActionTypes.LIST_UPDATE_HANDLE, + payload: { + list, + }, +}); + export const deleteList = (id) => ({ type: ActionTypes.LIST_DELETE, payload: { @@ -24,93 +67,23 @@ export const deleteList = (id) => ({ }, }); -/* Events */ - -export const createListRequested = (localId, data) => ({ - type: ActionTypes.LIST_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createListSucceeded = (localId, list) => ({ - type: ActionTypes.LIST_CREATE_SUCCEEDED, - payload: { - localId, - list, - }, -}); - -export const createListFailed = (localId, error) => ({ - type: ActionTypes.LIST_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const createListReceived = (list) => ({ - type: ActionTypes.LIST_CREATE_RECEIVED, +deleteList.success = (list) => ({ + type: ActionTypes.LIST_DELETE__SUCCESS, payload: { list, }, }); -export const updateListRequested = (id, data) => ({ - type: ActionTypes.LIST_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateListSucceeded = (list) => ({ - type: ActionTypes.LIST_UPDATE_SUCCEEDED, - payload: { - list, - }, -}); - -export const updateListFailed = (id, error) => ({ - type: ActionTypes.LIST_UPDATE_FAILED, +deleteList.failure = (id, error) => ({ + type: ActionTypes.LIST_DELETE__FAILURE, payload: { id, error, }, }); -export const updateListReceived = (list) => ({ - type: ActionTypes.LIST_UPDATE_RECEIVED, - payload: { - list, - }, -}); - -export const deleteListRequested = (id) => ({ - type: ActionTypes.LIST_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteListSucceeded = (list) => ({ - type: ActionTypes.LIST_DELETE_SUCCEEDED, - payload: { - list, - }, -}); - -export const deleteListFailed = (id, error) => ({ - type: ActionTypes.LIST_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteListReceived = (list) => ({ - type: ActionTypes.LIST_DELETE_RECEIVED, +export const handleListDelete = (list) => ({ + type: ActionTypes.LIST_DELETE_HANDLE, payload: { list, }, diff --git a/client/src/actions/login.js b/client/src/actions/login.js index e206d3d5..608ee79b 100644 --- a/client/src/actions/login.js +++ b/client/src/actions/login.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const authenticate = (data) => ({ type: ActionTypes.AUTHENTICATE, payload: { @@ -9,6 +7,20 @@ export const authenticate = (data) => ({ }, }); +authenticate.success = (accessToken) => ({ + type: ActionTypes.AUTHENTICATE__SUCCESS, + payload: { + accessToken, + }, +}); + +authenticate.failure = (error) => ({ + type: ActionTypes.AUTHENTICATE__FAILURE, + payload: { + error, + }, +}); + export const clearAuthenticateError = () => ({ type: ActionTypes.AUTHENTICATE_ERROR_CLEAR, payload: {}, @@ -18,26 +30,3 @@ export const logout = () => ({ type: ActionTypes.LOGOUT, payload: {}, }); - -/* Events */ - -export const authenticateRequested = (data) => ({ - type: ActionTypes.AUTHENTICATE_REQUESTED, - payload: { - data, - }, -}); - -export const authenticateSucceeded = (accessToken) => ({ - type: ActionTypes.AUTHENTICATE_SUCCEEDED, - payload: { - accessToken, - }, -}); - -export const authenticateFailed = (error) => ({ - type: ActionTypes.AUTHENTICATE_FAILED, - payload: { - error, - }, -}); diff --git a/client/src/actions/modal.js b/client/src/actions/modal.js index de8fed79..29ed6978 100644 --- a/client/src/actions/modal.js +++ b/client/src/actions/modal.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const openModal = (type) => ({ type: ActionTypes.MODAL_OPEN, payload: { diff --git a/client/src/actions/notification.js b/client/src/actions/notification.js index da35ea33..0ac3d0fc 100644 --- a/client/src/actions/notification.js +++ b/client/src/actions/notification.js @@ -1,19 +1,39 @@ import ActionTypes from '../constants/ActionTypes'; -/* Events */ - -export const createNotificationReceived = (notification, user, card, action) => ({ - type: ActionTypes.NOTIFICATION_CREATE_RECEIVED, +export const handleNotificationCreate = (notification, users, cards, actions) => ({ + type: ActionTypes.NOTIFICATION_CREATE_HANDLE, payload: { notification, - user, - card, - action, + users, + cards, + actions, }, }); -export const deleteNotificationReceived = (notification) => ({ - type: ActionTypes.NOTIFICATION_DELETE_RECEIVED, +export const deleteNotification = (id) => ({ + type: ActionTypes.NOTIFICATION_DELETE, + payload: { + id, + }, +}); + +deleteNotification.success = (notification) => ({ + type: ActionTypes.NOTIFICATION_DELETE__SUCCESS, + payload: { + notification, + }, +}); + +deleteNotification.failure = (id, error) => ({ + type: ActionTypes.NOTIFICATION_DELETE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleNotificationDelete = (notification) => ({ + type: ActionTypes.NOTIFICATION_DELETE_HANDLE, payload: { notification, }, diff --git a/client/src/actions/notifications.js b/client/src/actions/notifications.js deleted file mode 100644 index eb746872..00000000 --- a/client/src/actions/notifications.js +++ /dev/null @@ -1,56 +0,0 @@ -import ActionTypes from '../constants/ActionTypes'; - -/* Actions */ - -export const deleteNotifications = (ids) => ({ - type: ActionTypes.NOTIFICATIONS_DELETE, - payload: { - ids, - }, -}); - -/* Events */ - -export const fetchNotificationsRequested = () => ({ - type: ActionTypes.NOTIFICATIONS_FETCH_REQUESTED, - payload: {}, -}); - -export const fetchNotificationsSucceeded = (notifications, users, cards, actions) => ({ - type: ActionTypes.NOTIFICATIONS_FETCH_SUCCEEDED, - payload: { - notifications, - users, - cards, - actions, - }, -}); - -export const fetchNotificationsFailed = (error) => ({ - type: ActionTypes.NOTIFICATIONS_FETCH_FAILED, - payload: { - error, - }, -}); - -export const deleteNotificationsRequested = (ids) => ({ - type: ActionTypes.NOTIFICATIONS_DELETE_REQUESTED, - payload: { - ids, - }, -}); - -export const deleteNotificationsSucceeded = (notifications) => ({ - type: ActionTypes.NOTIFICATIONS_DELETE_SUCCEEDED, - payload: { - notifications, - }, -}); - -export const deleteNotificationsFailed = (ids, error) => ({ - type: ActionTypes.NOTIFICATIONS_DELETE_FAILED, - payload: { - ids, - error, - }, -}); diff --git a/client/src/actions/project-manager.js b/client/src/actions/project-manager.js new file mode 100644 index 00000000..32e8125a --- /dev/null +++ b/client/src/actions/project-manager.js @@ -0,0 +1,101 @@ +import ActionTypes from '../constants/ActionTypes'; + +export const createProjectManager = (projectManager) => ({ + type: ActionTypes.PROJECT_MANAGER_CREATE, + payload: { + projectManager, + }, +}); + +createProjectManager.success = (localId, projectManager) => ({ + type: ActionTypes.PROJECT_MANAGER_CREATE__SUCCESS, + payload: { + localId, + projectManager, + }, +}); + +createProjectManager.failure = (localId, error) => ({ + type: ActionTypes.PROJECT_MANAGER_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleProjectManagerCreate = ( + projectManager, + project, + board, + users, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, +) => ({ + type: ActionTypes.PROJECT_MANAGER_CREATE_HANDLE, + payload: { + projectManager, + project, + board, + users, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + }, +}); + +handleProjectManagerCreate.fetchProject = (id, currentUserId, currentBoardId) => ({ + type: ActionTypes.PROJECT_MANAGER_CREATE_HANDLE__PROJECT_FETCH, + payload: { + id, + currentUserId, + currentBoardId, + }, +}); + +export const deleteProjectManager = (id, isCurrentUser, isCurrentProject) => ({ + type: ActionTypes.PROJECT_MANAGER_DELETE, + payload: { + id, + isCurrentUser, + isCurrentProject, + }, +}); + +deleteProjectManager.success = (projectManager) => ({ + type: ActionTypes.PROJECT_MANAGER_DELETE__SUCCESS, + payload: { + projectManager, + }, +}); + +deleteProjectManager.failure = (id, error) => ({ + type: ActionTypes.PROJECT_MANAGER_DELETE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleProjectManagerDelete = (projectManager, isCurrentUser, isCurrentProject) => ({ + type: ActionTypes.PROJECT_MANAGER_DELETE_HANDLE, + payload: { + projectManager, + isCurrentUser, + isCurrentProject, + }, +}); diff --git a/client/src/actions/project-membership.js b/client/src/actions/project-membership.js deleted file mode 100644 index 536ac5cd..00000000 --- a/client/src/actions/project-membership.js +++ /dev/null @@ -1,80 +0,0 @@ -import ActionTypes from '../constants/ActionTypes'; - -/* Actions */ - -export const createProjectMembership = (projectMembership) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_CREATE, - payload: { - projectMembership, - }, -}); - -export const deleteProjectMembership = (id) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_DELETE, - payload: { - id, - }, -}); - -/* Events */ - -export const createProjectMembershipRequested = (localId, data) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createProjectMembershipSucceeded = (localId, projectMembership) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_CREATE_SUCCEEDED, - payload: { - localId, - projectMembership, - }, -}); - -export const createProjectMembershipFailed = (localId, error) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const createProjectMembershipReceived = (projectMembership, user) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_CREATE_RECEIVED, - payload: { - projectMembership, - user, - }, -}); - -export const deleteProjectMembershipRequested = (id) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteProjectMembershipSucceeded = (projectMembership) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_DELETE_SUCCEEDED, - payload: { - projectMembership, - }, -}); - -export const deleteProjectMembershipFailed = (id, error) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteProjectMembershipReceived = (projectMembership) => ({ - type: ActionTypes.PROJECT_MEMBERSHIP_DELETE_RECEIVED, - payload: { - projectMembership, - }, -}); diff --git a/client/src/actions/project.js b/client/src/actions/project.js index 18bd1a6e..099cd7c7 100644 --- a/client/src/actions/project.js +++ b/client/src/actions/project.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createProject = (data) => ({ type: ActionTypes.PROJECT_CREATE, payload: { @@ -9,6 +7,32 @@ export const createProject = (data) => ({ }, }); +createProject.success = (project, projectManagers) => ({ + type: ActionTypes.PROJECT_CREATE__SUCCESS, + payload: { + project, + projectManagers, + }, +}); + +createProject.failure = (error) => ({ + type: ActionTypes.PROJECT_CREATE__FAILURE, + payload: { + error, + }, +}); + +export const handleProjectCreate = (project, users, projectManagers, boards, boardMemberships) => ({ + type: ActionTypes.PROJECT_CREATE_HANDLE, + payload: { + project, + users, + projectManagers, + boards, + boardMemberships, + }, +}); + export const updateProject = (id, data) => ({ type: ActionTypes.PROJECT_UPDATE, payload: { @@ -17,6 +41,50 @@ export const updateProject = (id, data) => ({ }, }); +updateProject.success = (project) => ({ + type: ActionTypes.PROJECT_UPDATE__SUCCESS, + payload: { + project, + }, +}); + +updateProject.failure = (id, error) => ({ + type: ActionTypes.PROJECT_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleProjectUpdate = (project) => ({ + type: ActionTypes.PROJECT_UPDATE_HANDLE, + payload: { + project, + }, +}); + +export const updateProjectBackgroundImage = (id) => ({ + type: ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE, + payload: { + id, + }, +}); + +updateProjectBackgroundImage.success = (project) => ({ + type: ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE__SUCCESS, + payload: { + project, + }, +}); + +updateProjectBackgroundImage.failure = (id, error) => ({ + type: ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + export const deleteProject = (id) => ({ type: ActionTypes.PROJECT_DELETE, payload: { @@ -24,118 +92,23 @@ export const deleteProject = (id) => ({ }, }); -/* Events */ - -export const createProjectRequested = (data) => ({ - type: ActionTypes.PROJECT_CREATE_REQUESTED, - payload: { - data, - }, -}); - -export const createProjectSucceeded = (project, users, projectMemberships, boards) => ({ - type: ActionTypes.PROJECT_CREATE_SUCCEEDED, - payload: { - project, - users, - projectMemberships, - boards, - }, -}); - -export const createProjectFailed = (error) => ({ - type: ActionTypes.PROJECT_CREATE_FAILED, - payload: { - error, - }, -}); - -export const createProjectReceived = (project, users, projectMemberships, boards) => ({ - type: ActionTypes.PROJECT_CREATE_RECEIVED, - payload: { - project, - users, - projectMemberships, - boards, - }, -}); - -export const updateProjectRequested = (id, data) => ({ - type: ActionTypes.PROJECT_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateProjectSucceeded = (project) => ({ - type: ActionTypes.PROJECT_UPDATE_SUCCEEDED, +deleteProject.success = (project) => ({ + type: ActionTypes.PROJECT_DELETE__SUCCESS, payload: { project, }, }); -export const updateProjectFailed = (id, error) => ({ - type: ActionTypes.PROJECT_UPDATE_FAILED, +deleteProject.failure = (id, error) => ({ + type: ActionTypes.PROJECT_DELETE__FAILURE, payload: { id, error, }, }); -export const updateProjectReceived = (project) => ({ - type: ActionTypes.PROJECT_UPDATE_RECEIVED, - payload: { - project, - }, -}); - -export const updateProjectBackgroundImageRequested = (id) => ({ - type: ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE_REQUESTED, - payload: { - id, - }, -}); - -export const updateProjectBackgroundImageSucceeded = (project) => ({ - type: ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE_SUCCEEDED, - payload: { - project, - }, -}); - -export const updateProjectBackgroundImageFailed = (id, error) => ({ - type: ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteProjectRequested = (id) => ({ - type: ActionTypes.PROJECT_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteProjectSucceeded = (project) => ({ - type: ActionTypes.PROJECT_DELETE_SUCCEEDED, - payload: { - project, - }, -}); - -export const deleteProjectFailed = (id, error) => ({ - type: ActionTypes.PROJECT_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteProjectReceived = (project) => ({ - type: ActionTypes.PROJECT_DELETE_RECEIVED, +export const handleProjectDelete = (project) => ({ + type: ActionTypes.PROJECT_DELETE_HANDLE, payload: { project, }, diff --git a/client/src/actions/projects.js b/client/src/actions/projects.js deleted file mode 100644 index 50637f4c..00000000 --- a/client/src/actions/projects.js +++ /dev/null @@ -1,25 +0,0 @@ -import ActionTypes from '../constants/ActionTypes'; - -/* Events */ - -export const fetchProjectsRequested = () => ({ - type: ActionTypes.PROJECTS_FETCH_REQUESTED, - payload: {}, -}); - -export const fetchProjectsSucceeded = (projects, users, projectMemberships, boards) => ({ - type: ActionTypes.PROJECTS_FETCH_SUCCEEDED, - payload: { - projects, - users, - projectMemberships, - boards, - }, -}); - -export const fetchProjectsFailed = (error) => ({ - type: ActionTypes.PROJECTS_FETCH_FAILED, - payload: { - error, - }, -}); diff --git a/client/src/actions/router.js b/client/src/actions/router.js new file mode 100644 index 00000000..27fead85 --- /dev/null +++ b/client/src/actions/router.js @@ -0,0 +1,40 @@ +import ActionTypes from '../constants/ActionTypes'; + +// eslint-disable-next-line import/prefer-default-export +export const handleLocationChange = ( + board, + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + notifications, +) => ({ + type: ActionTypes.LOCATION_CHANGE_HANDLE, + payload: { + board, + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + notifications, + }, +}); + +handleLocationChange.fetchBoard = (id) => ({ + type: ActionTypes.LOCATION_CHANGE_HANDLE__BOARD_FETCH, + payload: { + id, + }, +}); diff --git a/client/src/actions/socket.js b/client/src/actions/socket.js index 51cbcfc5..de6d42b1 100644 --- a/client/src/actions/socket.js +++ b/client/src/actions/socket.js @@ -1,18 +1,53 @@ import ActionTypes from '../constants/ActionTypes'; -import SocketStatuses from '../constants/SocketStatuses'; -/* Events */ +export const handleSocketDisconnect = () => ({ + type: ActionTypes.SOCKET_DISCONNECT_HANDLE, + payload: {}, +}); -export const socketDisconnected = () => ({ - type: ActionTypes.SOCKET_STATUS_CHANGED, +export const handleSocketReconnect = ( + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, +) => ({ + type: ActionTypes.SOCKET_RECONNECT_HANDLE, payload: { - status: SocketStatuses.DISCONNECTED, + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, }, }); -export const socketReconnected = () => ({ - type: ActionTypes.SOCKET_STATUS_CHANGED, +handleSocketReconnect.fetchCore = (currentUserId, currentBoardId) => ({ + type: ActionTypes.SOCKET_RECONNECT_HANDLE__CORE_FETCH, payload: { - status: SocketStatuses.RECONNECTED, + currentUserId, + currentBoardId, }, }); diff --git a/client/src/actions/task.js b/client/src/actions/task.js index f1a54d2c..e13752c7 100644 --- a/client/src/actions/task.js +++ b/client/src/actions/task.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createTask = (task) => ({ type: ActionTypes.TASK_CREATE, payload: { @@ -9,6 +7,29 @@ export const createTask = (task) => ({ }, }); +createTask.success = (localId, task) => ({ + type: ActionTypes.TASK_CREATE__SUCCESS, + payload: { + localId, + task, + }, +}); + +createTask.failure = (localId, error) => ({ + type: ActionTypes.TASK_CREATE__FAILURE, + payload: { + localId, + error, + }, +}); + +export const handleTaskCreate = (task) => ({ + type: ActionTypes.TASK_CREATE_HANDLE, + payload: { + task, + }, +}); + export const updateTask = (id, data) => ({ type: ActionTypes.TASK_UPDATE, payload: { @@ -17,6 +38,28 @@ export const updateTask = (id, data) => ({ }, }); +updateTask.success = (task) => ({ + type: ActionTypes.TASK_UPDATE__SUCCESS, + payload: { + task, + }, +}); + +updateTask.failure = (id, error) => ({ + type: ActionTypes.TASK_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleTaskUpdate = (task) => ({ + type: ActionTypes.TASK_UPDATE_HANDLE, + payload: { + task, + }, +}); + export const deleteTask = (id) => ({ type: ActionTypes.TASK_DELETE, payload: { @@ -24,93 +67,23 @@ export const deleteTask = (id) => ({ }, }); -/* Events */ - -export const createTaskRequested = (localId, data) => ({ - type: ActionTypes.TASK_CREATE_REQUESTED, - payload: { - localId, - data, - }, -}); - -export const createTaskSucceeded = (localId, task) => ({ - type: ActionTypes.TASK_CREATE_SUCCEEDED, - payload: { - localId, - task, - }, -}); - -export const createTaskFailed = (localId, error) => ({ - type: ActionTypes.TASK_CREATE_FAILED, - payload: { - localId, - error, - }, -}); - -export const createTaskReceived = (task) => ({ - type: ActionTypes.TASK_CREATE_RECEIVED, +deleteTask.success = (task) => ({ + type: ActionTypes.TASK_DELETE__SUCCESS, payload: { task, }, }); -export const updateTaskRequested = (id, data) => ({ - type: ActionTypes.TASK_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateTaskSucceeded = (task) => ({ - type: ActionTypes.TASK_UPDATE_SUCCEEDED, - payload: { - task, - }, -}); - -export const updateTaskFailed = (id, error) => ({ - type: ActionTypes.TASK_UPDATE_FAILED, +deleteTask.failure = (id, error) => ({ + type: ActionTypes.TASK_DELETE__FAILURE, payload: { id, error, }, }); -export const updateTaskReceived = (task) => ({ - type: ActionTypes.TASK_UPDATE_RECEIVED, - payload: { - task, - }, -}); - -export const deleteTaskRequested = (id) => ({ - type: ActionTypes.TASK_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteTaskSucceeded = (task) => ({ - type: ActionTypes.TASK_DELETE_SUCCEEDED, - payload: { - task, - }, -}); - -export const deleteTaskFailed = (id, error) => ({ - type: ActionTypes.TASK_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteTaskReceived = (task) => ({ - type: ActionTypes.TASK_DELETE_RECEIVED, +export const handleTaskDelete = (task) => ({ + type: ActionTypes.TASK_DELETE_HANDLE, payload: { task, }, diff --git a/client/src/actions/user.js b/client/src/actions/user.js index 7dafb26c..06018f53 100644 --- a/client/src/actions/user.js +++ b/client/src/actions/user.js @@ -1,7 +1,5 @@ import ActionTypes from '../constants/ActionTypes'; -/* Actions */ - export const createUser = (data) => ({ type: ActionTypes.USER_CREATE, payload: { @@ -9,6 +7,27 @@ export const createUser = (data) => ({ }, }); +createUser.success = (user) => ({ + type: ActionTypes.USER_CREATE__SUCCESS, + payload: { + user, + }, +}); + +createUser.failure = (error) => ({ + type: ActionTypes.USER_CREATE__FAILURE, + payload: { + error, + }, +}); + +export const handleUserCreate = (user) => ({ + type: ActionTypes.USER_CREATE_HANDLE, + payload: { + user, + }, +}); + export const clearUserCreateError = () => ({ type: ActionTypes.USER_CREATE_ERROR_CLEAR, payload: {}, @@ -22,6 +41,53 @@ export const updateUser = (id, data) => ({ }, }); +updateUser.success = (user) => ({ + type: ActionTypes.USER_UPDATE__SUCCESS, + payload: { + user, + }, +}); + +updateUser.failure = (id, error) => ({ + type: ActionTypes.USER_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleUserUpdate = (user, users, isCurrent) => ({ + type: ActionTypes.USER_UPDATE_HANDLE, + payload: { + user, + users, + isCurrent, + }, +}); + +export const updateUserEmail = (id, data) => ({ + type: ActionTypes.USER_EMAIL_UPDATE, + payload: { + id, + data, + }, +}); + +updateUserEmail.success = (user) => ({ + type: ActionTypes.USER_EMAIL_UPDATE__SUCCESS, + payload: { + user, + }, +}); + +updateUserEmail.failure = (id, error) => ({ + type: ActionTypes.USER_EMAIL_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + export const clearUserEmailUpdateError = (id) => ({ type: ActionTypes.USER_EMAIL_UPDATE_ERROR_CLEAR, payload: { @@ -29,6 +95,29 @@ export const clearUserEmailUpdateError = (id) => ({ }, }); +export const updateUserPassword = (id, data) => ({ + type: ActionTypes.USER_PASSWORD_UPDATE, + payload: { + id, + data, + }, +}); + +updateUserPassword.success = (user) => ({ + type: ActionTypes.USER_PASSWORD_UPDATE__SUCCESS, + payload: { + user, + }, +}); + +updateUserPassword.failure = (id, error) => ({ + type: ActionTypes.USER_PASSWORD_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + export const clearUserPasswordUpdateError = (id) => ({ type: ActionTypes.USER_PASSWORD_UPDATE_ERROR_CLEAR, payload: { @@ -36,6 +125,29 @@ export const clearUserPasswordUpdateError = (id) => ({ }, }); +export const updateUserUsername = (id, data) => ({ + type: ActionTypes.USER_USERNAME_UPDATE, + payload: { + id, + data, + }, +}); + +updateUserUsername.success = (user) => ({ + type: ActionTypes.USER_USERNAME_UPDATE__SUCCESS, + payload: { + user, + }, +}); + +updateUserUsername.failure = (id, error) => ({ + type: ActionTypes.USER_USERNAME_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + export const clearUserUsernameUpdateError = (id) => ({ type: ActionTypes.USER_USERNAME_UPDATE_ERROR_CLEAR, payload: { @@ -43,6 +155,28 @@ export const clearUserUsernameUpdateError = (id) => ({ }, }); +export const updateUserAvatar = (id) => ({ + type: ActionTypes.USER_AVATAR_UPDATE, + payload: { + id, + }, +}); + +updateUserAvatar.success = (user) => ({ + type: ActionTypes.USER_AVATAR_UPDATE__SUCCESS, + payload: { + user, + }, +}); + +updateUserAvatar.failure = (id, error) => ({ + type: ActionTypes.USER_AVATAR_UPDATE__FAILURE, + payload: { + id, + error, + }, +}); + export const deleteUser = (id) => ({ type: ActionTypes.USER_DELETE, payload: { @@ -50,6 +184,28 @@ export const deleteUser = (id) => ({ }, }); +deleteUser.success = (user) => ({ + type: ActionTypes.USER_DELETE__SUCCESS, + payload: { + user, + }, +}); + +deleteUser.failure = (id, error) => ({ + type: ActionTypes.USER_DELETE__FAILURE, + payload: { + id, + error, + }, +}); + +export const handleUserDelete = (user) => ({ + type: ActionTypes.USER_DELETE_HANDLE, + payload: { + user, + }, +}); + export const addUserToCard = (id, cardId, isCurrent) => ({ type: ActionTypes.USER_TO_CARD_ADD, payload: { @@ -59,6 +215,29 @@ export const addUserToCard = (id, cardId, isCurrent) => ({ }, }); +addUserToCard.success = (cardMembership) => ({ + type: ActionTypes.USER_TO_CARD_ADD__SUCCESS, + payload: { + cardMembership, + }, +}); + +addUserToCard.failure = (id, cardId, error) => ({ + type: ActionTypes.USER_TO_CARD_ADD__FAILURE, + payload: { + id, + cardId, + error, + }, +}); + +export const handleUserToCardAdd = (cardMembership) => ({ + type: ActionTypes.USER_TO_CARD_ADD_HANDLE, + payload: { + cardMembership, + }, +}); + export const removeUserFromCard = (id, cardId) => ({ type: ActionTypes.USER_FROM_CARD_REMOVE, payload: { @@ -67,6 +246,29 @@ export const removeUserFromCard = (id, cardId) => ({ }, }); +removeUserFromCard.success = (cardMembership) => ({ + type: ActionTypes.USER_FROM_CARD_REMOVE__SUCCESS, + payload: { + cardMembership, + }, +}); + +removeUserFromCard.failure = (id, cardId, error) => ({ + type: ActionTypes.USER_FROM_CARD_REMOVE__FAILURE, + payload: { + id, + cardId, + error, + }, +}); + +export const handleUserFromCardRemove = (cardMembership) => ({ + type: ActionTypes.USER_FROM_CARD_REMOVE_HANDLE, + payload: { + cardMembership, + }, +}); + export const addUserToBoardFilter = (id, boardId) => ({ type: ActionTypes.USER_TO_BOARD_FILTER_ADD, payload: { @@ -82,202 +284,3 @@ export const removeUserFromBoardFilter = (id, boardId) => ({ boardId, }, }); - -/* Events */ - -export const createUserRequested = (data) => ({ - type: ActionTypes.USER_CREATE_REQUESTED, - payload: { - data, - }, -}); - -export const createUserSucceeded = (user) => ({ - type: ActionTypes.USER_CREATE_SUCCEEDED, - payload: { - user, - }, -}); - -export const createUserFailed = (error) => ({ - type: ActionTypes.USER_CREATE_FAILED, - payload: { - error, - }, -}); - -export const createUserReceived = (user) => ({ - type: ActionTypes.USER_CREATE_RECEIVED, - payload: { - user, - }, -}); - -export const fetchCurrentUserRequested = () => ({ - type: ActionTypes.CURRENT_USER_FETCH_REQUESTED, - payload: {}, -}); - -export const fetchCurrentUserSucceeded = (user) => ({ - type: ActionTypes.CURRENT_USER_FETCH_SUCCEEDED, - payload: { - user, - }, -}); - -export const fetchCurrentUserFailed = (error) => ({ - type: ActionTypes.CURRENT_USER_FETCH_FAILED, - payload: { - error, - }, -}); - -export const updateUserRequested = (id, data) => ({ - type: ActionTypes.USER_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateUserSucceeded = (user) => ({ - type: ActionTypes.USER_UPDATE_SUCCEEDED, - payload: { - user, - }, -}); - -export const updateUserFailed = (id, error) => ({ - type: ActionTypes.USER_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const updateUserReceived = (user) => ({ - type: ActionTypes.USER_UPDATE_RECEIVED, - payload: { - user, - }, -}); - -export const updateUserEmailRequested = (id, data) => ({ - type: ActionTypes.USER_EMAIL_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateUserEmailSucceeded = (user) => ({ - type: ActionTypes.USER_EMAIL_UPDATE_SUCCEEDED, - payload: { - user, - }, -}); - -export const updateUserEmailFailed = (id, error) => ({ - type: ActionTypes.USER_EMAIL_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const updateUserPasswordRequested = (id, data) => ({ - type: ActionTypes.USER_PASSWORD_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateUserPasswordSucceeded = (user) => ({ - type: ActionTypes.USER_PASSWORD_UPDATE_SUCCEEDED, - payload: { - user, - }, -}); - -export const updateUserPasswordFailed = (id, error) => ({ - type: ActionTypes.USER_PASSWORD_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const updateUserUsernameRequested = (id, data) => ({ - type: ActionTypes.USER_USERNAME_UPDATE_REQUESTED, - payload: { - id, - data, - }, -}); - -export const updateUserUsernameSucceeded = (user) => ({ - type: ActionTypes.USER_USERNAME_UPDATE_SUCCEEDED, - payload: { - user, - }, -}); - -export const updateUserUsernameFailed = (id, error) => ({ - type: ActionTypes.USER_USERNAME_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const updateUserAvatarRequested = (id) => ({ - type: ActionTypes.USER_AVATAR_UPDATE_REQUESTED, - payload: { - id, - }, -}); - -export const updateUserAvatarSucceeded = (user) => ({ - type: ActionTypes.USER_AVATAR_UPDATE_SUCCEEDED, - payload: { - user, - }, -}); - -export const updateUserAvatarFailed = (id, error) => ({ - type: ActionTypes.USER_AVATAR_UPDATE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteUserRequested = (id) => ({ - type: ActionTypes.USER_DELETE_REQUESTED, - payload: { - id, - }, -}); - -export const deleteUserSucceeded = (user) => ({ - type: ActionTypes.USER_DELETE_SUCCEEDED, - payload: { - user, - }, -}); - -export const deleteUserFailed = (id, error) => ({ - type: ActionTypes.USER_DELETE_FAILED, - payload: { - id, - error, - }, -}); - -export const deleteUserReceived = (user) => ({ - type: ActionTypes.USER_DELETE_RECEIVED, - payload: { - user, - }, -}); diff --git a/client/src/actions/users.js b/client/src/actions/users.js deleted file mode 100644 index 955489ef..00000000 --- a/client/src/actions/users.js +++ /dev/null @@ -1,22 +0,0 @@ -import ActionTypes from '../constants/ActionTypes'; - -/* Events */ - -export const fetchUsersRequested = () => ({ - type: ActionTypes.USERS_FETCH_REQUESTED, - payload: {}, -}); - -export const fetchUsersSucceeded = (users) => ({ - type: ActionTypes.USERS_FETCH_SUCCEEDED, - payload: { - users, - }, -}); - -export const fetchUsersFailed = (error) => ({ - type: ActionTypes.USERS_FETCH_FAILED, - payload: { - error, - }, -}); diff --git a/client/src/api/board-memberships.js b/client/src/api/board-memberships.js new file mode 100644 index 00000000..3ef1ce87 --- /dev/null +++ b/client/src/api/board-memberships.js @@ -0,0 +1,14 @@ +import socket from './socket'; + +/* Actions */ + +const createBoardMembership = (boardId, data, headers) => + socket.post(`/boards/${boardId}/memberships`, data, headers); + +const deleteBoardMembership = (id, headers) => + socket.delete(`/board-memberships/${id}`, undefined, headers); + +export default { + createBoardMembership, + deleteBoardMembership, +}; diff --git a/client/src/api/cards.js b/client/src/api/cards.js index edb808b1..b2f3f2ca 100755 --- a/client/src/api/cards.js +++ b/client/src/api/cards.js @@ -49,10 +49,6 @@ const createCard = (boardId, data, headers) => socket.post(`/boards/${boardId}/cards`, transformCardData(data), headers).then((body) => ({ ...body, item: transformCard(body.item), - included: { - ...body.included, - attachments: body.included.attachments.map(transformAttachment), - }, })); const getCard = (id, headers) => @@ -79,10 +75,6 @@ const makeHandleCardCreate = (next) => (body) => { next({ ...body, item: transformCard(body.item), - included: { - ...body.included, - attachments: body.included.attachments.map(transformAttachment), - }, }); }; diff --git a/client/src/api/index.js b/client/src/api/index.js index 9ed9a239..b7a49076 100755 --- a/client/src/api/index.js +++ b/client/src/api/index.js @@ -3,8 +3,9 @@ import socket from './socket'; import accessTokens from './access-tokens'; import users from './users'; import projects from './projects'; -import projectMemberships from './project-memberships'; +import projectManagers from './project-managers'; import boards from './boards'; +import boardMemberships from './board-memberships'; import labels from './labels'; import lists from './lists'; import cards from './cards'; @@ -22,8 +23,9 @@ export default { ...accessTokens, ...users, ...projects, - ...projectMemberships, + ...projectManagers, ...boards, + ...boardMemberships, ...labels, ...lists, ...cards, diff --git a/client/src/api/notifications.js b/client/src/api/notifications.js index d4441f8d..9068a19f 100755 --- a/client/src/api/notifications.js +++ b/client/src/api/notifications.js @@ -14,24 +14,21 @@ const getNotifications = (headers) => }, })); -const updateNotifications = (ids, data, headers) => - socket.patch(`/notifications/${ids.join(',')}`, data, headers); - -/* Event handlers */ - -const makeHandleNotificationCreate = (next) => (body) => { - next({ +const getNotification = (id, headers) => + socket.get(`/notifications/${id}`, undefined, headers).then((body) => ({ ...body, included: { ...body.included, cards: body.included.cards.map(transformCard), actions: body.included.actions.map(transformAction), }, - }); -}; + })); + +const updateNotifications = (ids, data, headers) => + socket.patch(`/notifications/${ids.join(',')}`, data, headers); export default { getNotifications, + getNotification, updateNotifications, - makeHandleNotificationCreate, }; diff --git a/client/src/api/project-managers.js b/client/src/api/project-managers.js new file mode 100755 index 00000000..a835bf2d --- /dev/null +++ b/client/src/api/project-managers.js @@ -0,0 +1,14 @@ +import socket from './socket'; + +/* Actions */ + +const createProjectManager = (projectId, data, headers) => + socket.post(`/projects/${projectId}/managers`, data, headers); + +const deleteProjectManager = (id, headers) => + socket.delete(`/project-managers/${id}`, undefined, headers); + +export default { + createProjectManager, + deleteProjectManager, +}; diff --git a/client/src/api/project-memberships.js b/client/src/api/project-memberships.js deleted file mode 100755 index 0cd232a7..00000000 --- a/client/src/api/project-memberships.js +++ /dev/null @@ -1,14 +0,0 @@ -import socket from './socket'; - -/* Actions */ - -const createProjectMembership = (projectId, data, headers) => - socket.post(`/projects/${projectId}/memberships`, data, headers); - -const deleteProjectMembership = (id, headers) => - socket.delete(`/project-memberships/${id}`, undefined, headers); - -export default { - createProjectMembership, - deleteProjectMembership, -}; diff --git a/client/src/api/projects.js b/client/src/api/projects.js index c3ffc066..5a22beec 100755 --- a/client/src/api/projects.js +++ b/client/src/api/projects.js @@ -7,6 +7,8 @@ const getProjects = (headers) => socket.get('/projects', undefined, headers); const createProject = (data, headers) => socket.post('/projects', data, headers); +const getProject = (id, headers) => socket.get(`/projects/${id}`, undefined, headers); + const updateProject = (id, data, headers) => socket.patch(`/projects/${id}`, data, headers); const updateProjectBackgroundImage = (id, data, headers) => @@ -17,6 +19,7 @@ const deleteProject = (id, headers) => socket.delete(`/projects/${id}`, undefine export default { getProjects, createProject, + getProject, updateProject, updateProjectBackgroundImage, deleteProject, diff --git a/client/src/api/users.js b/client/src/api/users.js index b936f872..ca77bd9d 100755 --- a/client/src/api/users.js +++ b/client/src/api/users.js @@ -7,6 +7,8 @@ const getUsers = (headers) => socket.get('/users', undefined, headers); const createUser = (data, headers) => socket.post('/users', data, headers); +const getUser = (id, headers) => socket.get(`/users/${id}`, undefined, headers); + const getCurrentUser = (headers) => socket.get('/users/me', undefined, headers); const updateUser = (id, data, headers) => socket.patch(`/users/${id}`, data, headers); @@ -26,6 +28,7 @@ const deleteUser = (id, headers) => socket.delete(`/users/${id}`, undefined, hea export default { getUsers, createUser, + getUser, getCurrentUser, updateUser, updateUserEmail, diff --git a/client/src/components/BoardActions/BoardActions.jsx b/client/src/components/BoardActions/BoardActions.jsx new file mode 100644 index 00000000..57456290 --- /dev/null +++ b/client/src/components/BoardActions/BoardActions.jsx @@ -0,0 +1,78 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import Filters from './Filters'; +import Memberships from '../Memberships'; + +import styles from './BoardActions.module.scss'; + +const BoardActions = React.memo( + ({ + memberships, + labels, + filterUsers, + filterLabels, + allUsers, + canEditMemberships, + onMembershipCreate, + onMembershipDelete, + onUserToFilterAdd, + onUserFromFilterRemove, + onLabelToFilterAdd, + onLabelFromFilterRemove, + onLabelCreate, + onLabelUpdate, + onLabelDelete, + }) => { + return ( +
+
+ +
+
+ +
+
+ ); + }, +); + +BoardActions.propTypes = { + /* eslint-disable react/forbid-prop-types */ + memberships: PropTypes.array.isRequired, + labels: PropTypes.array.isRequired, + filterUsers: PropTypes.array.isRequired, + filterLabels: PropTypes.array.isRequired, + allUsers: PropTypes.array.isRequired, + /* eslint-enable react/forbid-prop-types */ + canEditMemberships: PropTypes.bool.isRequired, + onMembershipCreate: PropTypes.func.isRequired, + onMembershipDelete: PropTypes.func.isRequired, + onUserToFilterAdd: PropTypes.func.isRequired, + onUserFromFilterRemove: PropTypes.func.isRequired, + onLabelToFilterAdd: PropTypes.func.isRequired, + onLabelFromFilterRemove: PropTypes.func.isRequired, + onLabelCreate: PropTypes.func.isRequired, + onLabelUpdate: PropTypes.func.isRequired, + onLabelDelete: PropTypes.func.isRequired, +}; + +export default BoardActions; diff --git a/client/src/components/BoardActions/BoardActions.module.scss b/client/src/components/BoardActions/BoardActions.module.scss new file mode 100644 index 00000000..f5211f93 --- /dev/null +++ b/client/src/components/BoardActions/BoardActions.module.scss @@ -0,0 +1,11 @@ +:global(#app) { + .action { + margin-right: 20px; + } + + .actions { + align-items: center; + display: flex; + margin: 20px 20px; + } +} diff --git a/client/src/components/BoardKanban/Filter.jsx b/client/src/components/BoardActions/Filters.jsx similarity index 88% rename from client/src/components/BoardKanban/Filter.jsx rename to client/src/components/BoardActions/Filters.jsx index 7d17712f..621c735c 100644 --- a/client/src/components/BoardKanban/Filter.jsx +++ b/client/src/components/BoardActions/Filters.jsx @@ -4,16 +4,16 @@ import { useTranslation } from 'react-i18next'; import User from '../User'; import Label from '../Label'; -import ProjectMembershipsPopup from '../ProjectMembershipsPopup'; +import BoardMembershipsPopup from '../BoardMembershipsPopup'; import LabelsPopup from '../LabelsPopup'; -import styles from './Filter.module.scss'; +import styles from './Filters.module.scss'; -const Filter = React.memo( +const Filters = React.memo( ({ users, labels, - allProjectMemberships, + allBoardMemberships, allLabels, onUserAdd, onUserRemove, @@ -40,10 +40,10 @@ const Filter = React.memo( ); return ( -
+ <> - user.id)} title={t('common.filterByMembers', { context: 'title', @@ -55,7 +55,7 @@ const Filter = React.memo( {`${t('common.members')}:`} {users.length === 0 && {t('common.all')}} - + {users.map((user) => ( ))} -
+ ); }, ); -Filter.propTypes = { +Filters.propTypes = { /* eslint-disable react/forbid-prop-types */ users: PropTypes.array.isRequired, labels: PropTypes.array.isRequired, - allProjectMemberships: PropTypes.array.isRequired, + allBoardMemberships: PropTypes.array.isRequired, allLabels: PropTypes.array.isRequired, /* eslint-enable react/forbid-prop-types */ onUserAdd: PropTypes.func.isRequired, @@ -117,4 +117,4 @@ Filter.propTypes = { onLabelDelete: PropTypes.func.isRequired, }; -export default Filter; +export default Filters; diff --git a/client/src/components/BoardKanban/Filter.module.scss b/client/src/components/BoardActions/Filters.module.scss similarity index 84% rename from client/src/components/BoardKanban/Filter.module.scss rename to client/src/components/BoardActions/Filters.module.scss index 381fbc9b..1af6dd23 100644 --- a/client/src/components/BoardKanban/Filter.module.scss +++ b/client/src/components/BoardActions/Filters.module.scss @@ -1,8 +1,6 @@ :global(#app) { .filter { - display: inline-block; - line-height: 0; - margin-right: 16px; + margin-right: 10px; } .filterButton { @@ -45,9 +43,4 @@ line-height: 20px; padding: 2px 12px; } - - .filters { - line-height: 0; - margin-bottom: 12px; - } } diff --git a/client/src/components/BoardActions/index.js b/client/src/components/BoardActions/index.js new file mode 100644 index 00000000..5629b791 --- /dev/null +++ b/client/src/components/BoardActions/index.js @@ -0,0 +1,3 @@ +import BoardActions from './BoardActions'; + +export default BoardActions; diff --git a/client/src/components/BoardKanban/BoardKanban.jsx b/client/src/components/BoardKanban/BoardKanban.jsx index 985e5705..50f92147 100755 --- a/client/src/components/BoardKanban/BoardKanban.jsx +++ b/client/src/components/BoardKanban/BoardKanban.jsx @@ -8,7 +8,6 @@ import DroppableTypes from '../../constants/DroppableTypes'; import ListContainer from '../../containers/ListContainer'; import CardModalContainer from '../../containers/CardModalContainer'; import ListAdd from './ListAdd'; -import Filter from './Filter'; import { ReactComponent as PlusMathIcon } from '../../assets/images/plus-math-icon.svg'; import styles from './BoardKanban.module.scss'; @@ -16,36 +15,19 @@ import styles from './BoardKanban.module.scss'; const parseDndId = (dndId) => dndId.split(':')[1]; const BoardKanban = React.memo( - ({ - listIds, - filterUsers, - filterLabels, - allProjectMemberships, - allLabels, - isCardModalOpened, - onListCreate, - onListMove, - onCardMove, - onUserToFilterAdd, - onUserFromFilterRemove, - onLabelToFilterAdd, - onLabelFromFilterRemove, - onLabelCreate, - onLabelUpdate, - onLabelDelete, - }) => { + ({ listIds, isCardModalOpened, canEdit, onListCreate, onListMove, onCardMove }) => { const [t] = useTranslation(); - const [isAddListOpened, setIsAddListOpened] = useState(false); + const [isListAddOpened, setIsListAddOpened] = useState(false); const wrapper = useRef(null); const prevPosition = useRef(null); const handleAddListClick = useCallback(() => { - setIsAddListOpened(true); + setIsListAddOpened(true); }, []); const handleAddListClose = useCallback(() => { - setIsAddListOpened(false); + setIsListAddOpened(false); }, []); const handleDragStart = useCallback(() => { @@ -119,10 +101,10 @@ const BoardKanban = React.memo( }, []); useEffect(() => { - if (isAddListOpened) { + if (isListAddOpened) { window.scroll(document.body.scrollWidth, 0); } - }, [listIds, isAddListOpened]); + }, [listIds, isListAddOpened]); useEffect(() => { window.addEventListener('mouseup', handleWindowMouseUp); @@ -138,19 +120,6 @@ const BoardKanban = React.memo( <> {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
-
@@ -165,26 +134,26 @@ const BoardKanban = React.memo( ))} {placeholder} -
- {isAddListOpened ? ( - - ) : ( - - )} -
+ {canEdit && ( +
+ {isListAddOpened ? ( + + ) : ( + + )} +
+ )}
)} @@ -198,24 +167,12 @@ const BoardKanban = React.memo( ); BoardKanban.propTypes = { - /* eslint-disable react/forbid-prop-types */ - listIds: PropTypes.array.isRequired, - filterUsers: PropTypes.array.isRequired, - filterLabels: PropTypes.array.isRequired, - allProjectMemberships: PropTypes.array.isRequired, - allLabels: PropTypes.array.isRequired, - /* eslint-enable react/forbid-prop-types */ + listIds: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types isCardModalOpened: PropTypes.bool.isRequired, + canEdit: PropTypes.bool.isRequired, onListCreate: PropTypes.func.isRequired, onListMove: PropTypes.func.isRequired, onCardMove: PropTypes.func.isRequired, - onUserToFilterAdd: PropTypes.func.isRequired, - onUserFromFilterRemove: PropTypes.func.isRequired, - onLabelToFilterAdd: PropTypes.func.isRequired, - onLabelFromFilterRemove: PropTypes.func.isRequired, - onLabelCreate: PropTypes.func.isRequired, - onLabelUpdate: PropTypes.func.isRequired, - onLabelDelete: PropTypes.func.isRequired, }; export default BoardKanban; diff --git a/client/src/components/BoardKanban/BoardKanban.module.scss b/client/src/components/BoardKanban/BoardKanban.module.scss index 060f7a19..bd413b9e 100644 --- a/client/src/components/BoardKanban/BoardKanban.module.scss +++ b/client/src/components/BoardKanban/BoardKanban.module.scss @@ -38,7 +38,7 @@ } .list { - margin: 0 20px 0 4px; + margin-right: 20px; width: 272px; } @@ -48,6 +48,16 @@ min-width: 100%; } + .panel { + align-items: center; + display: flex; + margin-bottom: 20px; + } + + .panelItem { + margin-right: 20px; + } + .wrapper { margin: 0 20px; } diff --git a/client/src/components/BoardMembershipsPopup.jsx b/client/src/components/BoardMembershipsPopup.jsx new file mode 100644 index 00000000..e092180c --- /dev/null +++ b/client/src/components/BoardMembershipsPopup.jsx @@ -0,0 +1,5 @@ +import { withPopup } from '../lib/popup'; + +import BoardMembershipsStep from './BoardMembershipsStep'; + +export default withPopup(BoardMembershipsStep); diff --git a/client/src/components/ProjectMembershipsStep/ProjectMembershipsStep.jsx b/client/src/components/BoardMembershipsStep/BoardMembershipsStep.jsx similarity index 88% rename from client/src/components/ProjectMembershipsStep/ProjectMembershipsStep.jsx rename to client/src/components/BoardMembershipsStep/BoardMembershipsStep.jsx index 0359a69e..86fa6948 100755 --- a/client/src/components/ProjectMembershipsStep/ProjectMembershipsStep.jsx +++ b/client/src/components/BoardMembershipsStep/BoardMembershipsStep.jsx @@ -6,9 +6,9 @@ import { Popup } from '../../lib/custom-ui'; import Item from './Item'; -import styles from './ProjectMembershipsStep.module.scss'; +import styles from './BoardMembershipsStep.module.scss'; -const ProjectMembershipsStep = React.memo( +const BoardMembershipsStep = React.memo( ({ items, currentUserIds, title, onUserSelect, onUserDeselect, onBack }) => { const [t] = useTranslation(); @@ -48,7 +48,7 @@ const ProjectMembershipsStep = React.memo( }, ); -ProjectMembershipsStep.propTypes = { +BoardMembershipsStep.propTypes = { /* eslint-disable react/forbid-prop-types */ items: PropTypes.array.isRequired, currentUserIds: PropTypes.array.isRequired, @@ -59,9 +59,9 @@ ProjectMembershipsStep.propTypes = { onBack: PropTypes.func, }; -ProjectMembershipsStep.defaultProps = { +BoardMembershipsStep.defaultProps = { title: 'common.members', onBack: undefined, }; -export default ProjectMembershipsStep; +export default BoardMembershipsStep; diff --git a/client/src/components/ProjectMembershipsStep/ProjectMembershipsStep.module.scss b/client/src/components/BoardMembershipsStep/BoardMembershipsStep.module.scss similarity index 100% rename from client/src/components/ProjectMembershipsStep/ProjectMembershipsStep.module.scss rename to client/src/components/BoardMembershipsStep/BoardMembershipsStep.module.scss diff --git a/client/src/components/ProjectMembershipsStep/Item.jsx b/client/src/components/BoardMembershipsStep/Item.jsx similarity index 100% rename from client/src/components/ProjectMembershipsStep/Item.jsx rename to client/src/components/BoardMembershipsStep/Item.jsx diff --git a/client/src/components/ProjectMembershipsStep/Item.module.scss b/client/src/components/BoardMembershipsStep/Item.module.scss similarity index 100% rename from client/src/components/ProjectMembershipsStep/Item.module.scss rename to client/src/components/BoardMembershipsStep/Item.module.scss diff --git a/client/src/components/BoardMembershipsStep/index.js b/client/src/components/BoardMembershipsStep/index.js new file mode 100755 index 00000000..b6b22639 --- /dev/null +++ b/client/src/components/BoardMembershipsStep/index.js @@ -0,0 +1,3 @@ +import BoardMembershipsStep from './BoardMembershipsStep'; + +export default BoardMembershipsStep; diff --git a/client/src/components/Boards/Boards.jsx b/client/src/components/Boards/Boards.jsx index 6e102014..fbde7ede 100755 --- a/client/src/components/Boards/Boards.jsx +++ b/client/src/components/Boards/Boards.jsx @@ -14,145 +14,117 @@ import EditPopup from './EditPopup'; import styles from './Boards.module.scss'; -const Boards = React.memo( - ({ items, currentId, isEditable, onCreate, onUpdate, onMove, onDelete }) => { - const tabsWrapper = useRef(null); +const Boards = React.memo(({ items, currentId, canEdit, onCreate, onUpdate, onMove, onDelete }) => { + const tabsWrapper = useRef(null); - const handleWheel = useCallback(({ deltaY }) => { - tabsWrapper.current.scrollBy({ - left: deltaY, - }); - }, []); + const handleWheel = useCallback(({ deltaY }) => { + tabsWrapper.current.scrollBy({ + left: deltaY, + }); + }, []); - const handleDragStart = useCallback(() => { - closePopup(); - }, []); + const handleDragStart = useCallback(() => { + closePopup(); + }, []); - const handleDragEnd = useCallback( - ({ draggableId, source, destination }) => { - if (!destination || source.index === destination.index) { - return; - } + const handleDragEnd = useCallback( + ({ draggableId, source, destination }) => { + if (!destination || source.index === destination.index) { + return; + } - onMove(draggableId, destination.index); - }, - [onMove], - ); + onMove(draggableId, destination.index); + }, + [onMove], + ); - const handleUpdate = useCallback( - (id, data) => { - onUpdate(id, data); - }, - [onUpdate], - ); + const handleUpdate = useCallback( + (id, data) => { + onUpdate(id, data); + }, + [onUpdate], + ); - const handleDelete = useCallback( - (id) => { - onDelete(id); - }, - [onDelete], - ); + const handleDelete = useCallback( + (id) => { + onDelete(id); + }, + [onDelete], + ); - const renderItems = useCallback( - (safeItems) => - safeItems.map((item) => ( -
-
- {item.isPersisted ? ( + const itemsNode = items.map((item, index) => ( + + {({ innerRef, draggableProps, dragHandleProps }) => ( + // eslint-disable-next-line react/jsx-props-no-spreading +
+
+ {item.isPersisted ? ( + <> {item.name} - ) : ( - {item.name} - )} -
-
- )), - [currentId], - ); - - const renderEditableItems = useCallback( - (safeItems) => - safeItems.map((item, index) => ( - - {({ innerRef, draggableProps, dragHandleProps }) => ( + {canEdit && ( + handleUpdate(item.id, data)} + onDelete={() => handleDelete(item.id)} + > + + + )} + + ) : ( // eslint-disable-next-line react/jsx-props-no-spreading -
-
- {item.isPersisted ? ( - - {item.name} - - ) : ( - // eslint-disable-next-line react/jsx-props-no-spreading - - {item.name} - - )} - {item.isPersisted && ( - handleUpdate(item.id, data)} - onDelete={() => handleDelete(item.id)} - > - - - )} -
+ + {item.name} + + )} +
+
+ )} + + )); + + return ( +
+
+ + + {({ innerRef, droppableProps, placeholder }) => ( + // eslint-disable-next-line react/jsx-props-no-spreading +
+ {itemsNode} + {placeholder} + {canEdit && ( + +
)} - - )), - [currentId, handleUpdate, handleDelete], - ); - - return ( -
-
- {isEditable ? ( - - - {({ innerRef, droppableProps, placeholder }) => ( - // eslint-disable-next-line react/jsx-props-no-spreading -
- {renderEditableItems(items)} - {placeholder} - -
- )} -
-
- ) : ( -
{renderItems(items)}
- )} -
+ +
- ); - }, -); +
+ ); +}); Boards.propTypes = { items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types currentId: PropTypes.string, - isEditable: PropTypes.bool.isRequired, + canEdit: PropTypes.bool.isRequired, onCreate: PropTypes.func.isRequired, onUpdate: PropTypes.func.isRequired, onMove: PropTypes.func.isRequired, diff --git a/client/src/components/Boards/Boards.module.scss b/client/src/components/Boards/Boards.module.scss index f7aa7499..cf90be15 100644 --- a/client/src/components/Boards/Boards.module.scss +++ b/client/src/components/Boards/Boards.module.scss @@ -30,6 +30,7 @@ .link { color: #fff; + cursor: pointer; display: block; line-height: 20px; padding: 10px 34px 6px 14px; @@ -99,15 +100,11 @@ } .wrapper { - border-bottom: 2px solid rgba(0, 0, 0, 0.24); + border-bottom: 1px solid rgba(0, 0, 0, 0.24); display: flex; flex: 1 1 auto; flex-direction: column; height: 38px; overflow: hidden; - - &:hover { - border-bottom: 0; - } } } diff --git a/client/src/components/Card/ActionsPopup.jsx b/client/src/components/Card/ActionsPopup.jsx index 7a5a8141..3b2a7e07 100644 --- a/client/src/components/Card/ActionsPopup.jsx +++ b/client/src/components/Card/ActionsPopup.jsx @@ -7,7 +7,7 @@ import { withPopup } from '../../lib/popup'; import { Popup } from '../../lib/custom-ui'; import { useSteps } from '../../hooks'; -import ProjectMembershipsStep from '../ProjectMembershipsStep'; +import BoardMembershipsStep from '../BoardMembershipsStep'; import LabelsStep from '../LabelsStep'; import DueDateEditStep from '../DueDateEditStep'; import TimerEditStep from '../TimerEditStep'; @@ -29,7 +29,7 @@ const ActionsStep = React.memo( ({ card, projectsToLists, - projectMemberships, + boardMemberships, currentUserIds, labels, currentLabelIds, @@ -102,8 +102,8 @@ const ActionsStep = React.memo( switch (step.type) { case StepTypes.USERS: return ( - + {({ innerRef, draggableProps, dragHandleProps }) => ( // eslint-disable-next-line react/jsx-props-no-spreading
@@ -144,40 +145,42 @@ const Card = React.memo( > {contentNode} - user.id)} - labels={allLabels} - currentLabelIds={labels.map((label) => label.id)} - onNameEdit={handleNameEdit} - onUpdate={onUpdate} - onMove={onMove} - onTransfer={onTransfer} - onDelete={onDelete} - onUserAdd={onUserAdd} - onUserRemove={onUserRemove} - onBoardFetch={onBoardFetch} - onLabelAdd={onLabelAdd} - onLabelRemove={onLabelRemove} - onLabelCreate={onLabelCreate} - onLabelUpdate={onLabelUpdate} - onLabelDelete={onLabelDelete} - > - - + {canEdit && ( + user.id)} + labels={allLabels} + currentLabelIds={labels.map((label) => label.id)} + onNameEdit={handleNameEdit} + onUpdate={onUpdate} + onMove={onMove} + onTransfer={onTransfer} + onDelete={onDelete} + onUserAdd={onUserAdd} + onUserRemove={onUserRemove} + onBoardFetch={onBoardFetch} + onLabelAdd={onLabelAdd} + onLabelRemove={onLabelRemove} + onLabelCreate={onLabelCreate} + onLabelUpdate={onLabelUpdate} + onLabelDelete={onLabelDelete} + > + + + )} ) : ( {contentNode} @@ -208,9 +211,10 @@ Card.propTypes = { labels: PropTypes.array.isRequired, tasks: PropTypes.array.isRequired, allProjectsToLists: PropTypes.array.isRequired, - allProjectMemberships: PropTypes.array.isRequired, + allBoardMemberships: PropTypes.array.isRequired, allLabels: PropTypes.array.isRequired, /* eslint-enable react/forbid-prop-types */ + canEdit: PropTypes.bool.isRequired, onUpdate: PropTypes.func.isRequired, onMove: PropTypes.func.isRequired, onTransfer: PropTypes.func.isRequired, diff --git a/client/src/components/Card/Card.module.scss b/client/src/components/Card/Card.module.scss index 834dc30d..217a3f72 100644 --- a/client/src/components/Card/Card.module.scss +++ b/client/src/components/Card/Card.module.scss @@ -54,7 +54,6 @@ border-radius: 3px; box-shadow: 0 1px 0 #ccc; position: relative; - cursor: pointer; &:hover { background: #f5f6f7; @@ -67,7 +66,6 @@ } .content { - cursor: grab; display: block; &:after { diff --git a/client/src/components/Card/Tasks.module.scss b/client/src/components/Card/Tasks.module.scss index a7e9d914..4ca963b3 100644 --- a/client/src/components/Card/Tasks.module.scss +++ b/client/src/components/Card/Tasks.module.scss @@ -2,7 +2,6 @@ .button { background: transparent; border: none; - cursor: pointer; line-height: 0; margin: 0 -8px; outline: none; @@ -12,7 +11,6 @@ .count { color: #888; - cursor: pointer; display: inline-block; font-size: 12px; line-height: 12px; @@ -77,7 +75,6 @@ .tasks { color: #333; - cursor: grab; list-style: none; margin: -2px 0 0; padding-left: 0; diff --git a/client/src/components/CardModal/Actions/Actions.jsx b/client/src/components/CardModal/Actions/Actions.jsx index c36a6bfe..7ba66bf8 100755 --- a/client/src/components/CardModal/Actions/Actions.jsx +++ b/client/src/components/CardModal/Actions/Actions.jsx @@ -14,7 +14,8 @@ const Actions = React.memo( items, isFetching, isAllFetched, - isEditable, + canEdit, + canEditAllComments, onFetch, onCommentCreate, onCommentUpdate, @@ -38,13 +39,15 @@ const Actions = React.memo( return ( <> -
-
- -
{t('common.addComment')}
- + {canEdit && ( +
+
+ +
{t('common.addComment')}
+ +
-
+ )}
@@ -59,7 +62,7 @@ const Actions = React.memo( createdAt={item.createdAt} isPersisted={item.isPersisted} user={item.user} - isEditable={isEditable} + canEdit={(item.user.isCurrent && canEdit) || canEditAllComments} onUpdate={(data) => handleCommentUpdate(item.id, data)} onDelete={() => handleCommentDelete(item.id)} /> @@ -91,7 +94,8 @@ Actions.propTypes = { items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types isFetching: PropTypes.bool.isRequired, isAllFetched: PropTypes.bool.isRequired, - isEditable: PropTypes.bool.isRequired, + canEdit: PropTypes.bool.isRequired, + canEditAllComments: PropTypes.bool.isRequired, onFetch: PropTypes.func.isRequired, onCommentCreate: PropTypes.func.isRequired, onCommentUpdate: PropTypes.func.isRequired, diff --git a/client/src/components/CardModal/Actions/ItemComment.jsx b/client/src/components/CardModal/Actions/ItemComment.jsx index 23f33aee..8518a2e6 100755 --- a/client/src/components/CardModal/Actions/ItemComment.jsx +++ b/client/src/components/CardModal/Actions/ItemComment.jsx @@ -12,7 +12,7 @@ import DeletePopup from '../../DeletePopup'; import styles from './ItemComment.module.scss'; const ItemComment = React.memo( - ({ data, createdAt, isPersisted, user, isEditable, onUpdate, onDelete }) => { + ({ data, createdAt, isPersisted, user, canEdit, onUpdate, onDelete }) => { const [t] = useTranslation(); const commentEdit = useRef(null); @@ -38,17 +38,17 @@ const ItemComment = React.memo(
<> - - - {user.isCurrent && ( + + {data.text} + + {canEdit && ( + - )} - {(user.isCurrent || isEditable) && ( - )} - + + )}
@@ -78,7 +78,7 @@ ItemComment.propTypes = { createdAt: PropTypes.instanceOf(Date).isRequired, isPersisted: PropTypes.bool.isRequired, user: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types - isEditable: PropTypes.bool.isRequired, + canEdit: PropTypes.bool.isRequired, onUpdate: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, }; diff --git a/client/src/components/CardModal/AttachmentAddZone/AttachmentAddZone.module.scss b/client/src/components/CardModal/AttachmentAddZone/AttachmentAddZone.module.scss index 54fd00ec..4b0742d5 100644 --- a/client/src/components/CardModal/AttachmentAddZone/AttachmentAddZone.module.scss +++ b/client/src/components/CardModal/AttachmentAddZone/AttachmentAddZone.module.scss @@ -10,7 +10,7 @@ position: absolute; text-align: center; width: 100%; - z-index: 1; + z-index: 2000; } .wrapper { diff --git a/client/src/components/CardModal/CardModal.jsx b/client/src/components/CardModal/CardModal.jsx index fb3522b8..9b6f100f 100755 --- a/client/src/components/CardModal/CardModal.jsx +++ b/client/src/components/CardModal/CardModal.jsx @@ -16,7 +16,7 @@ import User from '../User'; import Label from '../Label'; import DueDate from '../DueDate'; import Timer from '../Timer'; -import ProjectMembershipsPopup from '../ProjectMembershipsPopup'; +import BoardMembershipsPopup from '../BoardMembershipsPopup'; import LabelsPopup from '../LabelsPopup'; import DueDateEditPopup from '../DueDateEditPopup'; import TimerEditPopup from '../TimerEditPopup'; @@ -43,9 +43,10 @@ const CardModal = React.memo( attachments, actions, allProjectsToLists, - allProjectMemberships, + allBoardMemberships, allLabels, - isEditable, + canEdit, + canEditAllCommentActions, onUpdate, onMove, onTransfer, @@ -126,137 +127,163 @@ const CardModal = React.memo( const userIds = users.map((user) => user.id); const labelIds = labels.map((label) => label.id); - return ( - - - - - -
- -
- -
-
-
-
- - - {(users.length > 0 || labels.length > 0 || dueDate || timer) && ( -
- {users.length > 0 && ( -
-
- {t('common.members', { - context: 'title', - })} -
- {users.map((user) => ( - - - - - - ))} - - - -
- )} - {labels.length > 0 && ( -
-
- {t('common.labels', { - context: 'title', - })} -
- {labels.map((label) => ( - - - - - ))} - + + ) : ( + + )} + + ))} + {canEdit && ( + + - -
- )} - {dueDate && ( -
-
- {t('common.dueDate', { - context: 'title', - })} -
- - - - - -
- )} - {timer && ( -
-
- {t('common.timer', { - context: 'title', - })} -
- - - - - -
+ + + )}
)} -
-
- -
{t('common.description')}
+ {labels.length > 0 && ( +
+
+ {t('common.labels', { + context: 'title', + })} +
+ {labels.map((label) => ( + + {canEdit ? ( + + + ) : ( + + ))} + {canEdit && ( + + + + )} +
+ )} + {dueDate && ( +
+
+ {t('common.dueDate', { + context: 'title', + })} +
+ + {canEdit ? ( + + + + ) : ( + + )} + +
+ )} + {timer && ( +
+
+ {t('common.timer', { + context: 'title', + })} +
+ + {canEdit ? ( + + + + ) : ( + + )} + +
+ )} +
+ )} + {(description || canEdit) && ( +
+
+ +
{t('common.description')}
+ {canEdit ? ( {description ? ( ) : ( )} -
-
-
-
- -
{t('common.tasks')}
- -
-
- {attachments.length > 0 && ( -
-
- -
{t('common.attachments')}
- + ) : ( +
+ + {description} +
-
- )} - - - -
- {t('action.addToCard')} - - - - - - - - - - - - - - - + )}
-
- {t('common.actions')} +
+ )} + {(tasks.length > 0 || canEdit) && ( +
+
+ +
{t('common.tasks')}
+ +
+
+ )} + {attachments.length > 0 && ( +
+
+ +
{t('common.attachments')}
+ +
+
+ )} + +
+ {canEdit && ( + +
+ {t('action.addToCard')} + + + + + + + + + + + + + + + +
+
+ {t('common.actions')} + + - - - - - - -
-
- - - + + + + +
+ + )} + + + ); + + return ( + + {canEdit ? ( + {contentNode} + ) : ( + contentNode + )} ); }, @@ -425,10 +474,11 @@ CardModal.propTypes = { attachments: PropTypes.array.isRequired, actions: PropTypes.array.isRequired, allProjectsToLists: PropTypes.array.isRequired, - allProjectMemberships: PropTypes.array.isRequired, + allBoardMemberships: PropTypes.array.isRequired, allLabels: PropTypes.array.isRequired, /* eslint-enable react/forbid-prop-types */ - isEditable: PropTypes.bool.isRequired, + canEdit: PropTypes.bool.isRequired, + canEditAllCommentActions: PropTypes.bool.isRequired, onUpdate: PropTypes.func.isRequired, onMove: PropTypes.func.isRequired, onTransfer: PropTypes.func.isRequired, diff --git a/client/src/components/CardModal/CardModal.module.scss b/client/src/components/CardModal/CardModal.module.scss index 74406ce4..012871d4 100644 --- a/client/src/components/CardModal/CardModal.module.scss +++ b/client/src/components/CardModal/CardModal.module.scss @@ -44,7 +44,6 @@ } .attachment { - cursor: pointer; display: inline-block; margin: 0 4px 4px 0; max-width: 100%; @@ -70,6 +69,7 @@ border: none; border-radius: 3px; color: #6b808c; + cursor: pointer; line-height: 20px; outline: none; padding: 6px 14px; @@ -141,6 +141,13 @@ } .headerTitle { + color: #17394d; + font-size: 20px; + font-weight: 700; + line-height: 24px; + } + + .headerTitleWrapper { margin: 4px 0; padding: 6px 0 0; } @@ -193,8 +200,4 @@ margin: 0 8px 4px 0; text-transform: uppercase; } - - /* .wrapper { - min-width: 768px; - } */ } diff --git a/client/src/components/CardModal/Tasks/Item.jsx b/client/src/components/CardModal/Tasks/Item.jsx index a9370809..45ac7e2a 100755 --- a/client/src/components/CardModal/Tasks/Item.jsx +++ b/client/src/components/CardModal/Tasks/Item.jsx @@ -8,14 +8,14 @@ import ActionsPopup from './ActionsPopup'; import styles from './Item.module.scss'; -const Item = React.memo(({ name, isCompleted, isPersisted, onUpdate, onDelete }) => { +const Item = React.memo(({ name, isCompleted, isPersisted, canEdit, onUpdate, onDelete }) => { const nameEdit = useRef(null); const handleClick = useCallback(() => { - if (isPersisted) { + if (isPersisted && canEdit) { nameEdit.current.open(); } - }, [isPersisted]); + }, [isPersisted, canEdit]); const handleNameUpdate = useCallback( (newName) => { @@ -41,23 +41,26 @@ const Item = React.memo(({ name, isCompleted, isPersisted, onUpdate, onDelete }) -
+
{/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */} - + {/* eslint-enable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */} {name} - {isPersisted && ( + {isPersisted && canEdit && ( - + {canEdit && ( + + + + )} ); }); Tasks.propTypes = { items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types + canEdit: PropTypes.bool.isRequired, onCreate: PropTypes.func.isRequired, onUpdate: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, diff --git a/client/src/components/CoreWrapper.jsx b/client/src/components/CoreWrapper.jsx deleted file mode 100755 index d822ba14..00000000 --- a/client/src/components/CoreWrapper.jsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { Loader } from 'semantic-ui-react'; - -import CoreContainer from '../containers/CoreContainer'; -import SocketStatusContainer from '../containers/SocketStatusContainer'; - -const CoreWrapper = React.memo(({ isInitializing }) => ( - <> - {isInitializing ? : } - - -)); - -CoreWrapper.propTypes = { - isInitializing: PropTypes.bool.isRequired, -}; - -export default CoreWrapper; diff --git a/client/src/components/CoreWrapper/CoreWrapper.jsx b/client/src/components/CoreWrapper/CoreWrapper.jsx new file mode 100755 index 00000000..1a03521e --- /dev/null +++ b/client/src/components/CoreWrapper/CoreWrapper.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useTranslation, Trans } from 'react-i18next'; +import { Loader } from 'semantic-ui-react'; + +import CoreContainer from '../../containers/CoreContainer'; + +import styles from './CoreWrapper.module.scss'; + +const CoreWrapper = React.memo(({ isInitializing, isSocketDisconnected }) => { + const [t] = useTranslation(); + + return ( + <> + {isInitializing ? : } + {isSocketDisconnected && ( +
+
{t('common.noConnectionToServer')}
+
+ + All changes will be automatically saved +
+ after connection restored +
+
+
+ )} + + ); +}); + +CoreWrapper.propTypes = { + isInitializing: PropTypes.bool.isRequired, + isSocketDisconnected: PropTypes.bool.isRequired, +}; + +export default CoreWrapper; diff --git a/client/src/components/SocketStatus/SocketStatus.module.scss b/client/src/components/CoreWrapper/CoreWrapper.module.scss similarity index 66% rename from client/src/components/SocketStatus/SocketStatus.module.scss rename to client/src/components/CoreWrapper/CoreWrapper.module.scss index ab97c226..58c5f56b 100644 --- a/client/src/components/SocketStatus/SocketStatus.module.scss +++ b/client/src/components/CoreWrapper/CoreWrapper.module.scss @@ -1,29 +1,5 @@ :global(#app) { - .button { - background: none; - border: none; - color: #fff; - cursor: pointer; - outline: none; - padding: 0; - text-decoration: underline; - } - - .content { - color: #fff; - font-size: 16px; - line-height: 1.4; - } - - .header { - color: #fff; - font-size: 24px; - font-weight: bold; - line-height: 1.2; - margin-bottom: 8px; - } - - .wrapper { + .message { background: #eb5a46; border-radius: 4px; bottom: 20px; @@ -34,4 +10,18 @@ width: 390px; z-index: 10001; } + + .messageContent { + color: #fff; + font-size: 16px; + line-height: 1.4; + } + + .messageHeader { + color: #fff; + font-size: 24px; + font-weight: bold; + line-height: 1.2; + margin-bottom: 8px; + } } diff --git a/client/src/components/CoreWrapper/index.js b/client/src/components/CoreWrapper/index.js new file mode 100644 index 00000000..011d0a05 --- /dev/null +++ b/client/src/components/CoreWrapper/index.js @@ -0,0 +1,3 @@ +import CoreWrapper from './CoreWrapper'; + +export default CoreWrapper; diff --git a/client/src/components/Fixed/Fixed.jsx b/client/src/components/Fixed/Fixed.jsx index c46765ae..e7b67f00 100644 --- a/client/src/components/Fixed/Fixed.jsx +++ b/client/src/components/Fixed/Fixed.jsx @@ -3,22 +3,26 @@ import PropTypes from 'prop-types'; import HeaderContainer from '../../containers/HeaderContainer'; import ProjectContainer from '../../containers/ProjectContainer'; +import BoardActionsContainer from '../../containers/BoardActionsContainer'; import styles from './Fixed.module.scss'; -const Fixed = ({ projectId }) => ( +const Fixed = ({ projectId, board }) => (
{projectId && } + {board && !board.isFetching && }
); Fixed.propTypes = { projectId: PropTypes.string, + board: PropTypes.object, // eslint-disable-line react/forbid-prop-types }; Fixed.defaultProps = { projectId: undefined, + board: undefined, }; export default Fixed; diff --git a/client/src/components/Header/Header.jsx b/client/src/components/Header/Header.jsx index 93175fd0..a6db9219 100755 --- a/client/src/components/Header/Header.jsx +++ b/client/src/components/Header/Header.jsx @@ -1,5 +1,6 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; +import classNames from 'classnames'; import { Link } from 'react-router-dom'; import { Icon, Menu } from 'semantic-ui-react'; @@ -11,52 +12,98 @@ import styles from './Header.module.scss'; const Header = React.memo( ({ + project, user, notifications, - isEditable, - onUsers, + canEditProject, + canEditUsers, + onProjectSettingsClick, + onUsersClick, onNotificationDelete, - onUserSettings, + onUserSettingsClick, onLogout, - }) => ( -
- - Planka - - - - {isEditable && ( - - - + }) => { + const handleProjectSettingsClick = useCallback(() => { + if (canEditProject) { + onProjectSettingsClick(); + } + }, [canEditProject, onProjectSettingsClick]); + + return ( +
+ {!project && ( + + Planka + + )} + + {project && ( + + + + + + {project.name} + + )} - - - - {notifications.length > 0 && ( - {notifications.length} - )} - - - - {user.name} - - - -
- ), + + {canEditUsers && ( + + + + )} + + + + {notifications.length > 0 && ( + {notifications.length} + )} + + + + + {user.name} + + + +
+
+ ); + }, ); Header.propTypes = { /* eslint-disable react/forbid-prop-types */ + project: PropTypes.object, user: PropTypes.object.isRequired, notifications: PropTypes.array.isRequired, /* eslint-enable react/forbid-prop-types */ - isEditable: PropTypes.bool.isRequired, - onUsers: PropTypes.func.isRequired, + canEditProject: PropTypes.bool.isRequired, + canEditUsers: PropTypes.bool.isRequired, + onProjectSettingsClick: PropTypes.func.isRequired, + onUsersClick: PropTypes.func.isRequired, onNotificationDelete: PropTypes.func.isRequired, - onUserSettings: PropTypes.func.isRequired, + onUserSettingsClick: PropTypes.func.isRequired, onLogout: PropTypes.func.isRequired, }; +Header.defaultProps = { + project: undefined, +}; + export default Header; diff --git a/client/src/components/Header/Header.module.scss b/client/src/components/Header/Header.module.scss index 60a41261..407ae0da 100644 --- a/client/src/components/Header/Header.module.scss +++ b/client/src/components/Header/Header.module.scss @@ -1,19 +1,26 @@ :global(#app) { .item { + cursor: auto; + user-select: auto; + &:before { background: none; } - &:hover { - background: rgba(0, 0, 0, 0.32); + &:active, &:hover { + background: transparent; + color: rgba(255, 255, 255, 0.9); } } + .itemHoverable:hover { + cursor: pointer; + background: rgba(0, 0, 0, 0.32); + } + .logo { color: #fff; flex: 0 0 auto; - font-size: 20px; - font-weight: bold; letter-spacing: 3.5px; line-height: 50px; padding: 0 16px; @@ -54,6 +61,11 @@ width: 16px; } + .title { + font-size: 20px; + font-weight: bold; + } + .wrapper { background: rgba(0, 0, 0, 0.24); display: flex; diff --git a/client/src/components/List/ActionsPopup.jsx b/client/src/components/List/ActionsPopup.jsx index ab6f6464..d58d3aa5 100755 --- a/client/src/components/List/ActionsPopup.jsx +++ b/client/src/components/List/ActionsPopup.jsx @@ -65,13 +65,11 @@ const ActionsStep = React.memo(({ onNameEdit, onCardAdd, onDelete, onClose }) => context: 'title', })} - {onDelete && ( - - {t('action.deleteList', { - context: 'title', - })} - - )} + + {t('action.deleteList', { + context: 'title', + })} + @@ -81,12 +79,8 @@ const ActionsStep = React.memo(({ onNameEdit, onCardAdd, onDelete, onClose }) => ActionsStep.propTypes = { onNameEdit: PropTypes.func.isRequired, onCardAdd: PropTypes.func.isRequired, - onDelete: PropTypes.func, + onDelete: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, }; -ActionsStep.defaultProps = { - onDelete: undefined, -}; - export default withPopup(ActionsStep); diff --git a/client/src/components/List/List.jsx b/client/src/components/List/List.jsx index 61155567..fd322470 100755 --- a/client/src/components/List/List.jsx +++ b/client/src/components/List/List.jsx @@ -15,7 +15,7 @@ import { ReactComponent as PlusMathIcon } from '../../assets/images/plus-math-ic import styles from './List.module.scss'; const List = React.memo( - ({ id, index, name, isPersisted, cardIds, onUpdate, onDelete, onCardCreate }) => { + ({ id, index, name, isPersisted, cardIds, canEdit, onUpdate, onDelete, onCardCreate }) => { const [t] = useTranslation(); const [isAddCardOpened, setIsAddCardOpened] = useState(false); @@ -23,10 +23,10 @@ const List = React.memo( const listWrapper = useRef(null); const handleHeaderClick = useCallback(() => { - if (isPersisted) { + if (isPersisted && canEdit) { nameEdit.current.open(); } - }, [isPersisted]); + }, [isPersisted, canEdit]); const handleNameUpdate = useCallback( (newName) => { @@ -73,11 +73,13 @@ const List = React.memo( ))} {placeholder} - + {canEdit && ( + + )}
)} @@ -85,51 +87,64 @@ const List = React.memo( ); return ( - + {({ innerRef, draggableProps, dragHandleProps }) => ( - // eslint-disable-next-line react/jsx-props-no-spreading -
+
{/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions, react/jsx-props-no-spreading */} -
- {/* eslint-enable jsx-a11y/click-events-have-key-events, +
+
+ {/* eslint-enable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions, react/jsx-props-no-spreading */} - -
{name}
-
- {isPersisted && ( - +
{name}
+ + {isPersisted && canEdit && ( + + + + )} +
+
+
{cardsNode}
+
+ {!isAddCardOpened && canEdit && ( + - + + + {cardIds.length > 0 ? t('action.addAnotherCard') : t('action.addCard')} + + )}
-
-
{cardsNode}
-
- {!isAddCardOpened && ( - - )}
)} @@ -143,13 +158,10 @@ List.propTypes = { name: PropTypes.string.isRequired, isPersisted: PropTypes.bool.isRequired, cardIds: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types + canEdit: PropTypes.bool.isRequired, onUpdate: PropTypes.func.isRequired, - onDelete: PropTypes.func, + onDelete: PropTypes.func.isRequired, onCardCreate: PropTypes.func.isRequired, }; -List.defaultProps = { - onDelete: undefined, -}; - export default List; diff --git a/client/src/components/List/List.module.scss b/client/src/components/List/List.module.scss index 536c1a00..7b47c893 100644 --- a/client/src/components/List/List.module.scss +++ b/client/src/components/List/List.module.scss @@ -2,7 +2,6 @@ .addCardButton { background: #dfe3e6; border: none; - border-radius: 0 0 3px 3px; color: #6b808c; cursor: pointer; display: block; @@ -37,76 +36,11 @@ } .cards { - flex: 1 1 auto; min-height: 1px; } - .header { - background: #dfe3e6; - border-radius: 3px 3px 0 0; - box-sizing: none; - flex: 0 0 auto; - margin-bottom: 0; - outline: none; - padding: 6px 36px 4px 8px; - position: relative; - - &:hover .target { - opacity: 1; - } - } - - .headerButton { - background: none; - box-shadow: none; - color: #798d99; - line-height: 32px; - margin: 0; - opacity: 0; - padding: 0; - position: absolute; - right: 2px; - top: 2px; - width: 32px; - - &:hover { - background: rgba(9, 30, 66, 0.13); - color: #516b7a; - } - } - - .headerName { - background: transparent; - border-color: transparent; - border-radius: 3px; - color: #17394d; - font-weight: bold; - line-height: 20px; - margin: 0; - max-height: 256px; - outline: none; - overflow: hidden; - overflow-wrap: break-word; - padding: 4px 8px; - resize: none; - width: 100%; - word-break: break-word; - } - - .list { - background: #dfe3e6; - box-sizing: border-box; - display: flex; - flex-direction: column; - padding: 0 8px; - position: relative; - white-space: normal; - width: 272px; - } - - .listWrapper { - background: #dfe3e6; - max-height: calc(100vh - 300px); + .cardsInnerWrapper { + max-height: calc(100vh - 268px); overflow-x: hidden; overflow-y: auto; scrollbar-width: thin; @@ -129,16 +63,69 @@ } } - .listWrapperFull { - max-height: calc(100vh - 264px); + .cardsInnerWrapperFull { + max-height: calc(100vh - 232px); } - .wrapper { - border-radius: 3px; - flex: 0 0 auto; - margin: 0 4px; - overflow: hidden; - vertical-align: top; + .cardsOuterWrapper { + padding: 0 8px; + white-space: normal; width: 272px; } + + .header { + outline: none; + padding: 6px 36px 4px 8px; + position: relative; + + &:hover .target { + opacity: 1; + } + } + + .headerEditable { + cursor: pointer; + } + + .headerButton { + background: none; + box-shadow: none; + color: #798d99; + line-height: 32px; + margin: 0; + opacity: 0; + padding: 0; + position: absolute; + right: 2px; + top: 2px; + width: 32px; + + &:hover { + background: rgba(9, 30, 66, 0.13); + color: #516b7a; + } + } + + .headerName { + color: #17394d; + font-weight: bold; + line-height: 20px; + max-height: 256px; + outline: none; + overflow: hidden; + overflow-wrap: break-word; + padding: 4px 8px; + word-break: break-word; + } + + .innerWrapper { + margin-right: 8px; + width: 272px; + } + + .outerWrapper { + background: #dfe3e6; + border-radius: 3px; + overflow: hidden; + } } diff --git a/client/src/components/Memberships/ActionsPopup.jsx b/client/src/components/Memberships/ActionsPopup.jsx new file mode 100755 index 00000000..d0ed7223 --- /dev/null +++ b/client/src/components/Memberships/ActionsPopup.jsx @@ -0,0 +1,110 @@ +import React, { useCallback } from 'react'; +import PropTypes from 'prop-types'; +import { useTranslation } from 'react-i18next'; +import { Button } from 'semantic-ui-react'; +import { withPopup } from '../../lib/popup'; + +import { useSteps } from '../../hooks'; +import User from '../User'; +import DeleteStep from '../DeleteStep'; + +import styles from './ActionsPopup.module.scss'; + +const StepTypes = { + DELETE: 'DELETE', +}; + +const ActionsStep = React.memo( + ({ + user, + leaveButtonContent, + leaveConfirmationTitle, + leaveConfirmationContent, + leaveConfirmationButtonContent, + deleteButtonContent, + deleteConfirmationTitle, + deleteConfirmationContent, + deleteConfirmationButtonContent, + canLeave, + canDelete, + onDelete, + }) => { + const [t] = useTranslation(); + const [step, openStep, handleBack] = useSteps(); + + const handleDeleteClick = useCallback(() => { + openStep(StepTypes.DELETE); + }, [openStep]); + + if (step && step.type === StepTypes.DELETE) { + return ( + + ); + } + + return ( + <> + + + + +
{user.name}
+
{user.email}
+ {user.isCurrent + ? canLeave && ( +
- {imageCoverUrl && ( - /* TODO: wrap in button */ - - )} -
- -
- {imageCoverUrl && ( -
-
- )} - {defaultValue && ( -
-
- )} - - - ); - }, -); - -BackgroundEditStep.propTypes = { - defaultValue: PropTypes.object, // eslint-disable-line react/forbid-prop-types - imageCoverUrl: PropTypes.string, - isImageUpdating: PropTypes.bool.isRequired, - onUpdate: PropTypes.func.isRequired, - onImageUpdate: PropTypes.func.isRequired, - onImageDelete: PropTypes.func.isRequired, - onBack: PropTypes.func.isRequired, -}; - -BackgroundEditStep.defaultProps = { - defaultValue: undefined, - imageCoverUrl: undefined, -}; - -export default BackgroundEditStep; diff --git a/client/src/components/Project/ActionsPopup/NameEditStep.jsx b/client/src/components/Project/ActionsPopup/NameEditStep.jsx deleted file mode 100644 index cea86744..00000000 --- a/client/src/components/Project/ActionsPopup/NameEditStep.jsx +++ /dev/null @@ -1,67 +0,0 @@ -import React, { useCallback, useEffect, useRef } from 'react'; -import PropTypes from 'prop-types'; -import { useTranslation } from 'react-i18next'; -import { Button, Form } from 'semantic-ui-react'; -import { Input, Popup } from '../../../lib/custom-ui'; - -import { useField } from '../../../hooks'; - -import styles from './NameEditStep.module.scss'; - -const NameEditStep = React.memo(({ defaultValue, onUpdate, onBack, onClose }) => { - const [t] = useTranslation(); - const [value, handleFieldChange] = useField(defaultValue); - - const field = useRef(null); - - const handleSubmit = useCallback(() => { - const cleanValue = value.trim(); - - if (!cleanValue) { - field.current.select(); - return; - } - - if (cleanValue !== defaultValue) { - onUpdate(cleanValue); - } - - onClose(); - }, [defaultValue, onUpdate, onClose, value]); - - useEffect(() => { - field.current.select(); - }, []); - - return ( - <> - - {t('common.editTitle', { - context: 'title', - })} - - -
-
{t('common.title')}
- -
- ); - }, -); + {isSettingsModalOpened && } + + ); +}); Project.propTypes = { - name: PropTypes.string.isRequired, - /* eslint-disable react/forbid-prop-types */ - background: PropTypes.object, - backgroundImage: PropTypes.object, - /* eslint-enable react/forbid-prop-types */ - isBackgroundImageUpdating: PropTypes.bool.isRequired, - /* eslint-disable react/forbid-prop-types */ - memberships: PropTypes.array.isRequired, - allUsers: PropTypes.array.isRequired, - /* eslint-enable react/forbid-prop-types */ - isEditable: PropTypes.bool.isRequired, - onUpdate: PropTypes.func.isRequired, - onBackgroundImageUpdate: PropTypes.func.isRequired, - onDelete: PropTypes.func.isRequired, - onMembershipCreate: PropTypes.func.isRequired, - onMembershipDelete: PropTypes.func.isRequired, -}; - -Project.defaultProps = { - background: undefined, - backgroundImage: undefined, + isSettingsModalOpened: PropTypes.bool.isRequired, }; export default Project; diff --git a/client/src/components/Project/Project.module.scss b/client/src/components/Project/Project.module.scss index 17ecef6e..f72b8535 100644 --- a/client/src/components/Project/Project.module.scss +++ b/client/src/components/Project/Project.module.scss @@ -1,56 +1,9 @@ :global(#app) { - .addUser { - background: rgba(0, 0, 0, 0.24); - border-radius: 50%; - box-shadow: none; - color: #fff; - line-height: 36px; - margin: 0; - padding: 0; - transition: all 0.1s ease 0s; - vertical-align: top; - width: 36px; - - &:hover { - background: rgba(0, 0, 0, 0.32); - } - } - - .header { - flex: 0 0 auto; - margin: 0 -1rem; - } - - .name { - background: transparent; - box-shadow: none; - color: #fff; - display: inline-block; - font-size: 32px; - font-weight: bold; - line-height: 36px; - margin-right: 8px; - padding: 0; - } - - .user { - display: inline-block; - margin: 0 -4px 0 0; - vertical-align: top; - line-height: 0; - } - - .users { - display: inline-block; - margin-left: 8px; - vertical-align: top; - } - .wrapper { background: rgba(0, 0, 0, 0.16); display: flex; flex-direction: column; height: 100%; - padding: 0 20px; + padding: 10px 20px 0; } } diff --git a/client/src/components/ProjectMembershipsPopup.jsx b/client/src/components/ProjectMembershipsPopup.jsx deleted file mode 100644 index 4a7c2ba0..00000000 --- a/client/src/components/ProjectMembershipsPopup.jsx +++ /dev/null @@ -1,5 +0,0 @@ -import { withPopup } from '../lib/popup'; - -import ProjectMembershipsStep from './ProjectMembershipsStep'; - -export default withPopup(ProjectMembershipsStep); diff --git a/client/src/components/ProjectMembershipsStep/index.js b/client/src/components/ProjectMembershipsStep/index.js deleted file mode 100755 index 2a706144..00000000 --- a/client/src/components/ProjectMembershipsStep/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import ProjectMembershipsStep from './ProjectMembershipsStep'; - -export default ProjectMembershipsStep; diff --git a/client/src/components/ProjectSettingsModal/BackgroundPane.jsx b/client/src/components/ProjectSettingsModal/BackgroundPane.jsx new file mode 100644 index 00000000..ce154a42 --- /dev/null +++ b/client/src/components/ProjectSettingsModal/BackgroundPane.jsx @@ -0,0 +1,168 @@ +import { dequal } from 'dequal'; +import upperFirst from 'lodash/upperFirst'; +import camelCase from 'lodash/camelCase'; +import React, { useCallback, useEffect, useRef } from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import { useTranslation } from 'react-i18next'; +import { Button, Image } from 'semantic-ui-react'; +import { FilePicker } from '../../lib/custom-ui'; + +import ProjectBackgroundGradients from '../../constants/ProjectBackgroundGradients'; +import { ProjectBackgroundTypes } from '../../constants/Enums'; + +import styles from './BackgroundPane.module.scss'; +import globalStyles from '../../styles.module.scss'; + +const BackgroundPane = React.memo( + ({ item, imageCoverUrl, isImageUpdating, onUpdate, onImageUpdate, onImageDelete }) => { + const [t] = useTranslation(); + + const field = useRef(null); + + const handleGradientClick = useCallback( + (_, { value }) => { + const background = { + type: ProjectBackgroundTypes.GRADIENT, + name: value, + }; + + if (!dequal(background, item)) { + onUpdate(background); + } + }, + [item, onUpdate], + ); + + const handleImageClick = useCallback(() => { + const background = { + type: ProjectBackgroundTypes.IMAGE, + }; + + if (!dequal(background, item)) { + onUpdate(background); + } + }, [item, onUpdate]); + + const handleFileSelect = useCallback( + (file) => { + onImageUpdate({ + file, + }); + }, + [onImageUpdate], + ); + + const handleDeleteImageClick = useCallback(() => { + onImageDelete(); + }, [onImageDelete]); + + const handleRemoveClick = useCallback(() => { + onUpdate(null); + }, [onUpdate]); + + useEffect(() => { + field.current.focus(); + }, []); + + return ( + <> +
+ {ProjectBackgroundGradients.map((gradient) => ( +
+ {imageCoverUrl && ( + // TODO: wrap in button + + )} +
+
+ +
+ {imageCoverUrl && ( +
+
+ )} + {item && ( +
+
+ )} +
+ + ); + }, +); + +BackgroundPane.propTypes = { + item: PropTypes.object, // eslint-disable-line react/forbid-prop-types + imageCoverUrl: PropTypes.string, + isImageUpdating: PropTypes.bool.isRequired, + onUpdate: PropTypes.func.isRequired, + onImageUpdate: PropTypes.func.isRequired, + onImageDelete: PropTypes.func.isRequired, +}; + +BackgroundPane.defaultProps = { + item: undefined, + imageCoverUrl: undefined, +}; + +export default BackgroundPane; diff --git a/client/src/components/Project/ActionsPopup/BackgroundEditStep.module.scss b/client/src/components/ProjectSettingsModal/BackgroundPane.module.scss similarity index 93% rename from client/src/components/Project/ActionsPopup/BackgroundEditStep.module.scss rename to client/src/components/ProjectSettingsModal/BackgroundPane.module.scss index 327e1bb5..aba2dc59 100644 --- a/client/src/components/Project/ActionsPopup/BackgroundEditStep.module.scss +++ b/client/src/components/ProjectSettingsModal/BackgroundPane.module.scss @@ -13,6 +13,10 @@ } } + .actions { + margin-top: 20px; + } + .actionButton { background: transparent; color: #6b808c; @@ -54,8 +58,7 @@ } .gradientButtons { - margin: -4px; - padding-bottom: 8px; + margin-left: -4px; &:after { content: ""; @@ -66,7 +69,7 @@ .image { cursor: pointer; - margin-bottom: 8px; + margin-top: 10px; &:hover { opacity: 0.9; diff --git a/client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.jsx b/client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.jsx new file mode 100644 index 00000000..137323fb --- /dev/null +++ b/client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.jsx @@ -0,0 +1,55 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useTranslation } from 'react-i18next'; +import { Button, Divider, Header, Tab } from 'semantic-ui-react'; + +import InformationEdit from './InformationEdit'; +import DeletePopup from '../../DeletePopup'; + +import styles from './GeneralPane.module.scss'; + +const GeneralPane = React.memo(({ name, onUpdate, onDelete }) => { + const [t] = useTranslation(); + + return ( + + + +
+ {t('common.dangerZone', { + context: 'title', + })} +
+
+
+ + + +
+
+ ); +}); + +GeneralPane.propTypes = { + name: PropTypes.string.isRequired, + onUpdate: PropTypes.func.isRequired, + onDelete: PropTypes.func.isRequired, +}; + +export default GeneralPane; diff --git a/client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.module.scss b/client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.module.scss new file mode 100644 index 00000000..b8650f7a --- /dev/null +++ b/client/src/components/ProjectSettingsModal/GeneralPane/GeneralPane.module.scss @@ -0,0 +1,32 @@ +:global(#app) { + .action { + border: none; + display: inline-block; + height: 36px; + overflow: hidden; + position: relative; + transition: background 0.3s ease; + width: 100%; + + &:hover { + background: #e9e9e9; + } + } + + .actionButton { + background: transparent; + color: #6b808c; + font-weight: normal; + height: 36px; + line-height: 24px; + padding: 6px 12px; + text-align: left; + text-decoration: underline; + width: 100%; + } + + .wrapper { + border: none; + box-shadow: none; + } +} diff --git a/client/src/components/ProjectSettingsModal/GeneralPane/InformationEdit.jsx b/client/src/components/ProjectSettingsModal/GeneralPane/InformationEdit.jsx new file mode 100644 index 00000000..34b9585f --- /dev/null +++ b/client/src/components/ProjectSettingsModal/GeneralPane/InformationEdit.jsx @@ -0,0 +1,60 @@ +import { dequal } from 'dequal'; +import pickBy from 'lodash/pickBy'; +import React, { useCallback, useMemo, useRef } from 'react'; +import PropTypes from 'prop-types'; +import { useTranslation } from 'react-i18next'; +import { Button, Form, Input } from 'semantic-ui-react'; + +import { useForm } from '../../../hooks'; + +import styles from './InformationEdit.module.scss'; + +const InformationEdit = React.memo(({ defaultData, onUpdate }) => { + const [t] = useTranslation(); + + const [data, handleFieldChange] = useForm(() => ({ + name: '', + ...pickBy(defaultData), + })); + + const cleanData = useMemo( + () => ({ + ...data, + name: data.name.trim(), + }), + [data], + ); + + const nameField = useRef(null); + + const handleSubmit = useCallback(() => { + if (!cleanData.name) { + nameField.current.select(); + return; + } + + onUpdate(cleanData); + }, [onUpdate, cleanData]); + + return ( +
+
{t('common.title')}
+ +
- to load last data -
- and receive updates - -
-
- ); - } - - return null; -}); - -SocketStatus.propTypes = { - isDisconnected: PropTypes.bool.isRequired, - isReconnected: PropTypes.bool.isRequired, -}; - -export default SocketStatus; diff --git a/client/src/components/SocketStatus/index.js b/client/src/components/SocketStatus/index.js deleted file mode 100644 index c10ed18c..00000000 --- a/client/src/components/SocketStatus/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import SocketStatus from './SocketStatus'; - -export default SocketStatus; diff --git a/client/src/components/Static/Static.module.scss b/client/src/components/Static/Static.module.scss index 66a403bb..19e83520 100644 --- a/client/src/components/Static/Static.module.scss +++ b/client/src/components/Static/Static.module.scss @@ -1,6 +1,6 @@ :global(#app) { .board { - margin-top: 168px; + margin-top: 174px; } .flex { diff --git a/client/src/components/User/User.module.scss b/client/src/components/User/User.module.scss index efd6ee9c..9d8cf9ea 100644 --- a/client/src/components/User/User.module.scss +++ b/client/src/components/User/User.module.scss @@ -31,7 +31,7 @@ /* Sizes */ .wrapperTiny { - font-size: 12px; + font-size: 10px; font-weight: 400; height: 24px; line-height: 20px; diff --git a/client/src/components/UserPopup/UserPopup.jsx b/client/src/components/UserPopup/UserPopup.jsx index 7979b576..1cbb69f0 100755 --- a/client/src/components/UserPopup/UserPopup.jsx +++ b/client/src/components/UserPopup/UserPopup.jsx @@ -7,13 +7,13 @@ import { Popup } from '../../lib/custom-ui'; import styles from './UserPopup.module.scss'; -const UserStep = React.memo(({ onSettings, onLogout, onClose }) => { +const UserStep = React.memo(({ onSettingsClick, onLogout, onClose }) => { const [t] = useTranslation(); const handleSettingsClick = useCallback(() => { - onSettings(); + onSettingsClick(); onClose(); - }, [onSettings, onClose]); + }, [onSettingsClick, onClose]); return ( <> @@ -41,7 +41,7 @@ const UserStep = React.memo(({ onSettings, onLogout, onClose }) => { }); UserStep.propTypes = { - onSettings: PropTypes.func.isRequired, + onSettingsClick: PropTypes.func.isRequired, onLogout: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, }; diff --git a/client/src/constants/ActionTypes.js b/client/src/constants/ActionTypes.js index fb30de89..f398232b 100644 --- a/client/src/constants/ActionTypes.js +++ b/client/src/constants/ActionTypes.js @@ -1,292 +1,254 @@ export default { + /* Router */ + + LOCATION_CHANGE_HANDLE: 'LOCATION_CHANGE_HANDLE', + LOCATION_CHANGE_HANDLE__BOARD_FETCH: 'LOCATION_CHANGE_HANDLE__BOARD_FETCH', + /* Socket */ - SOCKET_STATUS_CHANGED: 'SOCKET_STATUS_CHANGED', + SOCKET_DISCONNECT_HANDLE: 'SOCKET_DISCONNECT_HANDLE', + SOCKET_RECONNECT_HANDLE: 'SOCKET_RECONNECT_HANDLE', + SOCKET_RECONNECT_HANDLE__CORE_FETCH: 'SOCKET_RECONNECT_HANDLE__CORE_FETCH', /* Login */ AUTHENTICATE: 'AUTHENTICATE', + AUTHENTICATE__SUCCESS: 'AUTHENTICATE__SUCCESS', + AUTHENTICATE__FAILURE: 'AUTHENTICATE__FAILURE', AUTHENTICATE_ERROR_CLEAR: 'AUTHENTICATE_ERROR_CLEAR', + LOGOUT: 'LOGOUT', - AUTHENTICATE_REQUESTED: 'AUTHENTICATE_REQUESTED', - AUTHENTICATE_SUCCEEDED: 'AUTHENTICATE_SUCCEEDED', - AUTHENTICATE_FAILED: 'AUTHENTICATE_FAILED', /* Core */ - CORE_INITIALIZED: 'CORE_INITIALIZED', + CORE_INITIALIZE: 'CORE_INITIALIZE', /* Modal */ MODAL_OPEN: 'MODAL_OPEN', MODAL_CLOSE: 'MODAL_CLOSE', - /* Users */ - - USERS_FETCH_REQUESTED: 'USERS_FETCH_REQUESTED', - USERS_FETCH_SUCCEEDED: 'USERS_FETCH_SUCCEEDED', - USERS_FETCH_FAILED: 'USERS_FETCH_FAILED', - /* User */ USER_CREATE: 'USER_CREATE', + USER_CREATE__SUCCESS: 'USER_CREATE__SUCCESS', + USER_CREATE__FAILURE: 'USER_CREATE__FAILURE', + USER_CREATE_HANDLE: 'USER_CREATE_HANDLE', USER_CREATE_ERROR_CLEAR: 'USER_CREATE_ERROR_CLEAR', USER_UPDATE: 'USER_UPDATE', + USER_UPDATE__SUCCESS: 'USER_UPDATE__SUCCESS', + USER_UPDATE__FAILURE: 'USER_UPDATE__FAILURE', + USER_UPDATE_HANDLE: 'USER_UPDATE_HANDLE', + USER_EMAIL_UPDATE: 'USER_EMAIL_UPDATE', + USER_EMAIL_UPDATE__SUCCESS: 'USER_EMAIL_UPDATE__SUCCESS', + USER_EMAIL_UPDATE__FAILURE: 'USER_EMAIL_UPDATE__FAILURE', USER_EMAIL_UPDATE_ERROR_CLEAR: 'USER_EMAIL_UPDATE_ERROR_CLEAR', + USER_PASSWORD_UPDATE: 'USER_PASSWORD_UPDATE', + USER_PASSWORD_UPDATE__SUCCESS: 'USER_PASSWORD_UPDATE__SUCCESS', + USER_PASSWORD_UPDATE__FAILURE: 'USER_PASSWORD_UPDATE__FAILURE', USER_PASSWORD_UPDATE_ERROR_CLEAR: 'USER_PASSWORD_UPDATE_ERROR_CLEAR', + USER_USERNAME_UPDATE: 'USER_USERNAME_UPDATE', + USER_USERNAME_UPDATE__SUCCESS: 'USER_USERNAME_UPDATE__SUCCESS', + USER_USERNAME_UPDATE__FAILURE: 'USER_USERNAME_UPDATE__FAILURE', USER_USERNAME_UPDATE_ERROR_CLEAR: 'USER_USERNAME_UPDATE_ERROR_CLEAR', + USER_AVATAR_UPDATE: 'USER_AVATAR_UPDATE', + USER_AVATAR_UPDATE__SUCCESS: 'USER_AVATAR_UPDATE__SUCCESS', + USER_AVATAR_UPDATE__FAILURE: 'USER_AVATAR_UPDATE__FAILURE', USER_DELETE: 'USER_DELETE', + USER_DELETE__SUCCESS: 'USER_DELETE__SUCCESS', + USER_DELETE__FAILURE: 'USER_DELETE__FAILURE', + USER_DELETE_HANDLE: 'USER_DELETE_HANDLE', USER_TO_CARD_ADD: 'USER_TO_CARD_ADD', + USER_TO_CARD_ADD__SUCCESS: 'USER_TO_CARD_ADD__SUCCESS', + USER_TO_CARD_ADD__FAILURE: 'USER_TO_CARD_ADD__FAILURE', + USER_TO_CARD_ADD_HANDLE: 'USER_TO_CARD_ADD_HANDLE', USER_FROM_CARD_REMOVE: 'USER_FROM_CARD_REMOVE', + USER_FROM_CARD_REMOVE__SUCCESS: 'USER_FROM_CARD_REMOVE__SUCCESS', + USER_FROM_CARD_REMOVE__FAILURE: 'USER_FROM_CARD_REMOVE__FAILURE', + USER_FROM_CARD_REMOVE_HANDLE: 'USER_FROM_CARD_REMOVE_HANDLE', USER_TO_BOARD_FILTER_ADD: 'USER_TO_BOARD_FILTER_ADD', USER_FROM_BOARD_FILTER_REMOVE: 'USER_FROM_BOARD_FILTER_REMOVE', - USER_CREATE_REQUESTED: 'USER_CREATE_REQUESTED', - USER_CREATE_SUCCEEDED: 'USER_CREATE_SUCCEEDED', - USER_CREATE_FAILED: 'USER_CREATE_FAILED', - USER_CREATE_RECEIVED: 'USER_CREATE_RECEIVED', - CURRENT_USER_FETCH_REQUESTED: 'CURRENT_USER_FETCH_REQUESTED', - CURRENT_USER_FETCH_SUCCEEDED: 'CURRENT_USER_FETCH_SUCCEEDED', - CURRENT_USER_FETCH_FAILED: 'CURRENT_USER_FETCH_FAILED', - USER_UPDATE_REQUESTED: 'USER_UPDATE_REQUESTED', - USER_UPDATE_SUCCEEDED: 'USER_UPDATE_SUCCEEDED', - USER_UPDATE_FAILED: 'USER_UPDATE_FAILED', - USER_UPDATE_RECEIVED: 'USER_UPDATE_RECEIVED', - USER_EMAIL_UPDATE_REQUESTED: 'USER_EMAIL_UPDATE_REQUESTED', - USER_EMAIL_UPDATE_SUCCEEDED: 'USER_EMAIL_UPDATE_SUCCEEDED', - USER_EMAIL_UPDATE_FAILED: 'USER_EMAIL_UPDATE_FAILED', - USER_PASSWORD_UPDATE_REQUESTED: 'USER_PASSWORD_UPDATE_REQUESTED', - USER_PASSWORD_UPDATE_SUCCEEDED: 'USER_PASSWORD_UPDATE_SUCCEEDED', - USER_PASSWORD_UPDATE_FAILED: 'USER_PASSWORD_UPDATE_FAILED', - USER_USERNAME_UPDATE_REQUESTED: 'USER_USERNAME_UPDATE_REQUESTED', - USER_USERNAME_UPDATE_SUCCEEDED: 'USER_USERNAME_UPDATE_SUCCEEDED', - USER_USERNAME_UPDATE_FAILED: 'USER_USERNAME_UPDATE_FAILED', - USER_AVATAR_UPDATE_REQUESTED: 'USER_AVATAR_UPDATE_REQUESTED', - USER_AVATAR_UPDATE_SUCCEEDED: 'USER_AVATAR_UPDATE_SUCCEEDED', - USER_AVATAR_UPDATE_FAILED: 'USER_AVATAR_UPDATE_FAILED', - USER_DELETE_REQUESTED: 'USER_DELETE_REQUESTED', - USER_DELETE_SUCCEEDED: 'USER_DELETE_SUCCEEDED', - USER_DELETE_FAILED: 'USER_DELETE_FAILED', - USER_DELETE_RECEIVED: 'USER_DELETE_RECEIVED', - - /* Projects */ - - PROJECTS_FETCH_REQUESTED: 'PROJECTS_FETCH_REQUESTED', - PROJECTS_FETCH_SUCCEEDED: 'PROJECTS_FETCH_SUCCEEDED', - PROJECTS_FETCH_FAILED: 'PROJECTS_FETCH_FAILED', /* Project */ PROJECT_CREATE: 'PROJECT_CREATE', + PROJECT_CREATE__SUCCESS: 'PROJECT_CREATE__SUCCESS', + PROJECT_CREATE__FAILURE: 'PROJECT_CREATE__FAILURE', + PROJECT_CREATE_HANDLE: 'PROJECT_CREATE_HANDLE', PROJECT_UPDATE: 'PROJECT_UPDATE', + PROJECT_UPDATE__SUCCESS: 'PROJECT_UPDATE__SUCCESS', + PROJECT_UPDATE__FAILURE: 'PROJECT_UPDATE__FAILURE', + PROJECT_UPDATE_HANDLE: 'PROJECT_UPDATE_HANDLE', + PROJECT_BACKGROUND_IMAGE_UPDATE: 'PROJECT_BACKGROUND_IMAGE_UPDATE', + PROJECT_BACKGROUND_IMAGE_UPDATE__SUCCESS: 'PROJECT_BACKGROUND_IMAGE_UPDATE__SUCCESS', + PROJECT_BACKGROUND_IMAGE_UPDATE__FAILURE: 'PROJECT_BACKGROUND_IMAGE_UPDATE__FAILURE', PROJECT_DELETE: 'PROJECT_DELETE', - PROJECT_CREATE_REQUESTED: 'PROJECT_CREATE_REQUESTED', - PROJECT_CREATE_SUCCEEDED: 'PROJECT_CREATE_SUCCEEDED', - PROJECT_CREATE_FAILED: 'PROJECT_CREATE_FAILED', - PROJECT_CREATE_RECEIVED: 'PROJECT_CREATE_RECEIVED', - PROJECT_UPDATE_REQUESTED: 'PROJECT_UPDATE_REQUESTED', - PROJECT_UPDATE_SUCCEEDED: 'PROJECT_UPDATE_SUCCEEDED', - PROJECT_UPDATE_FAILED: 'PROJECT_UPDATE_FAILED', - PROJECT_UPDATE_RECEIVED: 'PROJECT_UPDATE_RECEIVED', - PROJECT_BACKGROUND_IMAGE_UPDATE_REQUESTED: 'PROJECT_BACKGROUND_IMAGE_UPDATE_REQUESTED', - PROJECT_BACKGROUND_IMAGE_UPDATE_SUCCEEDED: 'PROJECT_BACKGROUND_IMAGE_UPDATE_SUCCEEDED', - PROJECT_BACKGROUND_IMAGE_UPDATE_FAILED: 'PROJECT_BACKGROUND_IMAGE_UPDATE_FAILED', - PROJECT_DELETE_REQUESTED: 'PROJECT_DELETE_REQUESTED', - PROJECT_DELETE_SUCCEEDED: 'PROJECT_DELETE_SUCCEEDED', - PROJECT_DELETE_FAILED: 'PROJECT_DELETE_FAILED', - PROJECT_DELETE_RECEIVED: 'PROJECT_DELETE_RECEIVED', + PROJECT_DELETE__SUCCESS: 'PROJECT_DELETE__SUCCESS', + PROJECT_DELETE__FAILURE: 'PROJECT_DELETE__FAILURE', + PROJECT_DELETE_HANDLE: 'PROJECT_DELETE_HANDLE', - /* Project membership */ + /* Project manager */ - PROJECT_MEMBERSHIP_CREATE: 'PROJECT_MEMBERSHIP_CREATE', - PROJECT_MEMBERSHIP_DELETE: 'PROJECT_MEMBERSHIP_DELETE', - PROJECT_MEMBERSHIP_CREATE_REQUESTED: 'PROJECT_MEMBERSHIP_CREATE_REQUESTED', - PROJECT_MEMBERSHIP_CREATE_SUCCEEDED: 'PROJECT_MEMBERSHIP_CREATE_SUCCEEDED', - PROJECT_MEMBERSHIP_CREATE_FAILED: 'PROJECT_MEMBERSHIP_CREATE_FAILED', - PROJECT_MEMBERSHIP_CREATE_RECEIVED: 'PROJECT_MEMBERSHIP_CREATE_RECEIVED', - PROJECT_MEMBERSHIP_DELETE_REQUESTED: 'PROJECT_MEMBERSHIP_DELETE_REQUESTED', - PROJECT_MEMBERSHIP_DELETE_SUCCEEDED: 'PROJECT_MEMBERSHIP_DELETE_SUCCEEDED', - PROJECT_MEMBERSHIP_DELETE_FAILED: 'PROJECT_MEMBERSHIP_DELETE_FAILED', - PROJECT_MEMBERSHIP_DELETE_RECEIVED: 'PROJECT_MEMBERSHIP_DELETE_RECEIVED', + PROJECT_MANAGER_CREATE: 'PROJECT_MANAGER_CREATE', + PROJECT_MANAGER_CREATE__SUCCESS: 'PROJECT_MANAGER_CREATE__SUCCESS', + PROJECT_MANAGER_CREATE__FAILURE: 'PROJECT_MANAGER_CREATE__FAILURE', + PROJECT_MANAGER_CREATE_HANDLE: 'PROJECT_MANAGER_CREATE_HANDLE', + PROJECT_MANAGER_CREATE_HANDLE__PROJECT_FETCH: 'PROJECT_MANAGER_CREATE_HANDLE__PROJECT_FETCH', + PROJECT_MANAGER_DELETE: 'PROJECT_MANAGER_DELETE', + PROJECT_MANAGER_DELETE__SUCCESS: 'PROJECT_MANAGER_DELETE__SUCCESS', + PROJECT_MANAGER_DELETE__FAILURE: 'PROJECT_MANAGER_DELETE__FAILURE', + PROJECT_MANAGER_DELETE_HANDLE: 'PROJECT_MANAGER_DELETE_HANDLE', /* Board */ BOARD_CREATE: 'BOARD_CREATE', + BOARD_CREATE__SUCCESS: 'BOARD_CREATE__SUCCESS', + BOARD_CREATE__FAILURE: 'BOARD_CREATE__FAILURE', + BOARD_CREATE_HANDLE: 'BOARD_CREATE_HANDLE', + BOARD_FETCH: 'BOARD_FETCH', + BOARD_FETCH__SUCCESS: 'BOARD_FETCH__SUCCESS', + BOARD_FETCH__FAILURE: 'BOARD_FETCH__FAILURE', BOARD_UPDATE: 'BOARD_UPDATE', + BOARD_UPDATE__SUCCESS: 'BOARD_UPDATE__SUCCESS', + BOARD_UPDATE__FAILURE: 'BOARD_UPDATE__FAILURE', + BOARD_UPDATE_HANDLE: 'BOARD_UPDATE_HANDLE', BOARD_DELETE: 'BOARD_DELETE', - BOARD_CREATE_REQUESTED: 'BOARD_CREATE_REQUESTED', - BOARD_CREATE_SUCCEEDED: 'BOARD_CREATE_SUCCEEDED', - BOARD_CREATE_FAILED: 'BOARD_CREATE_FAILED', - BOARD_CREATE_RECEIVED: 'BOARD_CREATE_RECEIVED', - BOARD_FETCH_REQUESTED: 'BOARD_FETCH_REQUESTED', - BOARD_FETCH_SUCCEEDED: 'BOARD_FETCH_SUCCEEDED', - BOARD_FETCH_FAILED: 'BOARD_FETCH_FAILED', - BOARD_UPDATE_REQUESTED: 'BOARD_UPDATE_REQUESTED', - BOARD_UPDATE_SUCCEEDED: 'BOARD_UPDATE_SUCCEEDED', - BOARD_UPDATE_FAILED: 'BOARD_UPDATE_FAILED', - BOARD_UPDATE_RECEIVED: 'BOARD_UPDATE_RECEIVED', - BOARD_DELETE_REQUESTED: 'BOARD_DELETE_REQUESTED', - BOARD_DELETE_SUCCEEDED: 'BOARD_DELETE_SUCCEEDED', - BOARD_DELETE_FAILED: 'BOARD_DELETE_FAILED', - BOARD_DELETE_RECEIVED: 'BOARD_DELETE_RECEIVED', + BOARD_DELETE__SUCCESS: 'BOARD_DELETE__SUCCESS', + BOARD_DELETE__FAILURE: 'BOARD_DELETE__FAILURE', + BOARD_DELETE_HANDLE: 'BOARD_DELETE_HANDLE', + + /* Board membership */ + + BOARD_MEMBERSHIP_CREATE: 'BOARD_MEMBERSHIP_CREATE', + BOARD_MEMBERSHIP_CREATE__SUCCESS: 'BOARD_MEMBERSHIP_CREATE__SUCCESS', + BOARD_MEMBERSHIP_CREATE__FAILURE: 'BOARD_MEMBERSHIP_CREATE__FAILURE', + BOARD_MEMBERSHIP_CREATE_HANDLE: 'BOARD_MEMBERSHIP_CREATE_HANDLE', + BOARD_MEMBERSHIP_CREATE_HANDLE__PROJECT_FETCH: 'BOARD_MEMBERSHIP_CREATE_HANDLE__PROJECT_FETCH', + BOARD_MEMBERSHIP_DELETE: 'BOARD_MEMBERSHIP_DELETE', + BOARD_MEMBERSHIP_DELETE__SUCCESS: 'BOARD_MEMBERSHIP_DELETE__SUCCESS', + BOARD_MEMBERSHIP_DELETE__FAILURE: 'BOARD_MEMBERSHIP_DELETE__FAILURE', + BOARD_MEMBERSHIP_DELETE_HANDLE: 'BOARD_MEMBERSHIP_DELETE_HANDLE', /* Label */ LABEL_CREATE: 'LABEL_CREATE', + LABEL_CREATE__SUCCESS: 'LABEL_CREATE__SUCCESS', + LABEL_CREATE__FAILURE: 'LABEL_CREATE__FAILURE', + LABEL_CREATE_HANDLE: 'LABEL_CREATE_HANDLE', LABEL_UPDATE: 'LABEL_UPDATE', + LABEL_UPDATE__SUCCESS: 'LABEL_UPDATE__SUCCESS', + LABEL_UPDATE__FAILURE: 'LABEL_UPDATE__FAILURE', + LABEL_UPDATE_HANDLE: 'LABEL_UPDATE_HANDLE', LABEL_DELETE: 'LABEL_DELETE', + LABEL_DELETE__SUCCESS: 'LABEL_DELETE__SUCCESS', + LABEL_DELETE__FAILURE: 'LABEL_DELETE__FAILURE', + LABEL_DELETE_HANDLE: 'LABEL_DELETE_HANDLE', LABEL_TO_CARD_ADD: 'LABEL_TO_CARD_ADD', + LABEL_TO_CARD_ADD__SUCCESS: 'LABEL_TO_CARD_ADD__SUCCESS', + LABEL_TO_CARD_ADD__FAILURE: 'LABEL_TO_CARD_ADD__FAILURE', + LABEL_TO_CARD_ADD_HANDLE: 'LABEL_TO_CARD_ADD_HANDLE', LABEL_FROM_CARD_REMOVE: 'LABEL_FROM_CARD_REMOVE', + LABEL_FROM_CARD_REMOVE__SUCCESS: 'LABEL_FROM_CARD_REMOVE__SUCCESS', + LABEL_FROM_CARD_REMOVE__FAILURE: 'LABEL_FROM_CARD_REMOVE__FAILURE', + LABEL_FROM_CARD_REMOVE_HANDLE: 'LABEL_FROM_CARD_REMOVE_HANDLE', LABEL_TO_BOARD_FILTER_ADD: 'LABEL_TO_BOARD_FILTER_ADD', LABEL_FROM_BOARD_FILTER_REMOVE: 'LABEL_FROM_BOARD_FILTER_REMOVE', - LABEL_CREATE_REQUESTED: 'LABEL_CREATE_REQUESTED', - LABEL_CREATE_SUCCEEDED: 'LABEL_CREATE_SUCCEEDED', - LABEL_CREATE_FAILED: 'LABEL_CREATE_FAILED', - LABEL_CREATE_RECEIVED: 'LABEL_CREATE_RECEIVED', - LABEL_UPDATE_REQUESTED: 'LABEL_UPDATE_REQUESTED', - LABEL_UPDATE_SUCCEEDED: 'LABEL_UPDATE_SUCCEEDED', - LABEL_UPDATE_FAILED: 'LABEL_UPDATE_FAILED', - LABEL_UPDATE_RECEIVED: 'LABEL_UPDATE_RECEIVED', - LABEL_DELETE_REQUESTED: 'LABEL_DELETE_REQUESTED', - LABEL_DELETE_SUCCEEDED: 'LABEL_DELETE_SUCCEEDED', - LABEL_DELETE_FAILED: 'LABEL_DELETE_FAILED', - LABEL_DELETE_RECEIVED: 'LABEL_DELETE_RECEIVED', /* List */ LIST_CREATE: 'LIST_CREATE', + LIST_CREATE__SUCCESS: 'LIST_CREATE__SUCCESS', + LIST_CREATE__FAILURE: 'LIST_CREATE__FAILURE', + LIST_CREATE_HANDLE: 'LIST_CREATE_HANDLE', LIST_UPDATE: 'LIST_UPDATE', + LIST_UPDATE__SUCCESS: 'LIST_UPDATE__SUCCESS', + LIST_UPDATE__FAILURE: 'LIST_UPDATE__FAILURE', + LIST_UPDATE_HANDLE: 'LIST_UPDATE_HANDLE', LIST_DELETE: 'LIST_DELETE', - LIST_CREATE_REQUESTED: 'LIST_CREATE_REQUESTED', - LIST_CREATE_SUCCEEDED: 'LIST_CREATE_SUCCEEDED', - LIST_CREATE_FAILED: 'LIST_CREATE_FAILED', - LIST_CREATE_RECEIVED: 'LIST_CREATE_RECEIVED', - LIST_UPDATE_REQUESTED: 'LIST_UPDATE_REQUESTED', - LIST_UPDATE_SUCCEEDED: 'LIST_UPDATE_SUCCEEDED', - LIST_UPDATE_FAILED: 'LIST_UPDATE_FAILED', - LIST_UPDATE_RECEIVED: 'LIST_UPDATE_RECEIVED', - LIST_DELETE_REQUESTED: 'LIST_DELETE_REQUESTED', - LIST_DELETE_SUCCEEDED: 'LIST_DELETE_SUCCEEDED', - LIST_DELETE_FAILED: 'LIST_DELETE_FAILED', - LIST_DELETE_RECEIVED: 'LIST_DELETE_RECEIVED', + LIST_DELETE__SUCCESS: 'LIST_DELETE__SUCCESS', + LIST_DELETE__FAILURE: 'LIST_DELETE__FAILURE', + LIST_DELETE_HANDLE: 'LIST_DELETE_HANDLE', /* Card */ CARD_CREATE: 'CARD_CREATE', + CARD_CREATE__SUCCESS: 'CARD_CREATE__SUCCESS', + CARD_CREATE__FAILURE: 'CARD_CREATE__FAILURE', + CARD_CREATE_HANDLE: 'CARD_CREATE_HANDLE', + CARD_FETCH: 'CARD_FETCH', + CARD_FETCH__SUCCESS: 'CARD_FETCH__SUCCESS', + CARD_FETCH__FAILURE: 'CARD_FETCH__FAILURE', CARD_UPDATE: 'CARD_UPDATE', + CARD_UPDATE__SUCCESS: 'CARD_UPDATE__SUCCESS', + CARD_UPDATE__FAILURE: 'CARD_UPDATE__FAILURE', + CARD_UPDATE_HANDLE: 'CARD_UPDATE_HANDLE', + CARD_TRANSFER: 'CARD_TRANSFER', + CARD_TRANSFER__SUCCESS: 'CARD_TRANSFER__SUCCESS', + CARD_TRANSFER__FAILURE: 'CARD_TRANSFER__FAILURE', CARD_DELETE: 'CARD_DELETE', - CARD_CREATE_REQUESTED: 'CARD_CREATE_REQUESTED', - CARD_CREATE_SUCCEEDED: 'CARD_CREATE_SUCCEEDED', - CARD_CREATE_FAILED: 'CARD_CREATE_FAILED', - CARD_CREATE_RECEIVED: 'CARD_CREATE_RECEIVED', - CARD_FETCH_REQUESTED: 'CARD_FETCH_REQUESTED', - CARD_FETCH_SUCCEEDED: 'CARD_FETCH_SUCCEEDED', - CARD_FETCH_FAILED: 'CARD_FETCH_FAILED', - CARD_UPDATE_REQUESTED: 'CARD_UPDATE_REQUESTED', - CARD_UPDATE_SUCCEEDED: 'CARD_UPDATE_SUCCEEDED', - CARD_UPDATE_FAILED: 'CARD_UPDATE_FAILED', - CARD_UPDATE_RECEIVED: 'CARD_UPDATE_RECEIVED', - CARD_DELETE_REQUESTED: 'CARD_DELETE_REQUESTED', - CARD_DELETE_SUCCEEDED: 'CARD_DELETE_SUCCEEDED', - CARD_DELETE_FAILED: 'CARD_DELETE_FAILED', - CARD_DELETE_RECEIVED: 'CARD_DELETE_RECEIVED', - - /* Card membership */ - - CARD_MEMBERSHIP_CREATE_REQUESTED: 'CARD_MEMBERSHIP_CREATE_REQUESTED', - CARD_MEMBERSHIP_CREATE_SUCCEEDED: 'CARD_MEMBERSHIP_CREATE_SUCCEEDED', - CARD_MEMBERSHIP_CREATE_FAILED: 'CARD_MEMBERSHIP_CREATE_FAILED', - CARD_MEMBERSHIP_CREATE_RECEIVED: 'CARD_MEMBERSHIP_CREATE_RECEIVED', - CARD_MEMBERSHIP_DELETE_REQUESTED: 'CARD_MEMBERSHIP_DELETE_REQUESTED', - CARD_MEMBERSHIP_DELETE_SUCCEEDED: 'CARD_MEMBERSHIP_DELETE_SUCCEEDED', - CARD_MEMBERSHIP_DELETE_FAILED: 'CARD_MEMBERSHIP_DELETE_FAILED', - CARD_MEMBERSHIP_DELETE_RECEIVED: 'CARD_MEMBERSHIP_DELETE_RECEIVED', - - /* Card label */ - - CARD_LABEL_CREATE_REQUESTED: 'CARD_LABEL_CREATE_REQUESTED', - CARD_LABEL_CREATE_SUCCEEDED: 'CARD_LABEL_CREATE_SUCCEEDED', - CARD_LABEL_CREATE_FAILED: 'CARD_LABEL_CREATE_FAILED', - CARD_LABEL_CREATE_RECEIVED: 'CARD_LABEL_CREATE_RECEIVED', - CARD_LABEL_DELETE_REQUESTED: 'CARD_LABEL_DELETE_REQUESTED', - CARD_LABEL_DELETE_SUCCEEDED: 'CARD_LABEL_DELETE_SUCCEEDED', - CARD_LABEL_DELETE_FAILED: 'CARD_LABEL_DELETE_FAILED', - CARD_LABEL_DELETE_RECEIVED: 'CARD_LABEL_DELETE_RECEIVED', + CARD_DELETE__SUCCESS: 'CARD_DELETE__SUCCESS', + CARD_DELETE__FAILURE: 'CARD_DELETE__FAILURE', + CARD_DELETE_HANDLE: 'CARD_DELETE_HANDLE', /* Task */ TASK_CREATE: 'TASK_CREATE', + TASK_CREATE__SUCCESS: 'TASK_CREATE__SUCCESS', + TASK_CREATE__FAILURE: 'TASK_CREATE__FAILURE', + TASK_CREATE_HANDLE: 'TASK_CREATE_HANDLE', TASK_UPDATE: 'TASK_UPDATE', + TASK_UPDATE__SUCCESS: 'TASK_UPDATE__SUCCESS', + TASK_UPDATE__FAILURE: 'TASK_UPDATE__FAILURE', + TASK_UPDATE_HANDLE: 'TASK_UPDATE_HANDLE', TASK_DELETE: 'TASK_DELETE', - TASK_CREATE_REQUESTED: 'TASK_CREATE_REQUESTED', - TASK_CREATE_SUCCEEDED: 'TASK_CREATE_SUCCEEDED', - TASK_CREATE_FAILED: 'TASK_CREATE_FAILED', - TASK_CREATE_RECEIVED: 'TASK_CREATE_RECEIVED', - TASK_UPDATE_REQUESTED: 'TASK_UPDATE_REQUESTED', - TASK_UPDATE_SUCCEEDED: 'TASK_UPDATE_SUCCEEDED', - TASK_UPDATE_FAILED: 'TASK_UPDATE_FAILED', - TASK_UPDATE_RECEIVED: 'TASK_UPDATE_RECEIVED', - TASK_DELETE_REQUESTED: 'TASK_DELETE_REQUESTED', - TASK_DELETE_SUCCEEDED: 'TASK_DELETE_SUCCEEDED', - TASK_DELETE_FAILED: 'TASK_DELETE_FAILED', - TASK_DELETE_RECEIVED: 'TASK_DELETE_RECEIVED', + TASK_DELETE__SUCCESS: 'TASK_DELETE__SUCCESS', + TASK_DELETE__FAILURE: 'TASK_DELETE__FAILURE', + TASK_DELETE_HANDLE: 'TASK_DELETE_HANDLE', - /* Task */ + /* Attachment */ ATTACHMENT_CREATE: 'ATTACHMENT_CREATE', + ATTACHMENT_CREATE__SUCCESS: 'ATTACHMENT_CREATE__SUCCESS', + ATTACHMENT_CREATE__FAILURE: 'ATTACHMENT_CREATE__FAILURE', + ATTACHMENT_CREATE_HANDLE: 'ATTACHMENT_CREATE_HANDLE', ATTACHMENT_UPDATE: 'ATTACHMENT_UPDATE', + ATTACHMENT_UPDATE__SUCCESS: 'ATTACHMENT_UPDATE__SUCCESS', + ATTACHMENT_UPDATE__FAILURE: 'ATTACHMENT_UPDATE__FAILURE', + ATTACHMENT_UPDATE_HANDLE: 'ATTACHMENT_UPDATE_HANDLE', ATTACHMENT_DELETE: 'ATTACHMENT_DELETE', - ATTACHMENT_CREATE_REQUESTED: 'ATTACHMENT_CREATE_REQUESTED', - ATTACHMENT_CREATE_SUCCEEDED: 'ATTACHMENT_CREATE_SUCCEEDED', - ATTACHMENT_CREATE_FAILED: 'ATTACHMENT_CREATE_FAILED', - ATTACHMENT_CREATE_RECEIVED: 'ATTACHMENT_CREATE_RECEIVED', - ATTACHMENT_UPDATE_REQUESTED: 'ATTACHMENT_UPDATE_REQUESTED', - ATTACHMENT_UPDATE_SUCCEEDED: 'ATTACHMENT_UPDATE_SUCCEEDED', - ATTACHMENT_UPDATE_FAILED: 'ATTACHMENT_UPDATE_FAILED', - ATTACHMENT_UPDATE_RECEIVED: 'ATTACHMENT_UPDATE_RECEIVED', - ATTACHMENT_DELETE_REQUESTED: 'ATTACHMENT_DELETE_REQUESTED', - ATTACHMENT_DELETE_SUCCEEDED: 'ATTACHMENT_DELETE_SUCCEEDED', - ATTACHMENT_DELETE_FAILED: 'ATTACHMENT_DELETE_FAILED', - ATTACHMENT_DELETE_RECEIVED: 'ATTACHMENT_DELETE_RECEIVED', + ATTACHMENT_DELETE__SUCCESS: 'ATTACHMENT_DELETE__SUCCESS', + ATTACHMENT_DELETE__FAILURE: 'ATTACHMENT_DELETE__FAILURE', + ATTACHMENT_DELETE_HANDLE: 'ATTACHMENT_DELETE_HANDLE', /* Actions */ - ACTIONS_FETCH_REQUESTED: 'ACTIONS_FETCH_REQUESTED', - ACTIONS_FETCH_SUCCEEDED: 'ACTIONS_FETCH_SUCCEEDED', - ACTIONS_FETCH_FAILED: 'ACTIONS_FETCH_FAILED', + ACTIONS_FETCH: 'ACTIONS_FETCH', + ACTIONS_FETCH__SUCCESS: 'ACTIONS_FETCH__SUCCESS', + ACTIONS_FETCH__FAILURE: 'ACTIONS_FETCH__FAILURE', /* Action */ - ACTION_CREATE_RECEIVED: 'ACTION_CREATE_RECEIVED', - ACTION_UPDATE_RECEIVED: 'ACTION_UPDATE_RECEIVED', - ACTION_DELETE_RECEIVED: 'ACTION_DELETE_RECEIVED', + ACTION_CREATE_HANDLE: 'ACTION_CREATE_HANDLE', + ACTION_UPDATE_HANDLE: 'ACTION_UPDATE_HANDLE', + ACTION_DELETE_HANDLE: 'ACTION_DELETE_HANDLE', /* Comment action */ COMMENT_ACTION_CREATE: 'COMMENT_ACTION_CREATE', + COMMENT_ACTION_CREATE__SUCCESS: 'COMMENT_ACTION_CREATE__SUCCESS', + COMMENT_ACTION_CREATE__FAILURE: 'COMMENT_ACTION_CREATE__FAILURE', COMMENT_ACTION_UPDATE: 'COMMENT_ACTION_UPDATE', + COMMENT_ACTION_UPDATE__SUCCESS: 'COMMENT_ACTION_UPDATE__SUCCESS', + COMMENT_ACTION_UPDATE__FAILURE: 'COMMENT_ACTION_UPDATE__FAILURE', COMMENT_ACTION_DELETE: 'COMMENT_ACTION_DELETE', - COMMENT_ACTION_CREATE_REQUESTED: 'COMMENT_ACTION_CREATE_REQUESTED', - COMMENT_ACTION_CREATE_SUCCEEDED: 'COMMENT_ACTION_CREATE_SUCCEEDED', - COMMENT_ACTION_CREATE_FAILED: 'COMMENT_ACTION_CREATE_FAILED', - COMMENT_ACTION_UPDATE_REQUESTED: 'COMMENT_ACTION_UPDATE_REQUESTED', - COMMENT_ACTION_UPDATE_SUCCEEDED: 'COMMENT_ACTION_UPDATE_SUCCEEDED', - COMMENT_ACTION_UPDATE_FAILED: 'COMMENT_ACTION_UPDATE_FAILED', - COMMENT_ACTION_DELETE_REQUESTED: 'COMMENT_ACTION_DELETE_REQUESTED', - COMMENT_ACTION_DELETE_SUCCEEDED: 'COMMENT_ACTION_DELETE_SUCCEEDED', - COMMENT_ACTION_DELETE_FAILED: 'COMMENT_ACTION_DELETE_FAILED', - - /* Notifications */ - - NOTIFICATIONS_DELETE: 'NOTIFICATIONS_DELETE', - NOTIFICATIONS_FETCH_REQUESTED: 'NOTIFICATIONS_FETCH_REQUESTED', - NOTIFICATIONS_FETCH_SUCCEEDED: 'NOTIFICATIONS_FETCH_SUCCEEDED', - NOTIFICATIONS_FETCH_FAILED: 'NOTIFICATIONS_FETCH_FAILED', - NOTIFICATIONS_DELETE_REQUESTED: 'NOTIFICATIONS_DELETE_REQUESTED', - NOTIFICATIONS_DELETE_SUCCEEDED: 'NOTIFICATIONS_DELETE_SUCCEEDED', - NOTIFICATIONS_DELETE_FAILED: 'NOTIFICATIONS_DELETE_FAILED', + COMMENT_ACTION_DELETE__SUCCESS: 'COMMENT_ACTION_DELETE__SUCCESS', + COMMENT_ACTION_DELETE__FAILURE: 'COMMENT_ACTION_DELETE__FAILURE', /* Notification */ - NOTIFICATION_CREATE_RECEIVED: 'NOTIFICATION_CREATE_RECEIVED', - NOTIFICATION_DELETE_RECEIVED: 'NOTIFICATION_DELETE_RECEIVED', + NOTIFICATION_CREATE_HANDLE: 'NOTIFICATION_CREATE_HANDLE', + NOTIFICATION_DELETE: 'NOTIFICATION_DELETE', + NOTIFICATION_DELETE__SUCCESS: 'NOTIFICATION_DELETE__SUCCESS', + NOTIFICATION_DELETE__FAILURE: 'NOTIFICATION_DELETE__FAILURE', + NOTIFICATION_DELETE_HANDLE: 'NOTIFICATION_DELETE_HANDLE', }; diff --git a/client/src/constants/EntryActionTypes.js b/client/src/constants/EntryActionTypes.js index b9cac35a..6ebc289d 100755 --- a/client/src/constants/EntryActionTypes.js +++ b/client/src/constants/EntryActionTypes.js @@ -3,12 +3,21 @@ const PREFIX = '@entry'; export default { PREFIX, + /* Socket */ + + SOCKET_DISCONNECT_HANDLE: `${PREFIX}/SOCKET_DISCONNECT_HANDLE`, + SOCKET_RECONNECT_HANDLE: `${PREFIX}/SOCKET_RECONNECT_HANDLE`, + /* Login */ AUTHENTICATE: `${PREFIX}/AUTHENTICATE`, AUTHENTICATE_ERROR_CLEAR: `${PREFIX}/AUTHENTICATE_ERROR_CLEAR`, LOGOUT: `${PREFIX}/LOGOUT`, + /* Core */ + + CORE_INITIALIZE: `${PREFIX}/CORE_INITIALIZE`, + /* Modal */ MODAL_OPEN: `${PREFIX}/MODAL_OPEN`, @@ -17,9 +26,11 @@ export default { /* User */ USER_CREATE: `${PREFIX}/USER_CREATE`, + USER_CREATE_HANDLE: `${PREFIX}/USER_CREATE_HANDLE`, USER_CREATE_ERROR_CLEAR: `${PREFIX}/USER_CREATE_ERROR_CLEAR`, USER_UPDATE: `${PREFIX}/USER_UPDATE`, CURRENT_USER_UPDATE: `${PREFIX}/CURRENT_USER_UPDATE`, + USER_UPDATE_HANDLE: `${PREFIX}/USER_UPDATE_HANDLE`, CURRENT_USER_EMAIL_UPDATE: `${PREFIX}/CURRENT_USER_EMAIL_UPDATE`, CURRENT_USER_EMAIL_UPDATE_ERROR_CLEAR: `${PREFIX}/CURRENT_USER_EMAIL_UPDATE_ERROR_CLEAR`, CURRENT_USER_PASSWORD_UPDATE: `${PREFIX}/CURRENT_USER_PASSWORD_UPDATE`, @@ -28,80 +39,121 @@ export default { CURRENT_USER_USERNAME_UPDATE_ERROR_CLEAR: `${PREFIX}/CURRENT_USER_USERNAME_UPDATE_ERROR_CLEAR`, CURRENT_USER_AVATAR_UPDATE: `${PREFIX}/CURRENT_USER_AVATAR_UPDATE`, USER_DELETE: `${PREFIX}/USER_DELETE`, + USER_DELETE_HANDLE: `${PREFIX}/USER_DELETE_HANDLE`, USER_TO_CARD_ADD: `${PREFIX}/USER_TO_CARD_ADD`, USER_TO_CURRENT_CARD_ADD: `${PREFIX}/USER_TO_CURRENT_CARD_ADD`, + USER_TO_CARD_ADD_HANDLE: `${PREFIX}/USER_TO_CARD_ADD_HANDLE`, USER_FROM_CARD_REMOVE: `${PREFIX}/USER_FROM_CARD_REMOVE`, USER_FROM_CURRENT_CARD_REMOVE: `${PREFIX}/USER_FROM_CURRENT_CARD_REMOVE`, + USER_FROM_CARD_REMOVE_HANDLE: `${PREFIX}/USER_FROM_CARD_REMOVE_HANDLE`, USER_TO_FILTER_IN_CURRENT_BOARD_ADD: `${PREFIX}/USER_TO_FILTER_IN_CURRENT_BOARD_ADD`, USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE: `${PREFIX}/USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE`, /* Project */ PROJECT_CREATE: `${PREFIX}/PROJECT_CREATE`, + PROJECT_CREATE_HANDLE: `${PREFIX}/PROJECT_CREATE_HANDLE`, CURRENT_PROJECT_UPDATE: `${PREFIX}/CURRENT_PROJECT_UPDATE`, + PROJECT_UPDATE_HANDLE: `${PREFIX}/PROJECT_UPDATE_HANDLE`, CURRENT_PROJECT_BACKGROUND_IMAGE_UPDATE: `${PREFIX}/CURRENT_PROJECT_BACKGROUND_IMAGE_UPDATE`, CURRENT_PROJECT_DELETE: `${PREFIX}/CURRENT_PROJECT_DELETE`, + PROJECT_DELETE_HANDLE: `${PREFIX}/PROJECT_DELETE_HANDLE`, - /* Project membership */ + /* Project manager */ - MEMBERSHIP_IN_CURRENT_PROJECT_CREATE: `${PREFIX}/MEMBERSHIP_IN_CURRENT_PROJECT_CREATE`, - PROJECT_MEMBERSHIP_DELETE: `${PREFIX}/PROJECT_MEMBERSHIP_DELETE`, + MANAGER_IN_CURRENT_PROJECT_CREATE: `${PREFIX}/MANAGER_IN_CURRENT_PROJECT_CREATE`, + PROJECT_MANAGER_CREATE_HANDLE: `${PREFIX}/PROJECT_MANAGER_CREATE_HANDLE`, + PROJECT_MANAGER_DELETE: `${PREFIX}/PROJECT_MANAGER_DELETE`, + PROJECT_MANAGER_DELETE_HANDLE: `${PREFIX}/PROJECT_MANAGER_DELETE_HANDLE`, /* Board */ BOARD_IN_CURRENT_PROJECT_CREATE: `${PREFIX}/BOARD_IN_CURRENT_PROJECT_CREATE`, + BOARD_CREATE_HANDLE: `${PREFIX}/BOARD_CREATE_HANDLE`, BOARD_FETCH: `${PREFIX}/BOARD_FETCH`, BOARD_UPDATE: `${PREFIX}/BOARD_UPDATE`, + BOARD_UPDATE_HANDLE: `${PREFIX}/BOARD_UPDATE_HANDLE`, BOARD_MOVE: `${PREFIX}/BOARD_MOVE`, BOARD_DELETE: `${PREFIX}/BOARD_DELETE`, + BOARD_DELETE_HANDLE: `${PREFIX}/BOARD_DELETE_HANDLE`, + + /* Board membership */ + + MEMBERSHIP_IN_CURRENT_BOARD_CREATE: `${PREFIX}/MEMBERSHIP_IN_CURRENT_BOARD_CREATE`, + BOARD_MEMBERSHIP_CREATE_HANDLE: `${PREFIX}/BOARD_MEMBERSHIP_CREATE_HANDLE`, + BOARD_MEMBERSHIP_DELETE: `${PREFIX}/BOARD_MEMBERSHIP_DELETE`, + BOARD_MEMBERSHIP_DELETE_HANDLE: `${PREFIX}/BOARD_MEMBERSHIP_DELETE_HANDLE`, /* Label */ LABEL_IN_CURRENT_BOARD_CREATE: `${PREFIX}/LABEL_IN_CURRENT_BOARD_CREATE`, + LABEL_CREATE_HANDLE: `${PREFIX}/LABEL_CREATE_HANDLE`, LABEL_UPDATE: `${PREFIX}/LABEL_UPDATE`, + LABEL_UPDATE_HANDLE: `${PREFIX}/LABEL_UPDATE_HANDLE`, LABEL_DELETE: `${PREFIX}/LABEL_DELETE`, + LABEL_DELETE_HANDLE: `${PREFIX}/LABEL_DELETE_HANDLE`, LABEL_TO_CARD_ADD: `${PREFIX}/LABEL_TO_CARD_ADD`, LABEL_TO_CURRENT_CARD_ADD: `${PREFIX}/LABEL_TO_CURRENT_CARD_ADD`, + LABEL_TO_CARD_ADD_HANDLE: `${PREFIX}/LABEL_TO_CARD_ADD_HANDLE`, LABEL_FROM_CARD_REMOVE: `${PREFIX}/LABEL_FROM_CARD_REMOVE`, LABEL_FROM_CURRENT_CARD_REMOVE: `${PREFIX}/LABEL_FROM_CURRENT_CARD_REMOVE`, + LABEL_FROM_CARD_REMOVE_HANDLE: `${PREFIX}/LABEL_FROM_CARD_REMOVE_HANDLE`, LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD: `${PREFIX}/LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD`, LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE: `${PREFIX}/LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE`, /* List */ LIST_IN_CURRENT_BOARD_CREATE: `${PREFIX}/LIST_IN_CURRENT_BOARD_CREATE`, + LIST_CREATE_HANDLE: `${PREFIX}/LIST_CREATE_HANDLE`, LIST_UPDATE: `${PREFIX}/LIST_UPDATE`, + LIST_UPDATE_HANDLE: `${PREFIX}/LIST_UPDATE_HANDLE`, LIST_MOVE: `${PREFIX}/LIST_MOVE`, LIST_DELETE: `${PREFIX}/LIST_DELETE`, + LIST_DELETE_HANDLE: `${PREFIX}/LIST_DELETE_HANDLE`, /* Card */ CARD_CREATE: `${PREFIX}/CARD_CREATE`, + CARD_CREATE_HANDLE: `${PREFIX}/CARD_CREATE_HANDLE`, CARD_UPDATE: `${PREFIX}/CARD_UPDATE`, CURRENT_CARD_UPDATE: `${PREFIX}/CURRENT_CARD_UPDATE`, + CARD_UPDATE_HANDLE: `${PREFIX}/CARD_UPDATE_HANDLE`, CARD_MOVE: `${PREFIX}/CARD_MOVE`, CURRENT_CARD_MOVE: `${PREFIX}/CURRENT_CARD_MOVE`, CARD_TRANSFER: `${PREFIX}/CARD_TRANSFER`, CURRENT_CARD_TRANSFER: `${PREFIX}/CURRENT_CARD_TRANSFER`, CARD_DELETE: `${PREFIX}/CARD_DELETE`, CURRENT_CARD_DELETE: `${PREFIX}/CURRENT_CARD_DELETE`, + CARD_DELETE_HANDLE: `${PREFIX}/CARD_DELETE_HANDLE`, /* Task */ TASK_IN_CURRENT_CARD_CREATE: `${PREFIX}/TASK_IN_CURRENT_CARD_CREATE`, + TASK_CREATE_HANDLE: `${PREFIX}/TASK_CREATE_HANDLE`, TASK_UPDATE: `${PREFIX}/TASK_UPDATE`, + TASK_UPDATE_HANDLE: `${PREFIX}/TASK_UPDATE_HANDLE`, TASK_DELETE: `${PREFIX}/TASK_DELETE`, + TASK_DELETE_HANDLE: `${PREFIX}/TASK_DELETE_HANDLE`, /* Attachment */ ATTACHMENT_IN_CURRENT_CARD_CREATE: `${PREFIX}/ATTACHMENT_IN_CURRENT_CARD_CREATE`, + ATTACHMENT_CREATE_HANDLE: `${PREFIX}/ATTACHMENT_CREATE_HANDLE`, ATTACHMENT_UPDATE: `${PREFIX}/ATTACHMENT_UPDATE`, + ATTACHMENT_UPDATE_HANDLE: `${PREFIX}/ATTACHMENT_UPDATE_HANDLE`, ATTACHMENT_DELETE: `${PREFIX}/ATTACHMENT_DELETE`, + ATTACHMENT_DELETE_HANDLE: `${PREFIX}/ATTACHMENT_DELETE_HANDLE`, /* Actions */ ACTIONS_IN_CURRENT_CARD_FETCH: `${PREFIX}/ACTIONS_IN_CURRENT_CARD_FETCH`, + /* Action */ + + ACTION_CREATE_HANDLE: `${PREFIX}/ACTION_CREATE_HANDLE`, + ACTION_UPDATE_HANDLE: `${PREFIX}/ACTION_UPDATE_HANDLE`, + ACTION_DELETE_HANDLE: `${PREFIX}/ACTION_DELETE_HANDLE`, + /* Comment action */ COMMENT_ACTION_IN_CURRENT_CARD_CREATE: `${PREFIX}/COMMENT_ACTION_IN_CURRENT_CARD_CREATE`, @@ -110,5 +162,7 @@ export default { /* Notification */ + NOTIFICATION_CREATE_HANDLE: `${PREFIX}/NOTIFICATION_CREATE_HANDLE`, NOTIFICATION_DELETE: `${PREFIX}/NOTIFICATION_DELETE`, + NOTIFICATION_DELETE_HANDLE: `${PREFIX}/NOTIFICATION_DELETE_HANDLE`, }; diff --git a/client/src/constants/ModalTypes.js b/client/src/constants/ModalTypes.js index 64ce49e8..8ea064e4 100755 --- a/client/src/constants/ModalTypes.js +++ b/client/src/constants/ModalTypes.js @@ -1,9 +1,11 @@ const USERS = 'USERS'; const USER_SETTINGS = 'USER_SETTINGS'; const PROJECT_ADD = 'PROJECT_ADD'; +const PROJECT_SETTINGS = 'PROJECT_SETTINGS'; export default { USERS, USER_SETTINGS, PROJECT_ADD, + PROJECT_SETTINGS, }; diff --git a/client/src/constants/SocketStatuses.js b/client/src/constants/SocketStatuses.js deleted file mode 100644 index f8ead497..00000000 --- a/client/src/constants/SocketStatuses.js +++ /dev/null @@ -1,7 +0,0 @@ -const DISCONNECTED = 'DISCONNECTED'; -const RECONNECTED = 'RECONNECTED'; - -export default { - DISCONNECTED, - RECONNECTED, -}; diff --git a/client/src/containers/BoardActionsContainer.js b/client/src/containers/BoardActionsContainer.js new file mode 100644 index 00000000..9ede5caa --- /dev/null +++ b/client/src/containers/BoardActionsContainer.js @@ -0,0 +1,59 @@ +import { bindActionCreators } from 'redux'; +import { connect } from 'react-redux'; + +import { + filterLabelsForCurrentBoardSelector, + filterUsersForCurrentBoardSelector, + isCurrentUserManagerForCurrentProjectSelector, + labelsForCurrentBoardSelector, + membershipsForCurrentBoardSelector, + usersSelector, +} from '../selectors'; +import { + addLabelToFilterInCurrentBoard, + addUserToFilterInCurrentBoard, + createLabelInCurrentBoard, + createMembershipInCurrentBoard, + deleteBoardMembership, + deleteLabel, + removeLabelFromFilterInCurrentBoard, + removeUserFromFilterInCurrentBoard, + updateLabel, +} from '../actions/entry'; +import BoardActions from '../components/BoardActions'; + +const mapStateToProps = (state) => { + const allUsers = usersSelector(state); + const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state); + const memberships = membershipsForCurrentBoardSelector(state); + const labels = labelsForCurrentBoardSelector(state); + const filterUsers = filterUsersForCurrentBoardSelector(state); + const filterLabels = filterLabelsForCurrentBoardSelector(state); + + return { + memberships, + labels, + filterUsers, + filterLabels, + allUsers, + canEditMemberships: isCurrentUserManager, + }; +}; + +const mapDispatchToProps = (dispatch) => + bindActionCreators( + { + onMembershipCreate: createMembershipInCurrentBoard, + onMembershipDelete: deleteBoardMembership, + onUserToFilterAdd: addUserToFilterInCurrentBoard, + onUserFromFilterRemove: removeUserFromFilterInCurrentBoard, + onLabelToFilterAdd: addLabelToFilterInCurrentBoard, + onLabelFromFilterRemove: removeLabelFromFilterInCurrentBoard, + onLabelCreate: createLabelInCurrentBoard, + onLabelUpdate: updateLabel, + onLabelDelete: deleteLabel, + }, + dispatch, + ); + +export default connect(mapStateToProps, mapDispatchToProps)(BoardActions); diff --git a/client/src/containers/BoardKanbanContainer.js b/client/src/containers/BoardKanbanContainer.js index 9f8027ce..ed1ad614 100755 --- a/client/src/containers/BoardKanbanContainer.js +++ b/client/src/containers/BoardKanbanContainer.js @@ -2,42 +2,22 @@ import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { - filterLabelsForCurrentBoardSelector, - filterUsersForCurrentBoardSelector, - labelsForCurrentBoardSelector, + isCurrentUserMemberForCurrentBoardSelector, listIdsForCurrentBoardSelector, - membershipsForCurrentProjectSelector, pathSelector, } from '../selectors'; -import { - addLabelToFilterInCurrentBoard, - addUserToFilterInCurrentBoard, - createLabelInCurrentBoard, - createListInCurrentBoard, - deleteLabel, - moveCard, - moveList, - removeLabelFromFilterInCurrentBoard, - removeUserFromFilterInCurrentBoard, - updateLabel, -} from '../actions/entry'; +import { createListInCurrentBoard, moveCard, moveList } from '../actions/entry'; import BoardKanban from '../components/BoardKanban'; const mapStateToProps = (state) => { const { cardId } = pathSelector(state); - const allProjectMemberships = membershipsForCurrentProjectSelector(state); - const allLabels = labelsForCurrentBoardSelector(state); + const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state); const listIds = listIdsForCurrentBoardSelector(state); - const filterUsers = filterUsersForCurrentBoardSelector(state); - const filterLabels = filterLabelsForCurrentBoardSelector(state); return { listIds, - filterUsers, - filterLabels, - allProjectMemberships, - allLabels, isCardModalOpened: !!cardId, + canEdit: isCurrentUserMember, }; }; @@ -47,13 +27,6 @@ const mapDispatchToProps = (dispatch) => onListCreate: createListInCurrentBoard, onListMove: moveList, onCardMove: moveCard, - onUserToFilterAdd: addUserToFilterInCurrentBoard, - onUserFromFilterRemove: removeUserFromFilterInCurrentBoard, - onLabelToFilterAdd: addLabelToFilterInCurrentBoard, - onLabelFromFilterRemove: removeLabelFromFilterInCurrentBoard, - onLabelCreate: createLabelInCurrentBoard, - onLabelUpdate: updateLabel, - onLabelDelete: deleteLabel, }, dispatch, ); diff --git a/client/src/containers/BoardsContainer.js b/client/src/containers/BoardsContainer.js index 1b7ee27d..b0d193d4 100755 --- a/client/src/containers/BoardsContainer.js +++ b/client/src/containers/BoardsContainer.js @@ -1,19 +1,23 @@ import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import { boardsForCurrentProjectSelector, currentUserSelector, pathSelector } from '../selectors'; +import { + boardsForCurrentProjectSelector, + isCurrentUserManagerForCurrentProjectSelector, + pathSelector, +} from '../selectors'; import { createBoardInCurrentProject, deleteBoard, moveBoard, updateBoard } from '../actions/entry'; import Boards from '../components/Boards'; const mapStateToProps = (state) => { const { boardId } = pathSelector(state); - const { isAdmin } = currentUserSelector(state); const boards = boardsForCurrentProjectSelector(state); + const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state); return { items: boards, currentId: boardId, - isEditable: isAdmin, + canEdit: isCurrentUserManager, }; }; diff --git a/client/src/containers/CardContainer.js b/client/src/containers/CardContainer.js index 7722668d..09a93cc5 100755 --- a/client/src/containers/CardContainer.js +++ b/client/src/containers/CardContainer.js @@ -2,13 +2,14 @@ import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { + isCurrentUserMemberForCurrentBoardSelector, labelsForCurrentBoardSelector, makeCardByIdSelector, makeLabelsByCardIdSelector, makeNotificationsTotalByCardIdSelector, makeTasksByCardIdSelector, makeUsersByCardIdSelector, - membershipsForCurrentProjectSelector, + membershipsForCurrentBoardSelector, pathSelector, projectsToListsForCurrentUserSelector, } from '../selectors'; @@ -38,8 +39,9 @@ const makeMapStateToProps = () => { return (state, { id, index }) => { const { projectId } = pathSelector(state); const allProjectsToLists = projectsToListsForCurrentUserSelector(state); - const allProjectMemberships = membershipsForCurrentProjectSelector(state); + const allBoardMemberships = membershipsForCurrentBoardSelector(state); const allLabels = labelsForCurrentBoardSelector(state); + const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state); const { name, dueDate, timer, coverUrl, boardId, listId, isPersisted } = cardByIdSelector( state, @@ -67,8 +69,9 @@ const makeMapStateToProps = () => { labels, tasks, allProjectsToLists, - allProjectMemberships, + allBoardMemberships, allLabels, + canEdit: isCurrentUserMember, }; }; }; diff --git a/client/src/containers/CardModalContainer.js b/client/src/containers/CardModalContainer.js index bcce3870..57bb77fe 100755 --- a/client/src/containers/CardModalContainer.js +++ b/client/src/containers/CardModalContainer.js @@ -7,10 +7,11 @@ import { actionsForCurrentCardSelector, attachmentsForCurrentCardSelector, currentCardSelector, - currentUserSelector, + isCurrentUserManagerForCurrentProjectSelector, + isCurrentUserMemberForCurrentBoardSelector, labelsForCurrentBoardSelector, labelsForCurrentCardSelector, - membershipsForCurrentProjectSelector, + membershipsForCurrentBoardSelector, pathSelector, projectsToListsForCurrentUserSelector, tasksForCurrentCardSelector, @@ -45,10 +46,11 @@ import CardModal from '../components/CardModal'; const mapStateToProps = (state) => { const { projectId } = pathSelector(state); - const { isAdmin } = currentUserSelector(state); const allProjectsToLists = projectsToListsForCurrentUserSelector(state); - const allProjectMemberships = membershipsForCurrentProjectSelector(state); + const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state); + const allBoardMemberships = membershipsForCurrentBoardSelector(state); const allLabels = labelsForCurrentBoardSelector(state); + const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state); const { name, @@ -85,9 +87,10 @@ const mapStateToProps = (state) => { attachments, actions, allProjectsToLists, - allProjectMemberships, + allBoardMemberships, allLabels, - isEditable: isAdmin, + canEdit: isCurrentUserMember, + canEditAllCommentActions: isCurrentUserManager, }; }; diff --git a/client/src/containers/CoreWrapperContainer.js b/client/src/containers/CoreWrapperContainer.js index b0518be0..e8679b75 100755 --- a/client/src/containers/CoreWrapperContainer.js +++ b/client/src/containers/CoreWrapperContainer.js @@ -8,6 +8,7 @@ const mapStateToProps = (state) => { return { isInitializing: isCoreInitializing, + isSocketDisconnected: state.socket.isDisconnected, }; }; diff --git a/client/src/containers/FixedContainer.js b/client/src/containers/FixedContainer.js index eeafb897..70d6813a 100644 --- a/client/src/containers/FixedContainer.js +++ b/client/src/containers/FixedContainer.js @@ -1,13 +1,15 @@ import { connect } from 'react-redux'; -import { pathSelector } from '../selectors'; +import { currentBoardSelector, pathSelector } from '../selectors'; import Fixed from '../components/Fixed'; const mapStateToProps = (state) => { const { projectId } = pathSelector(state); + const currentBoard = currentBoardSelector(state); return { projectId, + board: currentBoard, }; }; diff --git a/client/src/containers/HeaderContainer.js b/client/src/containers/HeaderContainer.js index 198ccded..08434014 100755 --- a/client/src/containers/HeaderContainer.js +++ b/client/src/containers/HeaderContainer.js @@ -1,10 +1,16 @@ import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import { currentUserSelector, notificationsForCurrentUserSelector } from '../selectors'; +import { + currentProjectSelector, + currentUserSelector, + isCurrentUserManagerForCurrentProjectSelector, + notificationsForCurrentUserSelector, +} from '../selectors'; import { deleteNotification, logout, + openProjectSettingsModal, openUserSettingsModal, openUsersModal, } from '../actions/entry'; @@ -12,21 +18,26 @@ import Header from '../components/Header'; const mapStateToProps = (state) => { const currentUser = currentUserSelector(state); + const currentProject = currentProjectSelector(state); const notifications = notificationsForCurrentUserSelector(state); + const isCurrentUserManager = isCurrentUserManagerForCurrentProjectSelector(state); return { notifications, + project: currentProject, user: currentUser, - isEditable: currentUser.isAdmin, + canEditProject: isCurrentUserManager, + canEditUsers: currentUser.isAdmin, }; }; const mapDispatchToProps = (dispatch) => bindActionCreators( { - onUsers: openUsersModal, // TODO: rename + onProjectSettingsClick: openProjectSettingsModal, + onUsersClick: openUsersModal, onNotificationDelete: deleteNotification, - onUserSettings: openUserSettingsModal, + onUserSettingsClick: openUserSettingsModal, onLogout: logout, }, dispatch, diff --git a/client/src/containers/ListContainer.js b/client/src/containers/ListContainer.js index fcf26d80..84dac1f9 100755 --- a/client/src/containers/ListContainer.js +++ b/client/src/containers/ListContainer.js @@ -1,9 +1,8 @@ import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import omit from 'lodash/omit'; import { - isAnyFilterActiveForCurrentBoardSelector, + isCurrentUserMemberForCurrentBoardSelector, makeCardIdsByListIdSelector, makeListByIdSelector, } from '../selectors'; @@ -17,7 +16,7 @@ const makeMapStateToProps = () => { return (state, { id, index }) => { const { name, isPersisted } = listByIdSelector(state, id); const cardIds = cardIdsByListIdSelector(state, id); - const isAnyFilterActive = isAnyFilterActiveForCurrentBoardSelector(state); + const isCurrentUserMember = isCurrentUserMemberForCurrentBoardSelector(state); return { id, @@ -25,7 +24,7 @@ const makeMapStateToProps = () => { name, isPersisted, cardIds, - isDeletable: !isAnyFilterActive, + canEdit: isCurrentUserMember, }; }; }; @@ -40,9 +39,4 @@ const mapDispatchToProps = (dispatch, { id }) => dispatch, ); -const mergeProps = (stateProps, dispatchProps) => ({ - ...omit(stateProps, 'isDeletable'), - ...(stateProps.isDeletable ? dispatchProps : omit(dispatchProps, 'onDelete')), -}); - -export default connect(makeMapStateToProps, mapDispatchToProps, mergeProps)(List); +export default connect(makeMapStateToProps, mapDispatchToProps)(List); diff --git a/client/src/containers/LoginContainer.js b/client/src/containers/LoginContainer.js index 7a911649..d895adb9 100755 --- a/client/src/containers/LoginContainer.js +++ b/client/src/containers/LoginContainer.js @@ -4,7 +4,11 @@ import { connect } from 'react-redux'; import { authenticate, clearAuthenticateError } from '../actions/entry'; import Login from '../components/Login'; -const mapStateToProps = ({ authenticateForm: { data: defaultData, isSubmitting, error } }) => ({ +const mapStateToProps = ({ + ui: { + authenticateForm: { data: defaultData, isSubmitting, error }, + }, +}) => ({ defaultData, isSubmitting, error, diff --git a/client/src/containers/ProjectAddModalContainer.js b/client/src/containers/ProjectAddModalContainer.js index 1325cedc..5c20abe3 100755 --- a/client/src/containers/ProjectAddModalContainer.js +++ b/client/src/containers/ProjectAddModalContainer.js @@ -4,7 +4,11 @@ import { connect } from 'react-redux'; import { closeModal, createProject } from '../actions/entry'; import ProjectAddModal from '../components/ProjectAddModal'; -const mapStateToProps = ({ projectCreateForm: { data: defaultData, isSubmitting } }) => ({ +const mapStateToProps = ({ + ui: { + projectCreateForm: { data: defaultData, isSubmitting }, + }, +}) => ({ defaultData, isSubmitting, }); diff --git a/client/src/containers/ProjectContainer.js b/client/src/containers/ProjectContainer.js index c618fde5..266d0f7e 100755 --- a/client/src/containers/ProjectContainer.js +++ b/client/src/containers/ProjectContainer.js @@ -1,50 +1,15 @@ -import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import { - allUsersSelector, - currentProjectSelector, - currentUserSelector, - membershipsForCurrentProjectSelector, -} from '../selectors'; -import { - createMembershipInCurrentProject, - deleteCurrentProject, - deleteProjectMembership, - updateCurrentProject, - updateCurrentProjectBackgroundImage, -} from '../actions/entry'; +import { currentModalSelector } from '../selectors'; +import ModalTypes from '../constants/ModalTypes'; import Project from '../components/Project'; const mapStateToProps = (state) => { - const allUsers = allUsersSelector(state); - const { isAdmin } = currentUserSelector(state); - const { name, background, backgroundImage, isBackgroundImageUpdating } = currentProjectSelector( - state, - ); - const memberships = membershipsForCurrentProjectSelector(state); + const currentModal = currentModalSelector(state); return { - name, - background, - backgroundImage, - isBackgroundImageUpdating, - memberships, - allUsers, - isEditable: isAdmin, + isSettingsModalOpened: currentModal === ModalTypes.PROJECT_SETTINGS, }; }; -const mapDispatchToProps = (dispatch) => - bindActionCreators( - { - onUpdate: updateCurrentProject, - onBackgroundImageUpdate: updateCurrentProjectBackgroundImage, - onDelete: deleteCurrentProject, - onMembershipCreate: createMembershipInCurrentProject, - onMembershipDelete: deleteProjectMembership, - }, - dispatch, - ); - -export default connect(mapStateToProps, mapDispatchToProps)(Project); +export default connect(mapStateToProps)(Project); diff --git a/client/src/containers/ProjectSettingsModalContainer.js b/client/src/containers/ProjectSettingsModalContainer.js new file mode 100644 index 00000000..f4fa2970 --- /dev/null +++ b/client/src/containers/ProjectSettingsModalContainer.js @@ -0,0 +1,50 @@ +import { bindActionCreators } from 'redux'; +import { connect } from 'react-redux'; + +import { + currentProjectSelector, + managersForCurrentProjectSelector, + usersSelector, +} from '../selectors'; +import { + closeModal, + createManagerInCurrentProject, + deleteCurrentProject, + deleteProjectManager, + updateCurrentProject, + updateCurrentProjectBackgroundImage, +} from '../actions/entry'; +import ProjectSettingsModal from '../components/ProjectSettingsModal'; + +const mapStateToProps = (state) => { + const users = usersSelector(state); + + const { name, background, backgroundImage, isBackgroundImageUpdating } = + currentProjectSelector(state); + + const managers = managersForCurrentProjectSelector(state); + + return { + name, + background, + backgroundImage, + isBackgroundImageUpdating, + managers, + allUsers: users, + }; +}; + +const mapDispatchToProps = (dispatch) => + bindActionCreators( + { + onUpdate: updateCurrentProject, + onBackgroundImageUpdate: updateCurrentProjectBackgroundImage, + onDelete: deleteCurrentProject, + onManagerCreate: createManagerInCurrentProject, + onManagerDelete: deleteProjectManager, + onClose: closeModal, + }, + dispatch, + ); + +export default connect(mapStateToProps, mapDispatchToProps)(ProjectSettingsModal); diff --git a/client/src/containers/ProjectsContainer.js b/client/src/containers/ProjectsContainer.js index 69f4f02b..1db7b074 100755 --- a/client/src/containers/ProjectsContainer.js +++ b/client/src/containers/ProjectsContainer.js @@ -7,11 +7,11 @@ import Projects from '../components/Projects'; const mapStateToProps = (state) => { const { isAdmin } = currentUserSelector(state); - const projects = projectsForCurrentUserSelector(state); + const project = projectsForCurrentUserSelector(state); return { - items: projects, - isEditable: isAdmin, + items: project, + canAdd: isAdmin, }; }; diff --git a/client/src/containers/SocketStatusContainer.js b/client/src/containers/SocketStatusContainer.js deleted file mode 100755 index d5b276b5..00000000 --- a/client/src/containers/SocketStatusContainer.js +++ /dev/null @@ -1,11 +0,0 @@ -import { connect } from 'react-redux'; - -import SocketStatuses from '../constants/SocketStatuses'; -import SocketStatus from '../components/SocketStatus'; - -const mapStateToProps = ({ socket: { status } }) => ({ - isDisconnected: status === SocketStatuses.DISCONNECTED, - isReconnected: status === SocketStatuses.RECONNECTED, -}); - -export default connect(mapStateToProps)(SocketStatus); diff --git a/client/src/containers/UserAddPopupContainer.js b/client/src/containers/UserAddPopupContainer.js index 4a6cae2b..9915c0b7 100755 --- a/client/src/containers/UserAddPopupContainer.js +++ b/client/src/containers/UserAddPopupContainer.js @@ -4,7 +4,11 @@ import { connect } from 'react-redux'; import { clearUserCreateError, createUser } from '../actions/entry'; import UserAddPopup from '../components/UserAddPopup'; -const mapStateToProps = ({ userCreateForm: { data: defaultData, isSubmitting, error } }) => ({ +const mapStateToProps = ({ + ui: { + userCreateForm: { data: defaultData, isSubmitting, error }, + }, +}) => ({ defaultData, isSubmitting, error, diff --git a/client/src/containers/UsersModalContainer.js b/client/src/containers/UsersModalContainer.js index 23fcbbb9..32d3f0f3 100755 --- a/client/src/containers/UsersModalContainer.js +++ b/client/src/containers/UsersModalContainer.js @@ -1,15 +1,15 @@ import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import { allUsersExceptCurrentSelector } from '../selectors'; +import { usersExceptCurrentSelector } from '../selectors'; import { closeModal, deleteUser, updateUser } from '../actions/entry'; import UsersModal from '../components/UsersModal'; const mapStateToProps = (state) => { - const items = allUsersExceptCurrentSelector(state); + const users = usersExceptCurrentSelector(state); return { - items, + items: users, }; }; diff --git a/client/src/locales/cs/core.js b/client/src/locales/cs/core.js index 5338e6be..09c60101 100644 --- a/client/src/locales/cs/core.js +++ b/client/src/locales/cs/core.js @@ -43,7 +43,6 @@ export default { cardNotFound_title: 'Karta nenalezena', cardOrActionAreDeleted: 'Karta nebo akce je smazána', color: 'Barva', - connectionRestored_title: 'Spojení obnoveno', createBoard_title: 'Vytvořit tabuli', createLabel_title: 'Vytvořit štítek', createNewOneOrSelectExistingOne: 'Vytvořit nový nebo vyberte
již existující', @@ -65,14 +64,12 @@ export default { dropFileToUpload: 'Přetáhnutím nahraj soubor', editAttachment_title: 'Upravit přílohu', editAvatar_title: 'Upravit avatar', - editBackground_title: 'Upravit pozadí', editBoard_title: 'Upravit tabuli', editDueDate_title: 'Upravit Termín do', editEmail_title: 'Upravit e-mail', editLabel_title: 'Upravit štítek', editPassword_title: 'Upravit heslo', editTimer_title: 'Upravit časovač', - editTitle_title: 'Upravit titulek', editUsername_title: 'Upravit uživatelské jméno', email: 'E-mail', emailAlreadyInUse: 'E-mail se již používá', @@ -111,10 +108,7 @@ export default { pressPasteShortcutToAddAttachmentFromClipboard: 'Tip: dejte Ctrl-V (Cmd-V na Mac) pro vložení přílohy ze schránky.', project: 'Projekt', - projectActions_title: 'Akce na projektu', projectNotFound_title: 'Projekt nenalezen', - refreshPageToLoadLastDataAndReceiveUpdates: - '<0>Obnovit stránku pro načtení posledních dat
a načtení aktualizací', removeMember_title: 'Odstranit člena', seconds: 'Vteřin', selectBoard: 'Vybrat tabuli', @@ -159,7 +153,6 @@ export default { delete: 'Smazat', deleteAttachment: 'Smazat přílohu', deleteAvatar: 'Smazat avatar', - deleteBackground: 'Smazat pozadí', deleteBoard: 'Smazat tabuli', deleteCard: 'Smazat kartu', deleteCard_title: 'Smazat kartu', @@ -174,12 +167,10 @@ export default { deleteTask_title: 'Smazat úkol', deleteUser: 'Smazat uživatele', edit: 'Upravit', - editBackground_title: 'Upravit pozadí', editDueDate_title: 'Upravit termín do', editDescription_title: 'Upravit popis', editEmail_title: 'Upravit e-mail', editPassword_title: 'Upravit heslo', - editTask_title: 'Upravit úkol', editTimer_title: 'Upravit časovač', editTitle_title: 'Upravit titulek', editUsername_title: 'Upravit uživatelské jméno', diff --git a/client/src/locales/de/core.js b/client/src/locales/de/core.js index b9cd604e..abc05fb4 100644 --- a/client/src/locales/de/core.js +++ b/client/src/locales/de/core.js @@ -47,7 +47,6 @@ export default { cardNotFound_title: 'Karte nicht gefunden', cardOrActionAreDeleted: 'Karte oder Aktion wurden gelöscht', color: 'Farbe', - connectionRestored_title: 'Verbindung wiederhergestellt', createBoard_title: 'Board erstellen', createLabel_title: 'Label erstellen', createNewOneOrSelectExistingOne: 'Eine Neue erstellen, oder
eine bestehende auswählen', @@ -69,14 +68,12 @@ export default { dropFileToUpload: 'Datei ablegen um hochzuladen', editAttachment_title: 'Anhang bearbieten', editAvatar_title: 'Avatar bearbeiten', - editBackground_title: 'Hintergrund ändern', editBoard_title: 'Board bearbeiten', editDueDate_title: 'Änderung Fälligkeitsdatum', editEmail_title: 'E-Mail bearbeiten', editLabel_title: 'Label bearbeiten', editPassword_title: 'Passwort ändern', editTimer_title: 'Timer bearbeiten', - editTitle_title: 'Titel bearbeiten', editUsername_title: 'Benutzername bearbeiten', email: 'E-Mail', emailAlreadyInUse: 'E-Mail bereits in Verwendung', @@ -115,10 +112,7 @@ export default { pressPasteShortcutToAddAttachmentFromClipboard: 'Tipp: Drücken Sie STRG-V (Cmd-V auf Mac), um einen Anhang aus der Zwischenablage hinzuzufügen.', project: 'Projekt', - projectActions_title: 'Projekt Aktionen', projectNotFound_title: 'Projekt nicht gefunden', - refreshPageToLoadLastDataAndReceiveUpdates: - '<0>Seite aktualisieren um die letzten Änderungen zu laden
und updates zu erhalten', removeMember_title: 'Mitglied entfernen', seconds: 'Sekunden', selectBoard: 'Board auswählen', @@ -165,7 +159,6 @@ export default { delete: 'löschen', deleteAttachment: 'Anhang löschen', deleteAvatar: 'Avatar löschen', - deleteBackground: 'Hintergrund löschen', deleteBoard: 'Board löschen', deleteCard: 'Karte löschen', deleteCard_title: 'Karte löschen', @@ -180,12 +173,10 @@ export default { deleteTask_title: 'Aufgabe löschen', deleteUser: 'Benutzer löschen', edit: 'bearbeiten', - editBackground_title: 'Hintergrund bearbeiten', editDueDate_title: 'Fälligkeitsdatum bearbeiten', editDescription_title: 'Beschriebung ändern', editEmail_title: 'E-Mail bearbeiten', editPassword_title: 'Passwort ändern', - editTask_title: 'Aufgabe bearbeiten', editTimer_title: 'Timer bearbeiten', editTitle_title: 'Titel bearbeiten', editUsername_title: 'Benutzername ändern', diff --git a/client/src/locales/en/core.js b/client/src/locales/en/core.js index ac37279c..1eefd31f 100644 --- a/client/src/locales/en/core.js +++ b/client/src/locales/en/core.js @@ -13,6 +13,7 @@ export default { actions: 'Actions', addAttachment_title: 'Add Attachment', addComment: 'Add comment', + addManager_title: 'Add Manager', addMember_title: 'Add Member', addUser_title: 'Add User', administrator: 'Administrator', @@ -28,24 +29,29 @@ export default { areYouSureYouWantToDeleteThisProject: 'Are you sure you want to delete this project?', areYouSureYouWantToDeleteThisTask: 'Are you sure you want to delete this task?', areYouSureYouWantToDeleteThisUser: 'Are you sure you want to delete this user?', - areYouSureYouWantToRemoveThisMemberFromProject: - 'Are you sure you want to remove this member from project?', + areYouSureYouWantToLeaveBoard: 'Are you sure you want to leave the board?', + areYouSureYouWantToLeaveProject: 'Are you sure you want to leave the project?', + areYouSureYouWantToRemoveThisManagerFromProject: + 'Are you sure you want to remove this manager from the project?', + areYouSureYouWantToRemoveThisMemberFromBoard: + 'Are you sure you want to remove this member from the board?', attachment: 'Attachment', attachments: 'Attachments', authentication: 'Authentication', + background: 'Background', board: 'Board', boardNotFound_title: 'Board Not Found', cardActions_title: 'Card Actions', cardNotFound_title: 'Card Not Found', cardOrActionAreDeleted: 'Card or action are deleted', color: 'Color', - connectionRestored_title: 'Connection Restored', createBoard_title: 'Create Board', createLabel_title: 'Create Label', createNewOneOrSelectExistingOne: 'Create a new one or select
an existing one', createProject_title: 'Create Project', createTextFile_title: 'Create Text File', currentPassword: 'Current password', + dangerZone_title: 'Danger Zone', date: 'Date', dueDate_title: 'Due Date', deleteAttachment_title: 'Delete Attachment', @@ -61,14 +67,12 @@ export default { dropFileToUpload: 'Drop file to upload', editAttachment_title: 'Edit Attachment', editAvatar_title: 'Edit Avatar', - editBackground_title: 'Edit Background', editBoard_title: 'Edit Board', editDueDate_title: 'Edit Due Date', editEmail_title: 'Edit E-mail', editLabel_title: 'Edit Label', editPassword_title: 'Edit Password', editTimer_title: 'Edit Timer', - editTitle_title: 'Edit Title', editUsername_title: 'Edit Username', email: 'E-mail', emailAlreadyInUse: 'E-mail already in use', @@ -81,11 +85,15 @@ export default { filterByLabels_title: 'Filter By Labels', filterByMembers_title: 'Filter By Members', fromComputer_title: 'From Computer', + general: 'General', hours: 'Hours', invalidCurrentPassword: 'Invalid current password', labels: 'Labels', + leaveBoard_title: 'Leave Board', + leaveProject_title: 'Leave Project', list: 'List', listActions_title: 'List Actions', + managers: 'Managers', members: 'Members', minutes: 'Minutes', moveCard_title: 'Move Card', @@ -107,10 +115,8 @@ export default { pressPasteShortcutToAddAttachmentFromClipboard: 'Tip: press Ctrl-V (Cmd-V on Mac) to add an attachment from the clipboard.', project: 'Project', - projectActions_title: 'Project Actions', projectNotFound_title: 'Project Not Found', - refreshPageToLoadLastDataAndReceiveUpdates: - '<0>Refresh the page to load last data
and receive updates', + removeManager_title: 'Remove Manager', removeMember_title: 'Remove Member', seconds: 'Seconds', selectBoard: 'Select board', @@ -155,7 +161,6 @@ export default { delete: 'Delete', deleteAttachment: 'Delete attachment', deleteAvatar: 'Delete avatar', - deleteBackground: 'Delete background', deleteBoard: 'Delete board', deleteCard: 'Delete card', deleteCard_title: 'Delete Card', @@ -170,15 +175,15 @@ export default { deleteTask_title: 'Delete Task', deleteUser: 'Delete user', edit: 'Edit', - editBackground_title: 'Edit Background', editDueDate_title: 'Edit Due Date', editDescription_title: 'Edit Description', editEmail_title: 'Edit E-mail', editPassword_title: 'Edit Password', - editTask_title: 'Edit Task', editTimer_title: 'Edit Timer', editTitle_title: 'Edit Title', editUsername_title: 'Edit Username', + leaveBoard: 'Leave board', + leaveProject: 'Leave project', logOut_title: 'Log Out', makeCover_title: 'Make Cover', move: 'Move', @@ -186,7 +191,9 @@ export default { remove: 'Remove', removeBackground: 'Remove background', removeCover_title: 'Remove Cover', + removeFromBoard: 'Remove from board', removeFromProject: 'Remove from project', + removeManager: 'Remove manager', removeMember: 'Remove member', save: 'Save', showAllAttachments: 'Show all attachments ({{hidden}} hidden)', diff --git a/client/src/locales/es/core.js b/client/src/locales/es/core.js index 44619888..37fff6e4 100644 --- a/client/src/locales/es/core.js +++ b/client/src/locales/es/core.js @@ -43,7 +43,6 @@ export default { cardNotFound_title: 'tarjeta no encontrada', cardOrActionAreDeleted: 'La tarjeta o la acción está eliminada', color: 'Color', - connectionRestored_title: 'Conexión restaurada', createBoard_title: 'Crear Tablero', createLabel_title: 'Crear Etiqueta', createNewOneOrSelectExistingOne: 'Crear uno nuevo o seleccionar
uno existente', @@ -65,14 +64,12 @@ export default { dropFileToUpload: 'Arrastra un archivo para subirlo', editAttachment_title: 'Editar adjunto', editAvatar_title: 'Editar avatar', - editBackground_title: 'Editar fondo', editBoard_title: 'Editar Tablero', editDueDate_title: 'Editar Fecha de Vencimiento', editEmail_title: 'Editar Correo', editLabel_title: 'Editar Etiqueta', editPassword_title: 'Editar Contraseña', editTimer_title: 'Editar Temporizador', - editTitle_title: 'Editar Título', editUsername_title: 'Edit nombre de usuario', email: 'Correo', emailAlreadyInUse: 'El correo ya está en uso', @@ -111,10 +108,7 @@ export default { pressPasteShortcutToAddAttachmentFromClipboard: 'Tip: presiona Ctrl-V (Cmd-V en Mac) para añadir adjuntos desde el portapapeles.', project: 'Proyecto', - projectActions_title: 'Acciones del Proyecto', projectNotFound_title: 'Proyecto no encontrado', - refreshPageToLoadLastDataAndReceiveUpdates: - '<0>Refresca la página para cargar los últimos datos
y recibir actualizaciones', removeMember_title: 'Remover Miembro', seconds: 'Segundos', selectBoard: 'Seleccionar Tablero', @@ -160,7 +154,6 @@ export default { delete: 'Borrar', deleteAttachment: 'Borrar adjuntos', deleteAvatar: 'Borrar avatar', - deleteBackground: 'Borrar fondo', deleteBoard: 'Borrar tablero', deleteCard: 'Borrar tarjeta', deleteCard_title: 'Borrar tarjeta', @@ -175,12 +168,10 @@ export default { deleteTask_title: 'Borrar Tarea', deleteUser: 'Delete usuario', edit: 'Editar', - editBackground_title: 'Editar Fondo', editDueDate_title: 'Editar Fecha de Vencimiento', editDescription_title: 'Editar Descripción', editEmail_title: 'Editar Correo', editPassword_title: 'Editar Contraseña', - editTask_title: 'Editar Tarea', editTimer_title: 'Edit Temporizador', editTitle_title: 'Edit Título', editUsername_title: 'Editar Nombre de Usuario', diff --git a/client/src/locales/fr/core.js b/client/src/locales/fr/core.js index b519efb1..8128750c 100644 --- a/client/src/locales/fr/core.js +++ b/client/src/locales/fr/core.js @@ -43,7 +43,6 @@ export default { cardNotFound_title: 'Carte non trouvée', cardOrActionAreDeleted: "La carte ou l'action sont supprimées", color: 'Couleur', - connectionRestored_title: 'Connexion rétablie', createBoard_title: 'Créer un tableau', createLabel_title: 'Créer une étiquette', createNewOneOrSelectExistingOne: 'Créez-en un nouveau ou sélectionnez
un existant', @@ -65,14 +64,12 @@ export default { dropFileToUpload: 'Déposer le fichier à télécharger', editAttachment_title: 'Modifier la pièce jointe', editAvatar_title: 'Modifier Avatar', - editBackground_title: "Modifier l'arrière-plan", editBoard_title: 'Modifier le tableau', editDueDate_title: "Modifier la date d'échéance", editEmail_title: "Modifier l'e-mail", editLabel_title: "Modifier l'étiquette", editPassword_title: 'Modifier le mot de passe', editTimer_title: 'Modifier la minuterie', - editTitle_title: 'Modifier le titre', editUsername_title: "Modifier le nom d'utilisateur", email: 'E-mail', emailAlreadyInUse: 'Email déjà utilisé', @@ -110,10 +107,7 @@ export default { preferences: 'Préférences', pressPasteShortcutToAddAttachmentFromClipboard: 'Conseil', project: 'Projet', - projectActions_title: 'Actions de projet', projectNotFound_title: 'Projet introuvable', - refreshPageToLoadLastDataAndReceiveUpdates: - '<0> Rafraîchir la page pour charger les dernières données
et recevoir les mises à jour', removeMember_title: 'Supprimer le membre', seconds: 'Secondes', selectBoard: 'Sélectionner une carte', @@ -160,7 +154,6 @@ export default { delete: 'Supprimer', deleteAttachment: 'Supprimer la pièce jointe', deleteAvatar: "Supprimer l'avatar", - deleteBackground: "Supprimer l'arrière-plan", deleteBoard: 'Supprimer le tableau', deleteCard: 'Supprimer la carte', deleteCard_title: 'Supprimer la carte', @@ -175,12 +168,10 @@ export default { deleteTask_title: 'Supprimer la tâche', deleteUser: "Supprimer l'utilisateur", edit: 'Modifier', - editBackground_title: "Modifier l'arrière-plan", editDueDate_title: "Modifier la date d'échéance", editDescription_title: 'Éditer la description', editEmail_title: "Modifier l'e-mail", editPassword_title: 'Modifier le mot de passe', - editTask_title: 'Modifier la tâche', editTimer_title: 'Modifier la minuterie', editTitle_title: 'Modifier le titre', editUsername_title: "Modifier le nom d'utilisateur", diff --git a/client/src/locales/pl/core.js b/client/src/locales/pl/core.js index 39f86dce..5e5789ee 100644 --- a/client/src/locales/pl/core.js +++ b/client/src/locales/pl/core.js @@ -43,7 +43,6 @@ export default { cardNotFound_title: 'Karta Nie Znaleziona', cardOrActionAreDeleted: 'Karta lub akcja została usunięta', color: 'Kolor', - connectionRestored_title: 'Przywrócono Połączenie', createBoard_title: 'Utwórz Tablicę', createLabel_title: 'Utwórz Oznaczenie', createNewOneOrSelectExistingOne: 'Utwórz nowy lub wybierz
istniejący', @@ -65,14 +64,12 @@ export default { dropFileToUpload: 'Upuść plik aby wgrać', editAttachment_title: 'Edytuj Załącznik', editAvatar_title: 'Edytuj Avatar', - editBackground_title: 'Edytuj Tło', editBoard_title: 'Edytuj Tablicę', editDueDate_title: 'Edytuj Termin', editEmail_title: 'Edytuj E-mail', editLabel_title: 'Edytuj Oznaczenie', editPassword_title: 'Edytuj Hasło', editTimer_title: 'Edytuj Odliczanie', - editTitle_title: 'Edytuj Tytuł', editUsername_title: 'Edytuj Nazwę Użytkownika', email: 'E-mail', emailAlreadyInUse: 'E-mail jest już używany', @@ -111,10 +108,7 @@ export default { pressPasteShortcutToAddAttachmentFromClipboard: 'Podpowiedź: naciśnij Ctrl-V (Cmd-V na Macu) aby dodać załącznik ze schowka.', project: 'Projekt', - projectActions_title: 'Akcje Projektu', projectNotFound_title: 'Projekt Nie Znaleziony', - refreshPageToLoadLastDataAndReceiveUpdates: - '<0>Odśwież stronę aby załadować dane
oraz je uaktualnić', removeMember_title: 'Usuń Członka', seconds: 'Sekund', selectBoard: 'Wybierz tablicę', @@ -160,7 +154,6 @@ export default { delete: 'Usuń', deleteAttachment: 'Usuń załącznik', deleteAvatar: 'Usuń avatar', - deleteBackground: 'Usuń tło', deleteBoard: 'Usuń tablicę', deleteCard: 'Usuń kartę', deleteCard_title: 'Usuń Kartę', @@ -175,12 +168,10 @@ export default { deleteTask_title: 'Usuń Zadanie', deleteUser: 'Usuń użytkownika', edit: 'Edytuj', - editBackground_title: 'Edytuj Tło', editDueDate_title: 'Edytuj Termin', editDescription_title: 'Edytuj Opis', editEmail_title: 'Edytuj E-mail', editPassword_title: 'Edytuj Hasło', - editTask_title: 'Edytuj Zadanie', editTimer_title: 'Edytuj Odliczanie', editTitle_title: 'Edytuj Tytuł', editUsername_title: 'Edytuj Nazwę Użytkownika', diff --git a/client/src/locales/ru/core.js b/client/src/locales/ru/core.js index d1cd7853..b595c3df 100644 --- a/client/src/locales/ru/core.js +++ b/client/src/locales/ru/core.js @@ -113,8 +113,6 @@ export default { project: 'Проект', projectActions: 'Действия с проектом', projectNotFound: 'Проект не найден', - refreshPageToLoadLastDataAndReceiveUpdates: - '<0>Обновите страницу, чтобы загрузить
актуальные данные и получать обновления', removeMember: 'Удаление участника', seconds: 'Секунды', selectBoard: 'Выберите доску', @@ -159,7 +157,6 @@ export default { delete: 'Удалить', deleteAttachment: 'Удалить вложение', deleteAvatar: 'Удалить аватар', - deleteBackground: 'Удалить фон', deleteBoard: 'Удалить доску', deleteCard: 'Удалить карточку', deleteComment: 'Удалить комментарий', diff --git a/client/src/models/Action.js b/client/src/models/Action.js index da71b2ce..79042fea 100755 --- a/client/src/models/Action.js +++ b/client/src/models/Action.js @@ -29,23 +29,53 @@ export default class extends Model { static reducer({ type, payload }, Action) { switch (type) { - case ActionTypes.ACTIONS_FETCH_SUCCEEDED: + case ActionTypes.SOCKET_RECONNECT_HANDLE: + Action.all().delete(); + + payload.actions.forEach((action) => { + Action.upsert({ + ...action, + isInCard: false, + }); + }); + + break; + case ActionTypes.CORE_INITIALIZE: + payload.actions.forEach((action) => { + Action.upsert({ + ...action, + isInCard: false, + }); + }); + + break; + case ActionTypes.ACTIONS_FETCH__SUCCESS: + case ActionTypes.NOTIFICATION_CREATE_HANDLE: payload.actions.forEach((action) => { Action.upsert(action); }); break; - case ActionTypes.ACTION_CREATE_RECEIVED: + case ActionTypes.ACTION_CREATE_HANDLE: + case ActionTypes.ACTION_UPDATE_HANDLE: case ActionTypes.COMMENT_ACTION_CREATE: + case ActionTypes.COMMENT_ACTION_UPDATE__SUCCESS: Action.upsert(payload.action); break; - case ActionTypes.ACTION_UPDATE_RECEIVED: - Action.withId(payload.action.id).update(payload.action); + case ActionTypes.ACTION_DELETE_HANDLE: + case ActionTypes.COMMENT_ACTION_DELETE__SUCCESS: { + const actionModel = Action.withId(payload.action.id); + + if (actionModel) { + actionModel.delete(); + } break; - case ActionTypes.ACTION_DELETE_RECEIVED: - Action.withId(payload.action.id).delete(); + } + case ActionTypes.COMMENT_ACTION_CREATE__SUCCESS: + Action.withId(payload.localId).delete(); + Action.upsert(payload.action); break; case ActionTypes.COMMENT_ACTION_UPDATE: @@ -58,30 +88,6 @@ export default class extends Model { Action.withId(payload.id).delete(); break; - case ActionTypes.COMMENT_ACTION_CREATE_SUCCEEDED: - Action.withId(payload.localId).delete(); - Action.upsert(payload.action); - - break; - case ActionTypes.NOTIFICATIONS_FETCH_SUCCEEDED: - payload.actions.forEach((action) => { - Action.upsert({ - ...action, - isInCard: false, - }); - }); - - break; - case ActionTypes.NOTIFICATION_CREATE_RECEIVED: { - const actionModel = Action.withId(payload.action.id); - - Action.upsert({ - ...payload.action, - isInCard: actionModel ? actionModel.isInCard : false, - }); - - break; - } default: } } diff --git a/client/src/models/Attachment.js b/client/src/models/Attachment.js index 1f7fb0a4..521721a4 100644 --- a/client/src/models/Attachment.js +++ b/client/src/models/Attachment.js @@ -19,16 +19,53 @@ export default class extends Model { static reducer({ type, payload }, Attachment) { switch (type) { - case ActionTypes.BOARD_FETCH_SUCCEEDED: - case ActionTypes.CARD_CREATE_SUCCEEDED: - case ActionTypes.CARD_CREATE_RECEIVED: + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.attachments) { + payload.attachments.forEach((attachment) => { + Attachment.upsert(attachment); + }); + } + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + if (payload.attachments) { + // FIXME: bug with oneToOne relation in Redux-ORM + const attachmentIds = payload.attachments.map((attachment) => attachment.id); + + Attachment.all() + .toModelArray() + .forEach((attachmentModel) => { + if (!attachmentIds.includes(attachmentModel.id)) { + attachmentModel.delete(); + } + }); + + payload.attachments.forEach((attachment) => { + Attachment.upsert(attachment); + }); + } else { + Attachment.all().delete(); + } + + break; + case ActionTypes.BOARD_FETCH__SUCCESS: payload.attachments.forEach((attachment) => { Attachment.upsert(attachment); }); break; case ActionTypes.ATTACHMENT_CREATE: - case ActionTypes.ATTACHMENT_CREATE_RECEIVED: + case ActionTypes.ATTACHMENT_CREATE_HANDLE: + case ActionTypes.ATTACHMENT_UPDATE__SUCCESS: + case ActionTypes.ATTACHMENT_UPDATE_HANDLE: + Attachment.upsert(payload.attachment); + + break; + case ActionTypes.ATTACHMENT_CREATE__SUCCESS: + Attachment.withId(payload.localId).delete(); Attachment.upsert(payload.attachment); break; @@ -40,19 +77,16 @@ export default class extends Model { Attachment.withId(payload.id).delete(); break; - case ActionTypes.ATTACHMENT_CREATE_SUCCEEDED: - Attachment.withId(payload.localId).delete(); - Attachment.upsert(payload.attachment); - - break; - case ActionTypes.ATTACHMENT_UPDATE_RECEIVED: - Attachment.withId(payload.attachment.id).update(payload.attachment); - - break; - case ActionTypes.ATTACHMENT_DELETE_RECEIVED: - Attachment.withId(payload.attachment.id).delete(); + case ActionTypes.ATTACHMENT_DELETE__SUCCESS: + case ActionTypes.ATTACHMENT_DELETE_HANDLE: { + const attachmentModel = Attachment.withId(payload.attachment.id); + + if (attachmentModel) { + attachmentModel.delete(); + } break; + } default: } } diff --git a/client/src/models/Board.js b/client/src/models/Board.js index 207c9553..4f6c7d2d 100755 --- a/client/src/models/Board.js +++ b/client/src/models/Board.js @@ -18,12 +18,74 @@ export default class extends Model { as: 'project', relatedName: 'boards', }), + memberUsers: many({ + to: 'User', + through: 'BoardMembership', + relatedName: 'boards', + }), filterUsers: many('User', 'filterBoards'), filterLabels: many('Label', 'filterBoards'), }; static reducer({ type, payload }, Board) { switch (type) { + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.BOARD_FETCH__SUCCESS: + Board.upsert({ + ...payload.board, + isFetching: false, + }); + + break; + case ActionTypes.LOCATION_CHANGE_HANDLE__BOARD_FETCH: + case ActionTypes.BOARD_FETCH: + Board.withId(payload.id).update({ + isFetching: true, + }); + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + Board.all().delete(); + + if (payload.board) { + Board.upsert({ + ...payload.board, + isFetching: false, + }); + } + + payload.boards.forEach((board) => { + Board.upsert(board); + }); + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE__CORE_FETCH: + Board.all() + .toModelArray() + .forEach((boardModel) => { + if (boardModel.id !== payload.currentBoardId) { + boardModel.update({ + isFetching: null, + }); + + boardModel.deleteRelated(payload.currentUserId); + } + }); + + break; + case ActionTypes.CORE_INITIALIZE: + if (payload.board) { + Board.upsert({ + ...payload.board, + isFetching: false, + }); + } + + payload.boards.forEach((board) => { + Board.upsert(board); + }); + + break; case ActionTypes.USER_TO_BOARD_FILTER_ADD: Board.withId(payload.boardId).filterUsers.add(payload.id); @@ -32,18 +94,48 @@ export default class extends Model { Board.withId(payload.boardId).filterUsers.remove(payload.id); break; - case ActionTypes.PROJECTS_FETCH_SUCCEEDED: - case ActionTypes.PROJECT_CREATE_SUCCEEDED: - case ActionTypes.PROJECT_CREATE_RECEIVED: + case ActionTypes.PROJECT_CREATE_HANDLE: payload.boards.forEach((board) => { Board.upsert(board); }); + break; + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.boards) { + payload.boards.forEach((board) => { + Board.upsert({ + ...board, + ...(payload.board && + payload.board.id === board.id && { + isFetching: false, + }), + }); + }); + } + break; case ActionTypes.BOARD_CREATE: - case ActionTypes.BOARD_CREATE_RECEIVED: + case ActionTypes.BOARD_CREATE_HANDLE: + case ActionTypes.BOARD_UPDATE__SUCCESS: + case ActionTypes.BOARD_UPDATE_HANDLE: Board.upsert(payload.board); + break; + case ActionTypes.BOARD_CREATE__SUCCESS: + Board.withId(payload.localId).delete(); + + Board.upsert({ + ...payload.board, + isFetching: false, + }); + + break; + case ActionTypes.BOARD_FETCH__FAILURE: + Board.withId(payload.id).update({ + isFetching: null, + }); + break; case ActionTypes.BOARD_UPDATE: Board.withId(payload.id).update(payload.data); @@ -53,35 +145,16 @@ export default class extends Model { Board.withId(payload.id).deleteWithRelated(); break; - case ActionTypes.BOARD_CREATE_SUCCEEDED: - Board.withId(payload.localId).delete(); - Board.upsert({ - ...payload.board, - isFetching: false, - }); - - break; - case ActionTypes.BOARD_FETCH_REQUESTED: - Board.withId(payload.id).update({ - isFetching: true, - }); - - break; - case ActionTypes.BOARD_FETCH_SUCCEEDED: - Board.withId(payload.board.id).update({ - ...payload.board, - isFetching: false, - }); - - break; - case ActionTypes.BOARD_UPDATE_RECEIVED: - Board.withId(payload.board.id).update(payload.board); - - break; - case ActionTypes.BOARD_DELETE_RECEIVED: - Board.withId(payload.board.id).deleteWithRelated(); + case ActionTypes.BOARD_DELETE__SUCCESS: + case ActionTypes.BOARD_DELETE_HANDLE: { + const boardModel = Board.withId(payload.board.id); + + if (boardModel) { + boardModel.deleteWithRelated(); + } break; + } case ActionTypes.LABEL_TO_BOARD_FILTER_ADD: Board.withId(payload.boardId).filterLabels.add(payload.id); @@ -94,15 +167,38 @@ export default class extends Model { } } + getOrderedMembershipsQuerySet() { + return this.memberships.orderBy('id'); + } + getOrderedListsQuerySet() { return this.lists.orderBy('position'); } - deleteWithRelated() { - this.cards.toModelArray().forEach((cardModel) => { - cardModel.deleteWithRelated(); + hasMemberUser(userId) { + return this.memberships + .filter({ + userId, + }) + .exists(); + } + + deleteRelated(exceptMemberUserId) { + this.memberships.toModelArray().forEach((boardMembershipModel) => { + if (boardMembershipModel.userId !== exceptMemberUserId) { + boardMembershipModel.deleteWithRelated(); + } }); + this.labels.delete(); + + this.lists.toModelArray().forEach((listModel) => { + listModel.deleteWithRelated(); + }); + } + + deleteWithRelated() { + this.deleteRelated(); this.delete(); } } diff --git a/client/src/models/BoardMembership.js b/client/src/models/BoardMembership.js new file mode 100644 index 00000000..745265f4 --- /dev/null +++ b/client/src/models/BoardMembership.js @@ -0,0 +1,103 @@ +import { Model, attr, fk } from 'redux-orm'; + +import ActionTypes from '../constants/ActionTypes'; + +export default class extends Model { + static modelName = 'BoardMembership'; + + static fields = { + id: attr(), + boardId: fk({ + to: 'Board', + as: 'board', + relatedName: 'memberships', + }), + userId: fk({ + to: 'User', + as: 'user', + relatedName: 'boardMemberships', + }), + }; + + static reducer({ type, payload }, BoardMembership) { + switch (type) { + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + if (payload.boardMemberships) { + payload.boardMemberships.forEach((boardMembership) => { + BoardMembership.upsert(boardMembership); + }); + } + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + BoardMembership.all().delete(); + + payload.boardMemberships.forEach((boardMembership) => { + BoardMembership.upsert(boardMembership); + }); + + break; + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.PROJECT_CREATE_HANDLE: + case ActionTypes.BOARD_CREATE__SUCCESS: + case ActionTypes.BOARD_FETCH__SUCCESS: + payload.boardMemberships.forEach((boardMembership) => { + BoardMembership.upsert(boardMembership); + }); + + break; + case ActionTypes.BOARD_MEMBERSHIP_CREATE: + BoardMembership.upsert(payload.boardMembership); + + break; + case ActionTypes.BOARD_MEMBERSHIP_CREATE__SUCCESS: + BoardMembership.withId(payload.localId).delete(); + BoardMembership.upsert(payload.boardMembership); + + break; + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + BoardMembership.upsert(payload.boardMembership); + + if (payload.boardMemberships) { + payload.boardMemberships.forEach((boardMembership) => { + BoardMembership.upsert(boardMembership); + }); + } + + break; + case ActionTypes.BOARD_MEMBERSHIP_DELETE: + BoardMembership.withId(payload.id).deleteWithRelated(); + + break; + case ActionTypes.BOARD_MEMBERSHIP_DELETE__SUCCESS: + case ActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE: { + const boardMembershipModel = BoardMembership.withId(payload.boardMembership.id); + + if (boardMembershipModel) { + boardMembershipModel.deleteWithRelated(); + } + + break; + } + default: + } + } + + deleteRelated() { + this.board.cards.toModelArray().forEach((cardModel) => { + try { + cardModel.users.remove(this.userId); + } catch {} // eslint-disable-line no-empty + }); + + try { + this.board.filterUsers.remove(this.userId); + } catch {} // eslint-disable-line no-empty + } + + deleteWithRelated() { + this.deleteRelated(); + this.delete(); + } +} diff --git a/client/src/models/Card.js b/client/src/models/Card.js index 877dab9f..e4cebbd2 100755 --- a/client/src/models/Card.js +++ b/client/src/models/Card.js @@ -43,6 +43,51 @@ export default class extends Model { static reducer({ type, payload }, Card) { switch (type) { + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.cards) { + payload.cards.forEach((card) => { + Card.upsert(card); + }); + } + + if (payload.cardMemberships) { + payload.cardMemberships.forEach(({ cardId, userId }) => { + Card.withId(cardId).users.add(userId); + }); + } + + if (payload.cardLabels) { + payload.cardLabels.forEach(({ cardId, labelId }) => { + Card.withId(cardId).labels.add(labelId); + }); + } + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + Card.all().delete(); + + if (payload.cards) { + payload.cards.forEach((card) => { + Card.upsert(card); + }); + } + + if (payload.cardMemberships) { + payload.cardMemberships.forEach(({ cardId, userId }) => { + Card.withId(cardId).users.add(userId); + }); + } + + if (payload.cardLabels) { + payload.cardLabels.forEach(({ cardId, labelId }) => { + Card.withId(cardId).labels.add(labelId); + }); + } + + break; case ActionTypes.USER_TO_CARD_ADD: { const cardModel = Card.withId(payload.cardId); cardModel.users.add(payload.id); @@ -53,11 +98,25 @@ export default class extends Model { break; } + case ActionTypes.USER_TO_CARD_ADD__SUCCESS: + case ActionTypes.USER_TO_CARD_ADD_HANDLE: + try { + Card.withId(payload.cardMembership.cardId).users.add(payload.cardMembership.userId); + } catch {} // eslint-disable-line no-empty + + break; case ActionTypes.USER_FROM_CARD_REMOVE: Card.withId(payload.cardId).users.remove(payload.id); break; - case ActionTypes.BOARD_FETCH_SUCCEEDED: + case ActionTypes.USER_FROM_CARD_REMOVE__SUCCESS: + case ActionTypes.USER_FROM_CARD_REMOVE_HANDLE: + try { + Card.withId(payload.cardMembership.cardId).users.remove(payload.cardMembership.userId); + } catch {} // eslint-disable-line no-empty + + break; + case ActionTypes.BOARD_FETCH__SUCCESS: payload.cards.forEach((card) => { Card.upsert(card); }); @@ -74,14 +133,34 @@ export default class extends Model { case ActionTypes.LABEL_TO_CARD_ADD: Card.withId(payload.cardId).labels.add(payload.id); + break; + case ActionTypes.LABEL_TO_CARD_ADD__SUCCESS: + case ActionTypes.LABEL_TO_CARD_ADD_HANDLE: + try { + Card.withId(payload.cardLabel.cardId).labels.add(payload.cardLabel.labelId); + } catch {} // eslint-disable-line no-empty + break; case ActionTypes.LABEL_FROM_CARD_REMOVE: Card.withId(payload.cardId).labels.remove(payload.id); + break; + case ActionTypes.LABEL_FROM_CARD_REMOVE__SUCCESS: + case ActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE: + try { + Card.withId(payload.cardLabel.cardId).labels.remove(payload.cardLabel.labelId); + } catch {} // eslint-disable-line no-empty + break; case ActionTypes.CARD_CREATE: - case ActionTypes.CARD_FETCH_SUCCEEDED: - case ActionTypes.NOTIFICATION_CREATE_RECEIVED: + case ActionTypes.CARD_CREATE_HANDLE: + case ActionTypes.CARD_UPDATE__SUCCESS: + case ActionTypes.CARD_UPDATE_HANDLE: + Card.upsert(payload.card); + + break; + case ActionTypes.CARD_CREATE__SUCCESS: + Card.withId(payload.localId).delete(); Card.upsert(payload.card); break; @@ -90,77 +169,33 @@ export default class extends Model { break; case ActionTypes.CARD_DELETE: - Card.withId(payload.id).deleteWithRelated(); + Card.withId(payload.id).delete(); break; - case ActionTypes.CARD_CREATE_SUCCEEDED: - Card.withId(payload.localId).delete(); - Card.upsert(payload.card); + case ActionTypes.CARD_DELETE__SUCCESS: + case ActionTypes.CARD_DELETE_HANDLE: { + const cardModel = Card.withId(payload.card.id); - payload.cardMemberships.forEach(({ cardId, userId }) => { - Card.withId(cardId).users.add(userId); - }); - - payload.cardLabels.forEach(({ cardId, labelId }) => { - Card.withId(cardId).labels.add(labelId); - }); - - break; - case ActionTypes.CARD_CREATE_RECEIVED: - Card.upsert(payload.card); - - payload.cardMemberships.forEach(({ cardId, userId }) => { - Card.withId(cardId).users.add(userId); - }); - - payload.cardLabels.forEach(({ cardId, labelId }) => { - Card.withId(cardId).labels.add(labelId); - }); - - break; - case ActionTypes.CARD_UPDATE_RECEIVED: { - const card = Card.withId(payload.card.id); - - if (card) { - card.update(payload.card); + if (cardModel) { + cardModel.deleteWithRelated(); } break; } - case ActionTypes.CARD_DELETE_RECEIVED: - Card.withId(payload.card.id).deleteWithRelated(); - - break; - case ActionTypes.CARD_MEMBERSHIP_CREATE_RECEIVED: - Card.withId(payload.cardMembership.cardId).users.add(payload.cardMembership.userId); - - break; - case ActionTypes.CARD_MEMBERSHIP_DELETE_RECEIVED: - Card.withId(payload.cardMembership.cardId).users.remove(payload.cardMembership.userId); - - break; - case ActionTypes.CARD_LABEL_CREATE_RECEIVED: - Card.withId(payload.cardLabel.cardId).labels.add(payload.cardLabel.labelId); - - break; - case ActionTypes.CARD_LABEL_DELETE_RECEIVED: - Card.withId(payload.cardLabel.cardId).labels.remove(payload.cardLabel.labelId); - - break; - case ActionTypes.ACTIONS_FETCH_REQUESTED: + case ActionTypes.ACTIONS_FETCH: Card.withId(payload.cardId).update({ isActionsFetching: true, }); break; - case ActionTypes.ACTIONS_FETCH_SUCCEEDED: + case ActionTypes.ACTIONS_FETCH__SUCCESS: Card.withId(payload.cardId).update({ isActionsFetching: false, isAllActionsFetched: payload.actions.length < Config.ACTIONS_LIMIT, }); break; - case ActionTypes.NOTIFICATIONS_FETCH_SUCCEEDED: + case ActionTypes.NOTIFICATION_CREATE_HANDLE: payload.cards.forEach((card) => { Card.upsert(card); }); @@ -188,11 +223,14 @@ export default class extends Model { }); } - deleteWithRelated() { + deleteRelated() { this.tasks.delete(); this.attachments.delete(); this.actions.delete(); + } + deleteWithRelated() { + this.deleteRelated(); this.delete(); } } diff --git a/client/src/models/Label.js b/client/src/models/Label.js index d6f4aca9..ef38393a 100755 --- a/client/src/models/Label.js +++ b/client/src/models/Label.js @@ -18,16 +18,42 @@ export default class extends Model { static reducer({ type, payload }, Label) { switch (type) { - case ActionTypes.BOARD_CREATE_SUCCEEDED: - case ActionTypes.BOARD_CREATE_RECEIVED: - case ActionTypes.BOARD_FETCH_SUCCEEDED: + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.labels) { + payload.labels.forEach((label) => { + Label.upsert(label); + }); + } + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + Label.all().delete(); + + if (payload.labels) { + payload.labels.forEach((label) => { + Label.upsert(label); + }); + } + + break; + case ActionTypes.BOARD_FETCH__SUCCESS: payload.labels.forEach((label) => { Label.upsert(label); }); break; case ActionTypes.LABEL_CREATE: - case ActionTypes.LABEL_CREATE_RECEIVED: + case ActionTypes.LABEL_CREATE_HANDLE: + case ActionTypes.LABEL_UPDATE__SUCCESS: + case ActionTypes.LABEL_UPDATE_HANDLE: + Label.upsert(payload.label); + + break; + case ActionTypes.LABEL_CREATE__SUCCESS: + Label.withId(payload.localId).delete(); Label.upsert(payload.label); break; @@ -39,19 +65,16 @@ export default class extends Model { Label.withId(payload.id).delete(); break; - case ActionTypes.LABEL_CREATE_SUCCEEDED: - Label.withId(payload.localId).delete(); - Label.upsert(payload.label); - - break; - case ActionTypes.LABEL_UPDATE_RECEIVED: - Label.withId(payload.label.id).update(payload.label); - - break; - case ActionTypes.LABEL_DELETE_RECEIVED: - Label.withId(payload.label.id).delete(); + case ActionTypes.LABEL_DELETE__SUCCESS: + case ActionTypes.LABEL_DELETE_HANDLE: { + const labelModel = Label.withId(payload.label.id); + + if (labelModel) { + labelModel.delete(); + } break; + } default: } } diff --git a/client/src/models/List.js b/client/src/models/List.js index ef49594f..73e46e14 100755 --- a/client/src/models/List.js +++ b/client/src/models/List.js @@ -18,16 +18,42 @@ export default class extends Model { static reducer({ type, payload }, List) { switch (type) { - case ActionTypes.BOARD_CREATE_SUCCEEDED: - case ActionTypes.BOARD_CREATE_RECEIVED: - case ActionTypes.BOARD_FETCH_SUCCEEDED: + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.lists) { + payload.lists.forEach((list) => { + List.upsert(list); + }); + } + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + List.all().delete(); + + if (payload.lists) { + payload.lists.forEach((list) => { + List.upsert(list); + }); + } + + break; + case ActionTypes.BOARD_FETCH__SUCCESS: payload.lists.forEach((list) => { List.upsert(list); }); break; case ActionTypes.LIST_CREATE: - case ActionTypes.LIST_CREATE_RECEIVED: + case ActionTypes.LIST_CREATE_HANDLE: + case ActionTypes.LIST_UPDATE__SUCCESS: + case ActionTypes.LIST_UPDATE_HANDLE: + List.upsert(payload.list); + + break; + case ActionTypes.LIST_CREATE__SUCCESS: + List.withId(payload.localId).delete(); List.upsert(payload.list); break; @@ -39,19 +65,16 @@ export default class extends Model { List.withId(payload.id).deleteWithRelated(); break; - case ActionTypes.LIST_CREATE_SUCCEEDED: - List.withId(payload.localId).delete(); - List.upsert(payload.list); - - break; - case ActionTypes.LIST_UPDATE_RECEIVED: - List.withId(payload.list.id).update(payload.list); - - break; - case ActionTypes.LIST_DELETE_RECEIVED: - List.withId(payload.list.id).deleteWithRelated(); + case ActionTypes.LIST_DELETE__SUCCESS: + case ActionTypes.LIST_DELETE_HANDLE: { + const listModel = List.withId(payload.list.id); + + if (listModel) { + listModel.deleteWithRelated(); + } break; + } default: } } @@ -85,11 +108,14 @@ export default class extends Model { return cardModels; } - deleteWithRelated() { + deleteRelated() { this.cards.toModelArray().forEach((cardModel) => { cardModel.deleteWithRelated(); }); + } + deleteWithRelated() { + this.deleteRelated(); this.delete(); } } diff --git a/client/src/models/Notification.js b/client/src/models/Notification.js index 0bc38a57..41772634 100755 --- a/client/src/models/Notification.js +++ b/client/src/models/Notification.js @@ -29,27 +29,44 @@ export default class extends Model { static reducer({ type, payload }, Notification) { switch (type) { - case ActionTypes.NOTIFICATIONS_DELETE: - payload.ids.forEach((id) => { - Notification.withId(id).delete(); - }); + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.notifications) { + payload.notifications.forEach((notification) => { + Notification.withId(notification.id).deleteWithRelated(); + }); + } break; - case ActionTypes.NOTIFICATIONS_FETCH_SUCCEEDED: + case ActionTypes.SOCKET_RECONNECT_HANDLE: + Notification.all().delete(); + payload.notifications.forEach((notification) => { Notification.upsert(notification); }); break; - case ActionTypes.NOTIFICATION_CREATE_RECEIVED: + case ActionTypes.CORE_INITIALIZE: + payload.notifications.forEach((notification) => { + Notification.upsert(notification); + }); + + break; + case ActionTypes.NOTIFICATION_CREATE_HANDLE: Notification.upsert(payload.notification); break; - case ActionTypes.NOTIFICATION_DELETE_RECEIVED: { + case ActionTypes.NOTIFICATION_DELETE: + Notification.withId(payload.id).deleteWithRelated(); + + break; + case ActionTypes.NOTIFICATION_DELETE__SUCCESS: + case ActionTypes.NOTIFICATION_DELETE_HANDLE: { const notificationModel = Notification.withId(payload.notification.id); if (notificationModel) { - notificationModel.delete(); + notificationModel.deleteWithRelated(); } break; @@ -57,4 +74,15 @@ export default class extends Model { default: } } + + deleteRelated() { + if (this.action && !this.action.isInCard) { + this.action.delete(); + } + } + + deleteWithRelated() { + this.deleteRelated(); + this.delete(); + } } diff --git a/client/src/models/Project.js b/client/src/models/Project.js index 1558cc84..2ba703c3 100755 --- a/client/src/models/Project.js +++ b/client/src/models/Project.js @@ -14,20 +14,44 @@ export default class extends Model { isBackgroundImageUpdating: attr({ getDefault: () => false, }), - users: many({ + managerUsers: many({ to: 'User', - through: 'ProjectMembership', + through: 'ProjectManager', relatedName: 'projects', }), }; static reducer({ type, payload }, Project) { switch (type) { - case ActionTypes.PROJECTS_FETCH_SUCCEEDED: + case ActionTypes.LOCATION_CHANGE_HANDLE: + if (payload.projects) { + payload.projects.forEach((project) => { + Project.upsert(project); + }); + } + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + Project.all().delete(); + payload.projects.forEach((project) => { Project.upsert(project); }); + break; + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.BOARD_FETCH__SUCCESS: + payload.projects.forEach((project) => { + Project.upsert(project); + }); + + break; + case ActionTypes.PROJECT_CREATE__SUCCESS: + case ActionTypes.PROJECT_CREATE_HANDLE: + case ActionTypes.PROJECT_UPDATE__SUCCESS: + case ActionTypes.PROJECT_UPDATE_HANDLE: + Project.upsert(payload.project); + break; case ActionTypes.PROJECT_UPDATE: { const project = Project.withId(payload.id); @@ -43,59 +67,118 @@ export default class extends Model { break; } - case ActionTypes.PROJECT_DELETE: - Project.withId(payload.id).deleteWithRelated(); - - break; - case ActionTypes.PROJECT_CREATE_SUCCEEDED: - case ActionTypes.PROJECT_CREATE_RECEIVED: - Project.upsert(payload.project); - - break; - case ActionTypes.PROJECT_UPDATE_RECEIVED: - Project.withId(payload.project.id).update(payload.project); - - break; - case ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE_REQUESTED: + case ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE: Project.withId(payload.id).update({ isBackgroundImageUpdating: true, }); break; - case ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE_SUCCEEDED: + case ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE__SUCCESS: Project.withId(payload.project.id).update({ ...payload.project, isBackgroundImageUpdating: false, }); break; - case ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE_FAILED: + case ActionTypes.PROJECT_BACKGROUND_IMAGE_UPDATE__FAILURE: Project.withId(payload.id).update({ isBackgroundImageUpdating: false, }); break; - case ActionTypes.PROJECT_DELETE_RECEIVED: - Project.withId(payload.project.id).deleteWithRelated(); + case ActionTypes.PROJECT_DELETE: + Project.withId(payload.id).deleteWithRelated(); break; + case ActionTypes.PROJECT_DELETE__SUCCESS: + case ActionTypes.PROJECT_DELETE_HANDLE: { + const projectModel = Project.withId(payload.project.id); + + if (projectModel) { + projectModel.deleteWithRelated(); + } + + break; + } + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.project) { + const projectModel = Project.withId(payload.project.id); + + if (projectModel) { + projectModel.deleteWithRelated(); + } + + Project.upsert(payload.project); + } + + break; + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE__PROJECT_FETCH: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE__PROJECT_FETCH: { + const projectModel = Project.withId(payload.id); + + if (projectModel) { + projectModel.boards.toModelArray().forEach((boardModel) => { + if (boardModel.id !== payload.currentBoardId) { + boardModel.update({ + isFetching: null, + }); + + boardModel.deleteRelated(payload.currentUserId); + } + }); + } + + break; + } default: } } - getOrderedMembershipsQuerySet() { - return this.memberships.orderBy('id'); + getOrderedManagersQuerySet() { + return this.managers.orderBy('id'); } getOrderedBoardsQuerySet() { return this.boards.orderBy('position'); } - deleteWithRelated() { + getOrderedMemberBoardsModelArray(userId) { + return this.getOrderedBoardsQuerySet() + .toModelArray() + .filter((boardModel) => boardModel.hasMemberUser(userId)); + } + + getOrderedAvailableBoardsModelArray(userId) { + if (this.hasManagerUser(userId)) { + return this.getOrderedBoardsQuerySet().toModelArray(); + } + + return this.getOrderedMemberBoardsModelArray(userId); + } + + hasManagerUser(userId) { + return this.managers + .filter({ + userId, + }) + .exists(); + } + + hasMemberUserForAnyBoard(userId) { + return this.boards.toModelArray().some((boardModel) => boardModel.hasMemberUser(userId)); + } + + deleteRelated() { + this.managers.delete(); + this.boards.toModelArray().forEach((boardModel) => { boardModel.deleteWithRelated(); }); + } + deleteWithRelated() { + this.deleteRelated(); this.delete(); } } diff --git a/client/src/models/ProjectManager.js b/client/src/models/ProjectManager.js new file mode 100644 index 00000000..7cae2cc4 --- /dev/null +++ b/client/src/models/ProjectManager.js @@ -0,0 +1,84 @@ +import { Model, attr, fk } from 'redux-orm'; + +import ActionTypes from '../constants/ActionTypes'; + +export default class extends Model { + static modelName = 'ProjectManager'; + + static fields = { + id: attr(), + projectId: fk({ + to: 'Project', + as: 'project', + relatedName: 'managers', + }), + userId: fk({ + to: 'User', + as: 'user', + relatedName: 'projectManagers', + }), + }; + + static reducer({ type, payload }, ProjectManager) { + switch (type) { + case ActionTypes.SOCKET_RECONNECT_HANDLE: + ProjectManager.all().delete(); + + payload.projectManagers.forEach((projectManager) => { + ProjectManager.upsert(projectManager); + }); + + break; + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.PROJECT_CREATE__SUCCESS: + case ActionTypes.PROJECT_CREATE_HANDLE: + payload.projectManagers.forEach((projectManager) => { + ProjectManager.upsert(projectManager); + }); + + break; + case ActionTypes.PROJECT_MANAGER_CREATE: + ProjectManager.upsert(payload.projectManager); + + break; + case ActionTypes.PROJECT_MANAGER_CREATE__SUCCESS: + ProjectManager.withId(payload.localId).delete(); + ProjectManager.upsert(payload.projectManager); + + break; + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + ProjectManager.upsert(payload.projectManager); + + if (payload.projectManagers) { + payload.projectManagers.forEach((projectManager) => { + ProjectManager.upsert(projectManager); + }); + } + + break; + case ActionTypes.PROJECT_MANAGER_DELETE: + ProjectManager.withId(payload.id).delete(); + + break; + case ActionTypes.PROJECT_MANAGER_DELETE__SUCCESS: + case ActionTypes.PROJECT_MANAGER_DELETE_HANDLE: { + const projectManagerModel = ProjectManager.withId(payload.projectManager.id); + + if (projectManagerModel) { + projectManagerModel.delete(); + } + + break; + } + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.projectManagers) { + payload.projectManagers.forEach((projectManager) => { + ProjectManager.upsert(projectManager); + }); + } + + break; + default: + } + } +} diff --git a/client/src/models/ProjectMembership.js b/client/src/models/ProjectMembership.js deleted file mode 100755 index 65300a1c..00000000 --- a/client/src/models/ProjectMembership.js +++ /dev/null @@ -1,69 +0,0 @@ -import { Model, attr, fk } from 'redux-orm'; - -import ActionTypes from '../constants/ActionTypes'; - -export default class extends Model { - static modelName = 'ProjectMembership'; - - static fields = { - id: attr(), - projectId: fk({ - to: 'Project', - as: 'project', - relatedName: 'memberships', - }), - userId: fk({ - to: 'User', - as: 'user', - relatedName: 'projectMemberships', - }), - }; - - static reducer({ type, payload }, ProjectMembership) { - switch (type) { - case ActionTypes.PROJECTS_FETCH_SUCCEEDED: - case ActionTypes.PROJECT_CREATE_SUCCEEDED: - case ActionTypes.PROJECT_CREATE_RECEIVED: - payload.projectMemberships.forEach((projectMembership) => { - ProjectMembership.upsert(projectMembership); - }); - - break; - case ActionTypes.PROJECT_MEMBERSHIP_CREATE: - case ActionTypes.PROJECT_MEMBERSHIP_CREATE_RECEIVED: - ProjectMembership.upsert(payload.projectMembership); - - break; - case ActionTypes.PROJECT_MEMBERSHIP_CREATE_SUCCEEDED: - ProjectMembership.withId(payload.localId).delete(); - ProjectMembership.upsert(payload.projectMembership); - - break; - case ActionTypes.PROJECT_MEMBERSHIP_DELETE: - ProjectMembership.withId(payload.id).deleteWithRelated(); - - break; - case ActionTypes.PROJECT_MEMBERSHIP_DELETE_RECEIVED: - ProjectMembership.withId(payload.projectMembership.id).deleteWithRelated(); - - break; - default: - } - } - - deleteWithRelated() { - this.project.boards.toModelArray().forEach((boardModel) => { - boardModel.cards.toModelArray().forEach((cardModel) => { - try { - cardModel.users.remove(this.userId); - } catch {} // eslint-disable-line no-empty - }); - - try { - boardModel.filterUsers.remove(this.userId); - } catch {} // eslint-disable-line no-empty - }); - - this.delete(); - } -} diff --git a/client/src/models/Task.js b/client/src/models/Task.js index 9d72b6fd..7ef33fa9 100755 --- a/client/src/models/Task.js +++ b/client/src/models/Task.js @@ -20,16 +20,42 @@ export default class extends Model { static reducer({ type, payload }, Task) { switch (type) { - case ActionTypes.BOARD_FETCH_SUCCEEDED: - case ActionTypes.CARD_CREATE_SUCCEEDED: - case ActionTypes.CARD_CREATE_RECEIVED: + case ActionTypes.LOCATION_CHANGE_HANDLE: + case ActionTypes.CORE_INITIALIZE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + if (payload.tasks) { + payload.tasks.forEach((task) => { + Task.upsert(task); + }); + } + + break; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + Task.all().delete(); + + if (payload.tasks) { + payload.tasks.forEach((task) => { + Task.upsert(task); + }); + } + + break; + case ActionTypes.BOARD_FETCH__SUCCESS: payload.tasks.forEach((task) => { Task.upsert(task); }); break; case ActionTypes.TASK_CREATE: - case ActionTypes.TASK_CREATE_RECEIVED: + case ActionTypes.TASK_CREATE_HANDLE: + case ActionTypes.TASK_UPDATE__SUCCESS: + case ActionTypes.TASK_UPDATE_HANDLE: + Task.upsert(payload.task); + + break; + case ActionTypes.TASK_CREATE__SUCCESS: + Task.withId(payload.localId).delete(); Task.upsert(payload.task); break; @@ -41,19 +67,16 @@ export default class extends Model { Task.withId(payload.id).delete(); break; - case ActionTypes.TASK_CREATE_SUCCEEDED: - Task.withId(payload.localId).delete(); - Task.upsert(payload.task); - - break; - case ActionTypes.TASK_UPDATE_RECEIVED: - Task.withId(payload.task.id).update(payload.task); - - break; - case ActionTypes.TASK_DELETE_RECEIVED: - Task.withId(payload.task.id).delete(); + case ActionTypes.TASK_DELETE__SUCCESS: + case ActionTypes.TASK_DELETE_HANDLE: { + const taskModel = Task.withId(payload.task.id); + + if (taskModel) { + taskModel.delete(); + } break; + } default: } } diff --git a/client/src/models/User.js b/client/src/models/User.js index 8f6457d2..619c73de 100755 --- a/client/src/models/User.js +++ b/client/src/models/User.js @@ -60,74 +60,53 @@ export default class extends Model { static reducer({ type, payload }, User) { switch (type) { - case ActionTypes.USER_CREATE_SUCCEEDED: - case ActionTypes.USER_CREATE_RECEIVED: - case ActionTypes.CURRENT_USER_FETCH_SUCCEEDED: - case ActionTypes.PROJECT_MEMBERSHIP_CREATE_RECEIVED: - case ActionTypes.NOTIFICATION_CREATE_RECEIVED: - User.upsert(payload.user); + case ActionTypes.LOCATION_CHANGE_HANDLE: + if (payload.users) { + payload.users.forEach((user) => { + User.upsert(user); + }); + } break; - case ActionTypes.USERS_FETCH_SUCCEEDED: - case ActionTypes.PROJECTS_FETCH_SUCCEEDED: - case ActionTypes.PROJECT_CREATE_SUCCEEDED: - case ActionTypes.PROJECT_CREATE_RECEIVED: - case ActionTypes.ACTIONS_FETCH_SUCCEEDED: - case ActionTypes.NOTIFICATIONS_FETCH_SUCCEEDED: + case ActionTypes.SOCKET_RECONNECT_HANDLE: + User.all().delete(); + + User.upsert(payload.user); + payload.users.forEach((user) => { User.upsert(user); }); + break; + case ActionTypes.CORE_INITIALIZE: + User.upsert(payload.user); + + payload.users.forEach((user) => { + User.upsert(user); + }); + + break; + case ActionTypes.USER_CREATE__SUCCESS: + case ActionTypes.USER_CREATE_HANDLE: + case ActionTypes.USER_UPDATE__SUCCESS: + User.upsert(payload.user); + break; case ActionTypes.USER_UPDATE: User.withId(payload.id).update(payload.data); break; - case ActionTypes.USER_EMAIL_UPDATE_ERROR_CLEAR: { - const userModel = User.withId(payload.id); + case ActionTypes.USER_UPDATE_HANDLE: + User.upsert(payload.user); - userModel.update({ - emailUpdateForm: { - ...userModel.emailUpdateForm, - error: null, - }, - }); + if (payload.users) { + payload.users.forEach((user) => { + User.upsert(user); + }); + } break; - } - case ActionTypes.USER_PASSWORD_UPDATE_ERROR_CLEAR: { - const userModel = User.withId(payload.id); - - userModel.update({ - passwordUpdateForm: { - ...userModel.passwordUpdateForm, - error: null, - }, - }); - - break; - } - case ActionTypes.USER_USERNAME_UPDATE_ERROR_CLEAR: { - const userModel = User.withId(payload.id); - - userModel.update({ - usernameUpdateForm: { - ...userModel.usernameUpdateForm, - error: null, - }, - }); - - break; - } - case ActionTypes.USER_DELETE: - User.withId(payload.id).deleteWithRelated(); - - break; - case ActionTypes.USER_UPDATE_RECEIVED: - User.withId(payload.user.id).update(payload.user); - - break; - case ActionTypes.USER_EMAIL_UPDATE_REQUESTED: { + case ActionTypes.USER_EMAIL_UPDATE: { const userModel = User.withId(payload.id); userModel.update({ @@ -140,7 +119,7 @@ export default class extends Model { break; } - case ActionTypes.USER_EMAIL_UPDATE_SUCCEEDED: { + case ActionTypes.USER_EMAIL_UPDATE__SUCCESS: { User.withId(payload.user.id).update({ ...payload.user, emailUpdateForm: DEFAULT_EMAIL_UPDATE_FORM, @@ -148,7 +127,7 @@ export default class extends Model { break; } - case ActionTypes.USER_EMAIL_UPDATE_FAILED: { + case ActionTypes.USER_EMAIL_UPDATE__FAILURE: { const userModel = User.withId(payload.id); userModel.update({ @@ -161,7 +140,7 @@ export default class extends Model { break; } - case ActionTypes.USER_PASSWORD_UPDATE_REQUESTED: { + case ActionTypes.USER_PASSWORD_UPDATE: { const userModel = User.withId(payload.id); userModel.update({ @@ -174,7 +153,7 @@ export default class extends Model { break; } - case ActionTypes.USER_PASSWORD_UPDATE_SUCCEEDED: { + case ActionTypes.USER_PASSWORD_UPDATE__SUCCESS: { User.withId(payload.user.id).update({ ...payload.user, passwordUpdateForm: DEFAULT_PASSWORD_UPDATE_FORM, @@ -182,7 +161,7 @@ export default class extends Model { break; } - case ActionTypes.USER_PASSWORD_UPDATE_FAILED: { + case ActionTypes.USER_PASSWORD_UPDATE__FAILURE: { const userModel = User.withId(payload.id); userModel.update({ @@ -195,7 +174,7 @@ export default class extends Model { break; } - case ActionTypes.USER_USERNAME_UPDATE_REQUESTED: { + case ActionTypes.USER_USERNAME_UPDATE: { const userModel = User.withId(payload.id); userModel.update({ @@ -208,7 +187,7 @@ export default class extends Model { break; } - case ActionTypes.USER_USERNAME_UPDATE_SUCCEEDED: { + case ActionTypes.USER_USERNAME_UPDATE__SUCCESS: { User.withId(payload.user.id).update({ ...payload.user, usernameUpdateForm: DEFAULT_USERNAME_UPDATE_FORM, @@ -216,7 +195,7 @@ export default class extends Model { break; } - case ActionTypes.USER_USERNAME_UPDATE_FAILED: { + case ActionTypes.USER_USERNAME_UPDATE__FAILURE: { const userModel = User.withId(payload.id); userModel.update({ @@ -229,29 +208,44 @@ export default class extends Model { break; } - case ActionTypes.USER_AVATAR_UPDATE_REQUESTED: + case ActionTypes.USER_AVATAR_UPDATE: User.withId(payload.id).update({ isAvatarUpdating: true, }); break; - case ActionTypes.USER_AVATAR_UPDATE_SUCCEEDED: + case ActionTypes.USER_AVATAR_UPDATE__SUCCESS: User.withId(payload.user.id).update({ ...payload.user, isAvatarUpdating: false, }); break; - case ActionTypes.USER_AVATAR_UPDATE_FAILED: + case ActionTypes.USER_AVATAR_UPDATE__FAILURE: User.withId(payload.id).update({ isAvatarUpdating: false, }); break; - case ActionTypes.USER_DELETE_SUCCEEDED: - case ActionTypes.USER_DELETE_RECEIVED: + case ActionTypes.USER_DELETE: + User.withId(payload.id).deleteWithRelated(); + + break; + case ActionTypes.USER_DELETE__SUCCESS: + case ActionTypes.USER_DELETE_HANDLE: User.withId(payload.user.id).deleteWithRelated(payload.user); + break; + case ActionTypes.PROJECT_CREATE_HANDLE: + case ActionTypes.PROJECT_MANAGER_CREATE_HANDLE: + case ActionTypes.BOARD_FETCH__SUCCESS: + case ActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE: + case ActionTypes.ACTIONS_FETCH__SUCCESS: + case ActionTypes.NOTIFICATION_CREATE_HANDLE: + payload.users.forEach((user) => { + User.upsert(user); + }); + break; default: } @@ -263,8 +257,12 @@ export default class extends Model { }).orderBy('id'); } - getOrderedProjectMembershipsQuerySet() { - return this.projectMemberships.orderBy('id'); + getOrderedProjectManagersQuerySet() { + return this.projectManagers.orderBy('id'); + } + + getOrderedBoardMembershipsQuerySet() { + return this.boardMemberships.orderBy('id'); } getOrderedUnreadNotificationsQuerySet() { @@ -275,10 +273,41 @@ export default class extends Model { .orderBy('id', false); } - deleteWithRelated(user) { - this.projectMemberships.toModelArray().forEach((projectMembershipModel) => { - projectMembershipModel.deleteWithRelated(); + getOrderedAvailableProjectsModelArray() { + const projectIds = []; + + const projectModels = this.getOrderedProjectManagersQuerySet() + .toModelArray() + .map(({ project: projectModel }) => { + projectIds.push(projectModel.id); + + return projectModel; + }); + + this.getOrderedBoardMembershipsQuerySet() + .toModelArray() + .forEach(({ board: { project: projectModel } }) => { + if (projectIds.includes(projectModel.id)) { + return; + } + + projectIds.push(projectModel.id); + projectModels.push(projectModel); + }); + + return projectModels; + } + + deleteRelated() { + this.projectManagers.delete(); + + this.boardMemberships.toModelArray().forEach((boardMembershipModel) => { + boardMembershipModel.deleteWithRelated(); }); + } + + deleteWithRelated(user) { + this.deleteRelated(); this.update( user || { diff --git a/client/src/models/index.js b/client/src/models/index.js index f7748ee9..e4265246 100755 --- a/client/src/models/index.js +++ b/client/src/models/index.js @@ -1,7 +1,8 @@ import User from './User'; import Project from './Project'; -import ProjectMembership from './ProjectMembership'; +import ProjectManager from './ProjectManager'; import Board from './Board'; +import BoardMembership from './BoardMembership'; import Label from './Label'; import List from './List'; import Card from './Card'; @@ -13,8 +14,9 @@ import Notification from './Notification'; export { User, Project, - ProjectMembership, + ProjectManager, Board, + BoardMembership, Label, List, Card, diff --git a/client/src/orm.js b/client/src/orm.js index 503db4a6..9857a60a 100755 --- a/client/src/orm.js +++ b/client/src/orm.js @@ -4,12 +4,13 @@ import { Action, Attachment, Board, + BoardMembership, Card, Label, List, Notification, Project, - ProjectMembership, + ProjectManager, Task, User, } from './models'; @@ -21,8 +22,9 @@ const orm = new ORM({ orm.register( User, Project, - ProjectMembership, + ProjectManager, Board, + BoardMembership, Label, List, Card, diff --git a/client/src/reducers/auth.js b/client/src/reducers/auth.js index b9d2c1fc..cf6ac051 100755 --- a/client/src/reducers/auth.js +++ b/client/src/reducers/auth.js @@ -8,12 +8,13 @@ const initialState = { export default (state = initialState, { type, payload }) => { switch (type) { - case ActionTypes.AUTHENTICATE_SUCCEEDED: + case ActionTypes.AUTHENTICATE__SUCCESS: return { ...state, accessToken: payload.accessToken, }; - case ActionTypes.CURRENT_USER_FETCH_SUCCEEDED: + case ActionTypes.SOCKET_RECONNECT_HANDLE: + case ActionTypes.CORE_INITIALIZE: return { ...state, userId: payload.user.id, diff --git a/client/src/reducers/core.js b/client/src/reducers/core.js index a178d16a..b6f82182 100755 --- a/client/src/reducers/core.js +++ b/client/src/reducers/core.js @@ -1,6 +1,7 @@ import { LOCATION_CHANGE } from 'connected-react-router'; import ActionTypes from '../constants/ActionTypes'; +import ModalTypes from '../constants/ModalTypes'; const initialState = { isInitializing: true, @@ -15,7 +16,7 @@ export default (state = initialState, { type, payload }) => { ...state, currentModal: null, }; - case ActionTypes.CORE_INITIALIZED: + case ActionTypes.CORE_INITIALIZE: return { ...state, isInitializing: false, @@ -25,6 +26,29 @@ export default (state = initialState, { type, payload }) => { ...state, currentModal: payload.type, }; + case ActionTypes.USER_UPDATE_HANDLE: + if (state.currentModal === ModalTypes.USERS && payload.isCurrent && !payload.user.isAdmin) { + return { + ...state, + currentModal: null, + }; + } + + return state; + case ActionTypes.PROJECT_MANAGER_DELETE: + case ActionTypes.PROJECT_MANAGER_DELETE_HANDLE: + if ( + state.currentModal === ModalTypes.PROJECT_SETTINGS && + payload.isCurrentUser && + payload.isCurrentProject + ) { + return { + ...state, + currentModal: null, + }; + } + + return state; default: return state; } diff --git a/client/src/reducers/forms/index.js b/client/src/reducers/forms/index.js deleted file mode 100644 index 7f036f40..00000000 --- a/client/src/reducers/forms/index.js +++ /dev/null @@ -1,11 +0,0 @@ -import { combineReducers } from 'redux'; - -import authenticate from './authenticate'; -import userCreate from './user-create'; -import projectCreate from './project-create'; - -export default combineReducers({ - authenticate, - userCreate, - projectCreate, -}); diff --git a/client/src/reducers/index.js b/client/src/reducers/index.js index 1e10bf34..6d90bbac 100755 --- a/client/src/reducers/index.js +++ b/client/src/reducers/index.js @@ -5,9 +5,7 @@ import socket from './socket'; import orm from './orm'; import auth from './auth'; import core from './core'; -import authenticateForm from './forms/authenticate'; -import userCreateForm from './forms/user-create'; -import projectCreateForm from './forms/project-create'; +import ui from './ui'; export default combineReducers({ router, @@ -15,7 +13,5 @@ export default combineReducers({ orm, auth, core, - authenticateForm, - userCreateForm, - projectCreateForm, + ui, }); diff --git a/client/src/reducers/socket.js b/client/src/reducers/socket.js index ac34afbd..473b3d3c 100755 --- a/client/src/reducers/socket.js +++ b/client/src/reducers/socket.js @@ -1,15 +1,20 @@ import ActionTypes from '../constants/ActionTypes'; const initialState = { - status: null, + isDisconnected: false, }; -export default (state = initialState, { type, payload }) => { +export default (state = initialState, { type }) => { switch (type) { - case ActionTypes.SOCKET_STATUS_CHANGED: + case ActionTypes.SOCKET_DISCONNECT_HANDLE: return { ...state, - status: payload.status, + isDisconnected: true, + }; + case ActionTypes.SOCKET_RECONNECT_HANDLE: + return { + ...state, + isDisconnected: false, }; default: return state; diff --git a/client/src/reducers/forms/authenticate.js b/client/src/reducers/ui/authenticate-form.js similarity index 80% rename from client/src/reducers/forms/authenticate.js rename to client/src/reducers/ui/authenticate-form.js index 5bb03689..1dc164db 100644 --- a/client/src/reducers/forms/authenticate.js +++ b/client/src/reducers/ui/authenticate-form.js @@ -18,25 +18,21 @@ export default (state = initialState, { type, payload }) => { ...state.data, ...payload.data, }, + isSubmitting: true, + }; + case ActionTypes.AUTHENTICATE__SUCCESS: + return initialState; + case ActionTypes.AUTHENTICATE__FAILURE: + return { + ...state, + isSubmitting: false, + error: payload.error, }; case ActionTypes.AUTHENTICATE_ERROR_CLEAR: return { ...state, error: null, }; - case ActionTypes.AUTHENTICATE_REQUESTED: - return { - ...state, - isSubmitting: true, - }; - case ActionTypes.AUTHENTICATE_SUCCEEDED: - return initialState; - case ActionTypes.AUTHENTICATE_FAILED: - return { - ...state, - isSubmitting: false, - error: payload.error, - }; default: return state; } diff --git a/client/src/reducers/ui/index.js b/client/src/reducers/ui/index.js new file mode 100644 index 00000000..6f061a75 --- /dev/null +++ b/client/src/reducers/ui/index.js @@ -0,0 +1,11 @@ +import { combineReducers } from 'redux'; + +import authenticateForm from './authenticate-form'; +import userCreateForm from './user-create-form'; +import projectCreateForm from './project-create-form'; + +export default combineReducers({ + authenticateForm, + userCreateForm, + projectCreateForm, +}); diff --git a/client/src/reducers/forms/project-create.js b/client/src/reducers/ui/project-create-form.js similarity index 74% rename from client/src/reducers/forms/project-create.js rename to client/src/reducers/ui/project-create-form.js index 2f0b138e..7c6e034e 100644 --- a/client/src/reducers/forms/project-create.js +++ b/client/src/reducers/ui/project-create-form.js @@ -16,15 +16,11 @@ export default (state = initialState, { type, payload }) => { ...state.data, ...payload.data, }, - }; - case ActionTypes.PROJECT_CREATE_REQUESTED: - return { - ...state, isSubmitting: true, }; - case ActionTypes.PROJECT_CREATE_SUCCEEDED: + case ActionTypes.PROJECT_CREATE__SUCCESS: return initialState; - case ActionTypes.PROJECT_CREATE_FAILED: + case ActionTypes.PROJECT_CREATE__FAILURE: return { ...state, isSubmitting: false, diff --git a/client/src/reducers/forms/user-create.js b/client/src/reducers/ui/user-create-form.js similarity index 80% rename from client/src/reducers/forms/user-create.js rename to client/src/reducers/ui/user-create-form.js index 5f4b18f9..39dd7b80 100644 --- a/client/src/reducers/forms/user-create.js +++ b/client/src/reducers/ui/user-create-form.js @@ -19,25 +19,21 @@ export default (state = initialState, { type, payload }) => { ...state.data, ...payload.data, }, + isSubmitting: true, + }; + case ActionTypes.USER_CREATE__SUCCESS: + return initialState; + case ActionTypes.USER_CREATE__FAILURE: + return { + ...state, + isSubmitting: false, + error: payload.error, }; case ActionTypes.USER_CREATE_ERROR_CLEAR: return { ...state, error: null, }; - case ActionTypes.USER_CREATE_REQUESTED: - return { - ...state, - isSubmitting: true, - }; - case ActionTypes.USER_CREATE_SUCCEEDED: - return initialState; - case ActionTypes.USER_CREATE_FAILED: - return { - ...state, - isSubmitting: false, - error: payload.error, - }; default: return state; } diff --git a/client/src/sagas/core/request.js b/client/src/sagas/core/request.js new file mode 100755 index 00000000..3021d32c --- /dev/null +++ b/client/src/sagas/core/request.js @@ -0,0 +1,36 @@ +import { call, fork, join, put, select, take } from 'redux-saga/effects'; + +import { accessTokenSelector } from '../../selectors'; +import { logout } from '../../actions'; +import ErrorCodes from '../../constants/ErrorCodes'; + +let lastRequestTask; + +function* queueRequest(method, ...args) { + if (lastRequestTask) { + try { + yield join(lastRequestTask); + } catch {} // eslint-disable-line no-empty + } + + const accessToken = yield select(accessTokenSelector); + + try { + return yield call(method, ...args, { + Authorization: `Bearer ${accessToken}`, + }); + } catch (error) { + if (error.code === ErrorCodes.UNAUTHORIZED) { + yield put(logout()); // TODO: next url + yield take(); + } + + throw error; + } +} + +export default function* request(method, ...args) { + lastRequestTask = yield fork(queueRequest, method, ...args); + + return yield join(lastRequestTask); +} diff --git a/client/src/sagas/core/requests/actions.js b/client/src/sagas/core/requests/actions.js deleted file mode 100644 index 3d2bd691..00000000 --- a/client/src/sagas/core/requests/actions.js +++ /dev/null @@ -1,35 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { fetchActionsFailed, fetchActionsRequested, fetchActionsSucceeded } from '../../../actions'; -import api from '../../../api'; - -// eslint-disable-next-line import/prefer-default-export -export function* fetchActionsRequest(cardId, beforeId) { - yield put(fetchActionsRequested(cardId)); - - try { - const { - items, - included: { users }, - } = yield call(request, api.getActions, cardId, { - beforeId, - }); - - const action = fetchActionsSucceeded(cardId, items, users); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = fetchActionsFailed(cardId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/attachment.js b/client/src/sagas/core/requests/attachment.js deleted file mode 100644 index 00efa6de..00000000 --- a/client/src/sagas/core/requests/attachment.js +++ /dev/null @@ -1,92 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createAttachmentFailed, - createAttachmentRequested, - createAttachmentSucceeded, - deleteAttachmentFailed, - deleteAttachmentRequested, - deleteAttachmentSucceeded, - updateAttachmentFailed, - updateAttachmentRequested, - updateAttachmentSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createAttachmentRequest(cardId, localId, data) { - yield put( - createAttachmentRequested(localId, { - ...data, - cardId, - }), - ); - - try { - const { item } = yield call(request, api.createAttachment, cardId, data, localId); - - const action = createAttachmentSucceeded(localId, item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createAttachmentFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateAttachmentRequest(id, data) { - yield put(updateAttachmentRequested(id, data)); - - try { - const { item } = yield call(request, api.updateAttachment, id, data); - - const action = updateAttachmentSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateAttachmentFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteAttachmentRequest(id) { - yield put(deleteAttachmentRequested(id)); - - try { - const { item } = yield call(request, api.deleteAttachment, id); - - const action = deleteAttachmentSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteAttachmentFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/board.js b/client/src/sagas/core/requests/board.js index 04def426..d037390c 100644 --- a/client/src/sagas/core/requests/board.js +++ b/client/src/sagas/core/requests/board.js @@ -1,134 +1,69 @@ -import { call, put } from 'redux-saga/effects'; +import { call, select } from 'redux-saga/effects'; -import request from './request'; -import { - createBoardFailed, - createBoardRequested, - createBoardSucceeded, - deleteBoardFailed, - deleteBoardRequested, - deleteBoardSucceeded, - fetchBoardFailed, - fetchBoardRequested, - fetchBoardSucceeded, - updateBoardFailed, - updateBoardRequested, - updateBoardSucceeded, -} from '../../../actions'; +import request from '../request'; +import { pathsMatchSelector } from '../../../selectors'; import api from '../../../api'; +import Paths from '../../../constants/Paths'; -export function* createBoardRequest(projectId, localId, data) { - yield put( - createBoardRequested(localId, { - ...data, - projectId, - }), - ); +// eslint-disable-next-line import/prefer-default-export +export function* fetchBoardByCurrentPathRequest() { + const pathsMatch = yield select(pathsMatchSelector); - try { - const { - item, - included: { lists, labels }, - } = yield call(request, api.createBoard, projectId, data); + let board; + let card; + let users; + let projects; + let boardMemberships; + let labels; + let lists; + let cards; + let cardMemberships; + let cardLabels; + let tasks; + let attachments; - const action = createBoardSucceeded(localId, item, lists, labels); - yield put(action); + if (pathsMatch) { + let boardId; + if (pathsMatch.path === Paths.BOARDS) { + boardId = pathsMatch.params.id; + } else if (pathsMatch.path === Paths.CARDS) { + ({ + item: card, + item: { boardId }, + } = yield call(request, api.getCard, pathsMatch.params.id)); + } - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createBoardFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* fetchBoardRequest(id) { - yield put(fetchBoardRequested(id)); - - try { - const { - item, - included: { labels, lists, cards, cardMemberships, cardLabels, tasks, attachments }, - } = yield call(request, api.getBoard, id); - - const action = fetchBoardSucceeded( - item, - labels, - lists, - cards, - cardMemberships, - cardLabels, - tasks, - attachments, - ); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = fetchBoardFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateBoardRequest(id, data) { - yield put(updateBoardRequested(id, data)); - - try { - const { item } = yield call(request, api.updateBoard, id, data); - - const action = updateBoardSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateBoardFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteBoardRequest(id) { - yield put(deleteBoardRequested(id)); - - try { - const { item } = yield call(request, api.deleteBoard, id); - - const action = deleteBoardSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteBoardFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; + if (boardId) { + ({ + item: board, + included: { + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + }, + } = yield call(request, api.getBoard, boardId)); + } } + + return { + board, + card, + users, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + project: projects[0], + }; } diff --git a/client/src/sagas/core/requests/card-label.js b/client/src/sagas/core/requests/card-label.js deleted file mode 100644 index 3b8bcd0c..00000000 --- a/client/src/sagas/core/requests/card-label.js +++ /dev/null @@ -1,67 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createCardLabelFailed, - createCardLabelRequested, - createCardLabelSucceeded, - deleteCardLabelFailed, - deleteCardLabelRequested, - deleteCardLabelSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createCardLabelRequest(cardId, labelId) { - yield put( - createCardLabelRequested({ - cardId, - labelId, - }), - ); - - try { - const { item } = yield call(request, api.createCardLabel, cardId, { - labelId, - }); - - const action = createCardLabelSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createCardLabelFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteCardLabelRequest(cardId, labelId) { - yield put(deleteCardLabelRequested(cardId, labelId)); - - try { - const { item } = yield call(request, api.deleteCardLabel, cardId, labelId); - - const action = deleteCardLabelSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteCardLabelFailed(cardId, labelId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/card-membership.js b/client/src/sagas/core/requests/card-membership.js deleted file mode 100644 index 83ae2737..00000000 --- a/client/src/sagas/core/requests/card-membership.js +++ /dev/null @@ -1,67 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createCardMembershipFailed, - createCardMembershipRequested, - createCardMembershipSucceeded, - deleteCardMembershipFailed, - deleteCardMembershipRequested, - deleteCardMembershipSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createCardMembershipRequest(cardId, userId) { - yield put( - createCardMembershipRequested({ - cardId, - userId, - }), - ); - - try { - const { item } = yield call(request, api.createCardMembership, cardId, { - userId, - }); - - const action = createCardMembershipSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createCardMembershipFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteCardMembershipRequest(cardId, userId) { - yield put(deleteCardMembershipRequested(cardId, userId)); - - try { - const { item } = yield call(request, api.deleteCardMembership, cardId, userId); - - const action = deleteCardMembershipSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteCardMembershipFailed(cardId, userId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/card.js b/client/src/sagas/core/requests/card.js deleted file mode 100644 index 6f808859..00000000 --- a/client/src/sagas/core/requests/card.js +++ /dev/null @@ -1,129 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createCardFailed, - createCardRequested, - createCardSucceeded, - deleteCardFailed, - deleteCardRequested, - deleteCardSucceeded, - fetchCardFailed, - fetchCardRequested, - fetchCardSucceeded, - updateCardFailed, - updateCardRequested, - updateCardSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createCardRequest(boardId, localId, data) { - yield put( - createCardRequested(localId, { - ...data, - boardId, - }), - ); - - try { - const { - item, - included: { cardMemberships, cardLabels, tasks, attachments }, - } = yield call(request, api.createCard, boardId, data); - - const action = createCardSucceeded( - localId, - item, - cardMemberships, - cardLabels, - tasks, - attachments, - ); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createCardFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* fetchCardRequest(id) { - yield put(fetchCardRequested(id)); - - try { - const { item } = yield call(request, api.getCard, id); - - const action = fetchCardSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = fetchCardFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateCardRequest(id, data) { - yield put(updateCardRequested(id, data)); - - try { - const { item } = yield call(request, api.updateCard, id, data); - - const action = updateCardSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateCardFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteCardRequest(id) { - yield put(deleteCardRequested(id)); - - try { - const { item } = yield call(request, api.deleteCard, id); - - const action = deleteCardSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteCardFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/comment-action.js b/client/src/sagas/core/requests/comment-action.js deleted file mode 100644 index 87cba6d9..00000000 --- a/client/src/sagas/core/requests/comment-action.js +++ /dev/null @@ -1,96 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createCommentActionFailed, - createCommentActionRequested, - createCommentActionSucceeded, - deleteCommentActionFailed, - deleteCommentActionRequested, - deleteCommentActionSucceeded, - updateCommentActionFailed, - updateCommentActionRequested, - updateCommentActionSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createCommentActionRequest(cardId, localId, data) { - yield put( - createCommentActionRequested(localId, { - ...data, - cardId, - }), - ); - - try { - const { item } = yield call(request, api.createCommentAction, cardId, data); - - const action = createCommentActionSucceeded(localId, item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createCommentActionFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateCommentActionRequest(id, data) { - yield put( - updateCommentActionRequested(id, { - data, - }), - ); - - try { - const { item } = yield call(request, api.updateCommentAction, id, data); - - const action = updateCommentActionSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateCommentActionFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteCommentActionRequest(id) { - yield put(deleteCommentActionRequested(id)); - - try { - const { item } = yield call(request, api.deleteCommentAction, id); - - const action = deleteCommentActionSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteCommentActionFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/core.js b/client/src/sagas/core/requests/core.js new file mode 100644 index 00000000..9f9bd8bc --- /dev/null +++ b/client/src/sagas/core/requests/core.js @@ -0,0 +1,90 @@ +import { call } from 'redux-saga/effects'; + +import { fetchBoardByCurrentPathRequest } from './board'; +import request from '../request'; +import api from '../../../api'; +import mergeRecords from '../../../utils/merge-records'; + +// eslint-disable-next-line import/prefer-default-export +export function* fetchCoreRequest() { + const { item: user } = yield call(request, api.getCurrentUser); + const { items: users1 } = yield call(request, api.getUsers); + + const { + items: projects1, + included: { projectManagers, boards, boardMemberships: boardMemberships1 }, + } = yield call(request, api.getProjects); + + let board; + let card; + let users2; + let projects2; + let boardMemberships2; + let labels; + let lists; + let cards1; + let cardMemberships; + let cardLabels; + let tasks; + let attachments; + + try { + ({ + board, + card, + users: users2, + projects: projects2, + boardMemberships: boardMemberships2, + labels, + lists, + cards: cards1, + cardMemberships, + cardLabels, + tasks, + attachments, + } = yield call(fetchBoardByCurrentPathRequest)); + } catch {} // eslint-disable-line no-empty + + const body = yield call(request, api.getNotifications); + + let { items: notifications } = body; + + const { + included: { users: users3, cards: cards2, actions }, + } = body; + + if (card) { + const notificationIds = notifications.flatMap((notification) => + notification.cardId === card.id ? [notification.id] : [], + ); + + if (notificationIds.length > 0) { + yield call(request, api.updateNotifications, notificationIds, { + isRead: true, + }); + + notifications = notifications.filter( + (notification) => !notificationIds.includes(notification.id), + ); + } + } + + return { + user, + board, + projectManagers, + boards, + labels, + lists, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, + users: mergeRecords(users1, users2, users3), + projects: mergeRecords(projects1, projects2), + boardMemberships: mergeRecords(boardMemberships1, boardMemberships2), + cards: mergeRecords(cards1, cards2), + }; +} diff --git a/client/src/sagas/core/requests/index.js b/client/src/sagas/core/requests/index.js index c4e3f3b9..0d602d65 100644 --- a/client/src/sagas/core/requests/index.js +++ b/client/src/sagas/core/requests/index.js @@ -1,16 +1,2 @@ -export * from './users'; -export * from './user'; -export * from './projects'; -export * from './project'; -export * from './project-membership'; +export * from './core'; export * from './board'; -export * from './label'; -export * from './list'; -export * from './card'; -export * from './card-membership'; -export * from './card-label'; -export * from './task'; -export * from './attachment'; -export * from './actions'; -export * from './comment-action'; -export * from './notifications'; diff --git a/client/src/sagas/core/requests/label.js b/client/src/sagas/core/requests/label.js deleted file mode 100644 index 553881f6..00000000 --- a/client/src/sagas/core/requests/label.js +++ /dev/null @@ -1,92 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createLabelFailed, - createLabelRequested, - createLabelSucceeded, - deleteLabelFailed, - deleteLabelRequested, - deleteLabelSucceeded, - updateLabelFailed, - updateLabelRequested, - updateLabelSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createLabelRequest(boardId, localId, data) { - yield put( - createLabelRequested(localId, { - ...data, - boardId, - }), - ); - - try { - const { item } = yield call(request, api.createLabel, boardId, data); - - const action = createLabelSucceeded(localId, item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createLabelFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateLabelRequest(id, data) { - yield put(updateLabelRequested(id, data)); - - try { - const { item } = yield call(request, api.updateLabel, id, data); - - const action = updateLabelSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateLabelFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteLabelRequest(id) { - yield put(deleteLabelRequested(id)); - - try { - const { item } = yield call(request, api.deleteLabel, id); - - const action = deleteLabelSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteLabelFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/list.js b/client/src/sagas/core/requests/list.js deleted file mode 100644 index 31f51099..00000000 --- a/client/src/sagas/core/requests/list.js +++ /dev/null @@ -1,92 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createListFailed, - createListRequested, - createListSucceeded, - deleteListFailed, - deleteListRequested, - deleteListSucceeded, - updateListFailed, - updateListRequested, - updateListSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createListRequest(boardId, localId, data) { - yield put( - createListRequested(localId, { - ...data, - boardId, - }), - ); - - try { - const { item } = yield call(request, api.createList, boardId, data); - - const action = createListSucceeded(localId, item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createListFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateListRequest(id, data) { - yield put(updateListRequested(id, data)); - - try { - const { item } = yield call(request, api.updateList, id, data); - - const action = updateListSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateListFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteListRequest(id) { - yield put(deleteListRequested(id)); - - try { - const { item } = yield call(request, api.deleteList, id); - - const action = deleteListSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteListFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/notifications.js b/client/src/sagas/core/requests/notifications.js deleted file mode 100644 index dc541221..00000000 --- a/client/src/sagas/core/requests/notifications.js +++ /dev/null @@ -1,65 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - deleteNotificationsFailed, - deleteNotificationsRequested, - deleteNotificationsSucceeded, - fetchNotificationsFailed, - fetchNotificationsRequested, - fetchNotificationsSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* fetchNotificationsRequest() { - yield put(fetchNotificationsRequested()); - - try { - const { - items, - included: { users, cards, actions }, - } = yield call(request, api.getNotifications); - - const action = fetchNotificationsSucceeded(items, users, cards, actions); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = fetchNotificationsFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteNotificationsRequest(ids) { - yield put(deleteNotificationsRequested(ids)); - - try { - const { items } = yield call(request, api.updateNotifications, ids, { - isRead: true, - }); - - const action = deleteNotificationsSucceeded(items); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteNotificationsFailed(ids, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/project-membership.js b/client/src/sagas/core/requests/project-membership.js deleted file mode 100644 index 12dce170..00000000 --- a/client/src/sagas/core/requests/project-membership.js +++ /dev/null @@ -1,65 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createProjectMembershipFailed, - createProjectMembershipRequested, - createProjectMembershipSucceeded, - deleteProjectMembershipFailed, - deleteProjectMembershipRequested, - deleteProjectMembershipSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createProjectMembershipRequest(projectId, localId, data) { - yield put( - createProjectMembershipRequested(localId, { - ...data, - projectId, - }), - ); - - try { - const { item } = yield call(request, api.createProjectMembership, projectId, data); - - const action = createProjectMembershipSucceeded(localId, item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createProjectMembershipFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteProjectMembershipRequest(id) { - yield put(deleteProjectMembershipRequested(id)); - - try { - const { item } = yield call(request, api.deleteProjectMembership, id); - - const action = deleteProjectMembershipSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteProjectMembershipFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/project.js b/client/src/sagas/core/requests/project.js deleted file mode 100644 index 4c292828..00000000 --- a/client/src/sagas/core/requests/project.js +++ /dev/null @@ -1,117 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createProjectFailed, - createProjectRequested, - createProjectSucceeded, - deleteProjectFailed, - deleteProjectRequested, - deleteProjectSucceeded, - updateProjectBackgroundImageFailed, - updateProjectBackgroundImageRequested, - updateProjectBackgroundImageSucceeded, - updateProjectFailed, - updateProjectRequested, - updateProjectSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createProjectRequest(data) { - yield put(createProjectRequested(data)); - - try { - const { - item, - included: { users, projectMemberships, boards }, - } = yield call(request, api.createProject, data); - - const action = createProjectSucceeded(item, users, projectMemberships, boards); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createProjectFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateProjectRequest(id, data) { - yield put(updateProjectRequested(id, data)); - - try { - const { item } = yield call(request, api.updateProject, id, data); - - const action = updateProjectSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateProjectFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateProjectBackgroundImageRequest(id, data) { - yield put(updateProjectBackgroundImageRequested(id)); - - try { - const { item } = yield call(request, api.updateProjectBackgroundImage, id, data); - - const action = updateProjectBackgroundImageSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateProjectBackgroundImageFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteProjectRequest(id) { - yield put(deleteProjectRequested(id)); - - try { - const { item } = yield call(request, api.deleteProject, id); - - const action = deleteProjectSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteProjectFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/projects.js b/client/src/sagas/core/requests/projects.js deleted file mode 100644 index f23265ca..00000000 --- a/client/src/sagas/core/requests/projects.js +++ /dev/null @@ -1,37 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - fetchProjectsFailed, - fetchProjectsRequested, - fetchProjectsSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -// eslint-disable-next-line import/prefer-default-export -export function* fetchProjectsRequest() { - yield put(fetchProjectsRequested()); - - try { - const { - items, - included: { users, projectMemberships, boards }, - } = yield call(request, api.getProjects); - - const action = fetchProjectsSucceeded(items, users, projectMemberships, boards); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = fetchProjectsFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/request.js b/client/src/sagas/core/requests/request.js deleted file mode 100755 index 7d8025a0..00000000 --- a/client/src/sagas/core/requests/request.js +++ /dev/null @@ -1,22 +0,0 @@ -import { call, put, select, take } from 'redux-saga/effects'; - -import { accessTokenSelector } from '../../../selectors'; -import { logout } from '../../../actions'; -import ErrorCodes from '../../../constants/ErrorCodes'; - -export default function* request(method, ...args) { - try { - const accessToken = yield select(accessTokenSelector); - - return yield call(method, ...args, { - Authorization: `Bearer ${accessToken}`, - }); - } catch (error) { - if (error.code === ErrorCodes.UNAUTHORIZED) { - yield put(logout()); // TODO: next url - yield take(); - } - - throw error; - } -} diff --git a/client/src/sagas/core/requests/task.js b/client/src/sagas/core/requests/task.js deleted file mode 100644 index fa486d1c..00000000 --- a/client/src/sagas/core/requests/task.js +++ /dev/null @@ -1,92 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createTaskFailed, - createTaskRequested, - createTaskSucceeded, - deleteTaskFailed, - deleteTaskRequested, - deleteTaskSucceeded, - updateTaskFailed, - updateTaskRequested, - updateTaskSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createTaskRequest(cardId, localId, data) { - yield put( - createTaskRequested(localId, { - ...data, - cardId, - }), - ); - - try { - const { item } = yield call(request, api.createTask, cardId, data); - - const action = createTaskSucceeded(localId, item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createTaskFailed(localId, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateTaskRequest(id, data) { - yield put(updateTaskRequested(id, data)); - - try { - const { item } = yield call(request, api.updateTask, id, data); - - const action = updateTaskSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateTaskFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteTaskRequest(id) { - yield put(deleteTaskRequested(id)); - - try { - const { item } = yield call(request, api.deleteTask, id); - - const action = deleteTaskSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteTaskFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/user.js b/client/src/sagas/core/requests/user.js deleted file mode 100644 index d23b2091..00000000 --- a/client/src/sagas/core/requests/user.js +++ /dev/null @@ -1,222 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { - createUserFailed, - createUserRequested, - createUserSucceeded, - deleteUserFailed, - deleteUserRequested, - deleteUserSucceeded, - fetchCurrentUserFailed, - fetchCurrentUserRequested, - fetchCurrentUserSucceeded, - updateUserAvatarFailed, - updateUserAvatarRequested, - updateUserAvatarSucceeded, - updateUserEmailFailed, - updateUserEmailRequested, - updateUserEmailSucceeded, - updateUserFailed, - updateUserPasswordFailed, - updateUserPasswordRequested, - updateUserPasswordSucceeded, - updateUserRequested, - updateUserSucceeded, - updateUserUsernameFailed, - updateUserUsernameRequested, - updateUserUsernameSucceeded, -} from '../../../actions'; -import api from '../../../api'; - -export function* createUserRequest(data) { - yield put(createUserRequested(data)); - - try { - const { item } = yield call(request, api.createUser, data); - - const action = createUserSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = createUserFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* fetchCurrentUserRequest() { - yield put(fetchCurrentUserRequested()); - - try { - const { item } = yield call(request, api.getCurrentUser); - - const action = fetchCurrentUserSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = fetchCurrentUserFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateUserRequest(id, data) { - yield put(updateUserRequested(id, data)); - - try { - const { item } = yield call(request, api.updateUser, id, data); - - const action = updateUserSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateUserFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateUserEmailRequest(id, data) { - yield put(updateUserEmailRequested(id, data)); - - try { - const { item } = yield call(request, api.updateUserEmail, id, data); - - const action = updateUserEmailSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateUserEmailFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateUserPasswordRequest(id, data) { - yield put(updateUserPasswordRequested(id, data)); - - try { - const { item } = yield call(request, api.updateUserPassword, id, data); - - const action = updateUserPasswordSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateUserPasswordFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateUserUsernameRequest(id, data) { - yield put(updateUserUsernameRequested(id, data)); - - try { - const { item } = yield call(request, api.updateUserUsername, id, data); - - const action = updateUserUsernameSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateUserUsernameFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* updateUserAvatarRequest(id, data) { - yield put(updateUserAvatarRequested(id)); - - try { - const { item } = yield call(request, api.updateUserAvatar, id, data); - - const action = updateUserAvatarSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = updateUserAvatarFailed(id, error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} - -export function* deleteUserRequest(id) { - yield put(deleteUserRequested(id)); - - try { - const { item } = yield call(request, api.deleteUser, id); - - const action = deleteUserSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = deleteUserFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/requests/users.js b/client/src/sagas/core/requests/users.js deleted file mode 100644 index 6146f3a0..00000000 --- a/client/src/sagas/core/requests/users.js +++ /dev/null @@ -1,30 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import request from './request'; -import { fetchUsersFailed, fetchUsersRequested, fetchUsersSucceeded } from '../../../actions'; -import api from '../../../api'; - -// eslint-disable-next-line import/prefer-default-export -export function* fetchUsersRequest() { - yield put(fetchUsersRequested()); - - try { - const { items } = yield call(request, api.getUsers); - - const action = fetchUsersSucceeded(items); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = fetchUsersFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/core/services/action.js b/client/src/sagas/core/services/action.js new file mode 100644 index 00000000..c1cf343d --- /dev/null +++ b/client/src/sagas/core/services/action.js @@ -0,0 +1,15 @@ +import { put } from 'redux-saga/effects'; + +import { handleActionCreate, handleActionDelete, handleActionUpdate } from '../../../actions'; + +export function* handleActionCreateService(action) { + yield put(handleActionCreate(action)); +} + +export function* handleActionUpdateService(action) { + yield put(handleActionUpdate(action)); +} + +export function* handleActionDeleteService(action) { + yield put(handleActionDelete(action)); +} diff --git a/client/src/sagas/core/services/actions.js b/client/src/sagas/core/services/actions.js index c421a139..f01cfe1f 100644 --- a/client/src/sagas/core/services/actions.js +++ b/client/src/sagas/core/services/actions.js @@ -1,12 +1,31 @@ -import { call, select } from 'redux-saga/effects'; +import { call, put, select } from 'redux-saga/effects'; -import { fetchActionsRequest } from '../requests'; +import request from '../request'; import { lastActionIdByCardIdSelector, pathSelector } from '../../../selectors'; +import { fetchActions } from '../../../actions'; +import api from '../../../api'; export function* fetchActionsService(cardId) { const lastId = yield select(lastActionIdByCardIdSelector, cardId); - yield call(fetchActionsRequest, cardId, lastId); + yield put(fetchActions(cardId)); + + let actions; + let users; + + try { + ({ + items: actions, + included: { users }, + } = yield call(request, api.getActions, cardId, { + beforeId: lastId, + })); + } catch (error) { + yield put(fetchActions.failure(cardId, error)); + return; + } + + yield put(fetchActions.success(cardId, actions, users)); } export function* fetchActionsInCurrentCardService() { diff --git a/client/src/sagas/core/services/attachment.js b/client/src/sagas/core/services/attachment.js index 0cad4755..89b0801c 100644 --- a/client/src/sagas/core/services/attachment.js +++ b/client/src/sagas/core/services/attachment.js @@ -1,12 +1,16 @@ import { call, put, select } from 'redux-saga/effects'; +import request from '../request'; +import { isAttachmentWithIdExistsSelector, pathSelector } from '../../../selectors'; import { - createAttachmentRequest, - deleteAttachmentRequest, - updateAttachmentRequest, -} from '../requests'; -import { pathSelector } from '../../../selectors'; -import { createAttachment, deleteAttachment, updateAttachment } from '../../../actions'; + createAttachment, + deleteAttachment, + handleAttachmentCreate, + handleAttachmentDelete, + handleAttachmentUpdate, + updateAttachment, +} from '../../../actions'; +import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; export function* createAttachmentService(cardId, data) { @@ -20,7 +24,15 @@ export function* createAttachmentService(cardId, data) { }), ); - yield call(createAttachmentRequest, cardId, localId, data); + let attachment; + try { + ({ item: attachment } = yield call(request, api.createAttachment, cardId, data, localId)); + } catch (error) { + yield put(createAttachment.failure(localId, error)); + return; + } + + yield put(createAttachment.success(localId, attachment)); } export function* createAttachmentInCurrentCardService(data) { @@ -29,12 +41,46 @@ export function* createAttachmentInCurrentCardService(data) { yield call(createAttachmentService, cardId, data); } +export function* handleAttachmentCreateService(attachment, requestId) { + const isExists = yield select(isAttachmentWithIdExistsSelector, requestId); + + if (!isExists) { + yield put(handleAttachmentCreate(attachment)); + } +} + export function* updateAttachmentService(id, data) { yield put(updateAttachment(id, data)); - yield call(updateAttachmentRequest, id, data); + + let attachment; + try { + ({ item: attachment } = yield call(request, api.updateAttachment, id, data)); + } catch (error) { + yield put(updateAttachment.failure(id, error)); + return; + } + + yield put(updateAttachment.success(attachment)); +} + +export function* handleAttachmentUpdateService(attachment) { + yield put(handleAttachmentUpdate(attachment)); } export function* deleteAttachmentService(id) { yield put(deleteAttachment(id)); - yield call(deleteAttachmentRequest, id); + + let attachment; + try { + ({ item: attachment } = yield call(request, api.deleteAttachment, id)); + } catch (error) { + yield put(deleteAttachment.failure(id, error)); + return; + } + + yield put(deleteAttachment.success(attachment)); +} + +export function* handleAttachmentDeleteService(attachment) { + yield put(handleAttachmentDelete(attachment)); } diff --git a/client/src/sagas/core/services/board-membership.js b/client/src/sagas/core/services/board-membership.js new file mode 100644 index 00000000..617b7962 --- /dev/null +++ b/client/src/sagas/core/services/board-membership.js @@ -0,0 +1,186 @@ +import { call, put, select } from 'redux-saga/effects'; + +import { goToProjectService } from './router'; +import request from '../request'; +import { fetchBoardByCurrentPathRequest } from '../requests'; +import { + boardMembershipByIdSelector, + currentUserIdSelector, + isCurrentUserManagerForCurrentProjectSelector, + notificationsByCardIdSelector, + pathSelector, +} from '../../../selectors'; +import { + createBoardMembership, + deleteBoardMembership, + handleBoardMembershipCreate, + handleBoardMembershipDelete, +} from '../../../actions'; +import api from '../../../api'; +import { createLocalId } from '../../../utils/local-id'; +import mergeRecords from '../../../utils/merge-records'; + +export function* createBoardMembershipService(boardId, data) { + const localId = yield call(createLocalId); + + yield put( + createBoardMembership({ + ...data, + boardId, + id: localId, + }), + ); + + let boardMembership; + try { + ({ item: boardMembership } = yield call(request, api.createBoardMembership, boardId, data)); + } catch (error) { + yield put(createBoardMembership.failure(localId, error)); + return; + } + + yield put(createBoardMembership.success(localId, boardMembership)); +} + +export function* createMembershipInCurrentBoardService(data) { + const { boardId } = yield select(pathSelector); + + yield call(createBoardMembershipService, boardId, data); +} + +export function* handleBoardMembershipCreateService(boardMembership) { + const currentUserId = yield select(currentUserIdSelector); + const isCurrentUser = boardMembership.userId === currentUserId; + + let user; + let project; + let board1; + let users1; + let users2; + let projectManagers; + let boards; + let boardMemberships1; + let boardMemberships2; + let labels; + let lists; + let cards; + let cardMemberships; + let cardLabels; + let tasks; + let attachments; + let notifications; + + if (isCurrentUser) { + let board2; + try { + ({ item: board2 } = yield call(request, api.getBoard, boardMembership.boardId)); + } catch { + return; + } + + const { boardId } = yield select(pathSelector); + + yield put(handleBoardMembershipCreate.fetchProject(board2.projectId, currentUserId, boardId)); + + try { + ({ + item: project, + included: { users: users1, projectManagers, boards, boardMemberships: boardMemberships1 }, + } = yield call(request, api.getProject, board2.projectId)); + } catch { + return; + } + + let body; + try { + body = yield call(fetchBoardByCurrentPathRequest); + } catch {} // eslint-disable-line no-empty + + if (body && body.project && body.project.id === board2.projectId) { + ({ + project, + board: board1, + users: users2, + boardMemberships: boardMemberships2, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + } = body); + + if (body.card) { + notifications = yield select(notificationsByCardIdSelector, body.card.id); + } + } + } else { + try { + ({ item: user } = yield call(request, api.getUser, boardMembership.userId)); + } catch { + return; + } + } + + yield put( + handleBoardMembershipCreate( + boardMembership, + project, + board1, + isCurrentUser ? mergeRecords(users1, users2) : [user], + projectManagers, + boards, + mergeRecords(boardMemberships1, boardMemberships2), + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + notifications, + ), + ); +} + +export function* deleteBoardMembershipService(id) { + let boardMembership = yield select(boardMembershipByIdSelector, id); + + const currentUserId = yield select(currentUserIdSelector); + const { boardId, projectId } = yield select(pathSelector); + + if (boardMembership.userId === currentUserId && boardMembership.boardId === boardId) { + const isCurrentUserManager = yield select(isCurrentUserManagerForCurrentProjectSelector); + + if (!isCurrentUserManager) { + yield call(goToProjectService, projectId); + } + } + + yield put(deleteBoardMembership(id)); + + try { + ({ item: boardMembership } = yield call(request, api.deleteBoardMembership, id)); + } catch (error) { + yield put(deleteBoardMembership.failure(id, error)); + return; + } + + yield put(deleteBoardMembership.success(boardMembership)); +} + +export function* handleBoardMembershipDeleteService(boardMembership) { + const currentUserId = yield select(currentUserIdSelector); + const { boardId, projectId } = yield select(pathSelector); + + if (boardMembership.userId === currentUserId && boardMembership.boardId === boardId) { + const isCurrentUserManager = yield select(isCurrentUserManagerForCurrentProjectSelector); + + if (!isCurrentUserManager) { + yield call(goToProjectService, projectId); + } + } + + yield put(handleBoardMembershipDelete(boardMembership)); +} diff --git a/client/src/sagas/core/services/board.js b/client/src/sagas/core/services/board.js index b9e94b69..732d10cc 100644 --- a/client/src/sagas/core/services/board.js +++ b/client/src/sagas/core/services/board.js @@ -1,14 +1,18 @@ import { call, put, select } from 'redux-saga/effects'; import { goToBoardService, goToProjectService } from './router'; -import { - createBoardRequest, - deleteBoardRequest, - fetchBoardRequest, - updateBoardRequest, -} from '../requests'; +import request from '../request'; import { boardByIdSelector, nextBoardPositionSelector, pathSelector } from '../../../selectors'; -import { createBoard, deleteBoard, updateBoard } from '../../../actions'; +import { + createBoard, + deleteBoard, + fetchBoard, + handleBoardCreate, + handleBoardDelete, + handleBoardUpdate, + updateBoard, +} from '../../../actions'; +import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; export function* createBoardService(projectId, data) { @@ -27,14 +31,21 @@ export function* createBoardService(projectId, data) { }), ); - const { - success, - payload: { board }, - } = yield call(createBoardRequest, projectId, localId, nextData); + let board; + let boardMemberships; - if (success) { - yield call(goToBoardService, board.id); + try { + ({ + item: board, + included: { boardMemberships }, + } = yield call(request, api.createBoard, projectId, nextData)); + } catch (error) { + yield put(createBoard.failure(localId, error)); + return; } + + yield put(createBoard.success(localId, board, boardMemberships)); + yield call(goToBoardService, board.id); } export function* createBoardInCurrentProjectService(data) { @@ -43,13 +54,79 @@ export function* createBoardInCurrentProjectService(data) { yield call(createBoardService, projectId, data); } -export function* fetchBoard(id) { - yield call(fetchBoardRequest, id); +export function* handleBoardCreateService(board) { + yield put(handleBoardCreate(board)); +} + +export function* fetchBoardService(id) { + yield put(fetchBoard(id)); + + let board; + let users; + let projects; + let boardMemberships; + let labels; + let lists; + let cards; + let cardMemberships; + let cardLabels; + let tasks; + let attachments; + + try { + ({ + item: board, + included: { + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + }, + } = yield call(request, api.getBoard, id)); + } catch (error) { + yield put(fetchBoard.failure(id, error)); + return; + } + + yield put( + fetchBoard.success( + board, + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + ), + ); } export function* updateBoardService(id, data) { yield put(updateBoard(id, data)); - yield call(updateBoardRequest, id, data); + + let board; + try { + ({ item: board } = yield call(request, api.updateBoard, id, data)); + } catch (error) { + yield put(updateBoard.failure(id, error)); + return; + } + + yield put(updateBoard.success(board)); +} + +export function* handleBoardUpdateService(board) { + yield put(handleBoardUpdate(board)); } export function* moveBoardService(id, index) { @@ -69,5 +146,24 @@ export function* deleteBoardService(id) { } yield put(deleteBoard(id)); - yield call(deleteBoardRequest, id); + + let board; + try { + ({ item: board } = yield call(request, api.deleteBoard, id)); + } catch (error) { + yield put(deleteBoard.failure(id, error)); + return; + } + + yield put(deleteBoard.success(board)); +} + +export function* handleBoardDeleteService(board) { + const { boardId, projectId } = yield select(pathSelector); + + if (board.id === boardId) { + yield call(goToProjectService, projectId); + } + + yield put(handleBoardDelete(board)); } diff --git a/client/src/sagas/core/services/card.js b/client/src/sagas/core/services/card.js index 42bb3695..818e495a 100644 --- a/client/src/sagas/core/services/card.js +++ b/client/src/sagas/core/services/card.js @@ -1,9 +1,17 @@ import { call, put, select } from 'redux-saga/effects'; import { goToBoardService } from './router'; -import { createCardRequest, deleteCardRequest, updateCardRequest } from '../requests'; +import request from '../request'; import { listByIdSelector, nextCardPositionSelector, pathSelector } from '../../../selectors'; -import { createCard, deleteCard, updateCard } from '../../../actions'; +import { + createCard, + deleteCard, + handleCardCreate, + handleCardDelete, + handleCardUpdate, + updateCard, +} from '../../../actions'; +import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; export function* createCardService(listId, data) { @@ -25,12 +33,33 @@ export function* createCardService(listId, data) { }), ); - yield call(createCardRequest, boardId, localId, nextData); + let card; + try { + ({ item: card } = yield call(request, api.createCard, boardId, nextData)); + } catch (error) { + yield put(createCard.failure(localId, error)); + return; + } + + yield put(createCard.success(localId, card)); +} + +export function* handleCardCreateService(card) { + yield put(handleCardCreate(card)); } export function* updateCardService(id, data) { yield put(updateCard(id, data)); - yield call(updateCardRequest, id, data); + + let card; + try { + ({ item: card } = yield call(request, api.updateCard, id, data)); + } catch (error) { + yield put(updateCard.failure(id, error)); + return; + } + + yield put(updateCard.success(card)); } export function* updateCurrentCardService(data) { @@ -62,9 +91,7 @@ export function* transferCardService(id, boardId, listId, index) { yield call(goToBoardService, currentBoardId); } - yield put(deleteCard(id)); - - yield call(updateCardRequest, id, { + yield call(updateCardService, id, { boardId, listId, position, @@ -77,6 +104,10 @@ export function* transferCurrentCardService(boardId, listId, index) { yield call(transferCardService, cardId, boardId, listId, index); } +export function* handleCardUpdateService(card) { + yield put(handleCardUpdate(card)); // TODO: handle card transfer +} + export function* deleteCardService(id) { const { cardId, boardId } = yield select(pathSelector); @@ -85,7 +116,16 @@ export function* deleteCardService(id) { } yield put(deleteCard(id)); - yield call(deleteCardRequest, id); + + let card; + try { + ({ item: card } = yield call(request, api.deleteCard, id)); + } catch (error) { + yield put(deleteCard.failure(id, error)); + return; + } + + yield put(deleteCard.success(card)); } export function* deleteCurrentCardService() { @@ -93,3 +133,13 @@ export function* deleteCurrentCardService() { yield call(deleteCardService, cardId); } + +export function* handleCardDeleteService(card) { + const { cardId, boardId } = yield select(pathSelector); + + if (card.id === cardId) { + yield call(goToBoardService, boardId); + } + + yield put(handleCardDelete(card)); +} diff --git a/client/src/sagas/core/services/comment-action.js b/client/src/sagas/core/services/comment-action.js index b1f47bda..88163dae 100644 --- a/client/src/sagas/core/services/comment-action.js +++ b/client/src/sagas/core/services/comment-action.js @@ -1,12 +1,9 @@ import { call, put, select } from 'redux-saga/effects'; -import { - createCommentActionRequest, - deleteCommentActionRequest, - updateCommentActionRequest, -} from '../requests'; +import request from '../request'; import { currentUserIdSelector, pathSelector } from '../../../selectors'; import { createCommentAction, deleteCommentAction, updateCommentAction } from '../../../actions'; +import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; import { ActionTypes } from '../../../constants/Enums'; @@ -24,7 +21,15 @@ export function* createCommentActionService(cardId, data) { }), ); - yield call(createCommentActionRequest, cardId, localId, data); + let action; + try { + ({ item: action } = yield call(request, api.createCommentAction, cardId, data)); + } catch (error) { + yield put(createCommentAction.failure(localId, error)); + return; + } + + yield put(createCommentAction.success(localId, action)); } export function* createCommentActionInCurrentCardService(data) { @@ -35,10 +40,28 @@ export function* createCommentActionInCurrentCardService(data) { export function* updateCommentActionService(id, data) { yield put(updateCommentAction(id, data)); - yield call(updateCommentActionRequest, id, data); + + let action; + try { + ({ item: action } = yield call(request, api.updateCommentAction, id, data)); + } catch (error) { + yield put(updateCommentAction.failure(id, error)); + return; + } + + yield put(updateCommentAction.success(action)); } export function* deleteCommentActionService(id) { yield put(deleteCommentAction(id)); - yield call(deleteCommentActionRequest, id); + + let action; + try { + ({ item: action } = yield call(request, api.deleteCommentAction, id)); + } catch (error) { + yield put(deleteCommentAction.failure(id, error)); + return; + } + + yield put(deleteCommentAction.success(action)); } diff --git a/client/src/sagas/core/services/core.js b/client/src/sagas/core/services/core.js index 92616405..1e59a4ff 100644 --- a/client/src/sagas/core/services/core.js +++ b/client/src/sagas/core/services/core.js @@ -1,44 +1,50 @@ -import { call, put, select } from 'redux-saga/effects'; +import { call, put } from 'redux-saga/effects'; -import { runPathActionsService } from './router'; -import { - fetchCardRequest, - fetchCurrentUserRequest, - fetchNotificationsRequest, - fetchProjectsRequest, - fetchUsersRequest, -} from '../requests'; -import { pathsMatchSelector } from '../../../selectors'; -import { coreInitialized } from '../../../actions'; +import { fetchCoreRequest } from '../requests'; +import { initializeCore } from '../../../actions'; import i18n from '../../../i18n'; -import Paths from '../../../constants/Paths'; - -export function* loadLocaleService(language) { - yield call(i18n.loadCoreLocale, language); -} +// eslint-disable-next-line import/prefer-default-export export function* initializeCoreService() { const { - payload: { - user: { isAdmin }, - }, - } = yield call(fetchCurrentUserRequest); // TODO: success check + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, + } = yield call(fetchCoreRequest); // TODO: handle error - if (isAdmin) { - yield call(fetchUsersRequest); - } + yield call(i18n.loadCoreLocale, i18n.language); - yield call(fetchProjectsRequest); - - const pathsMatch = yield select(pathsMatchSelector); - - if (pathsMatch && pathsMatch.path === Paths.CARDS) { - yield call(fetchCardRequest, pathsMatch.params.id); - } - - yield call(fetchNotificationsRequest); - yield call(runPathActionsService, pathsMatch); - yield call(loadLocaleService, i18n.language); - - yield put(coreInitialized()); + yield put( + initializeCore( + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, + ), + ); } diff --git a/client/src/sagas/core/services/index.js b/client/src/sagas/core/services/index.js index cb555d68..161add47 100644 --- a/client/src/sagas/core/services/index.js +++ b/client/src/sagas/core/services/index.js @@ -5,14 +5,15 @@ export * from './core'; export * from './modal'; export * from './user'; export * from './project'; -export * from './project-membership'; +export * from './project-manager'; export * from './board'; +export * from './board-membership'; export * from './label'; export * from './list'; export * from './card'; export * from './task'; export * from './attachment'; export * from './actions'; +export * from './action'; export * from './comment-action'; -export * from './notifications'; export * from './notification'; diff --git a/client/src/sagas/core/services/label.js b/client/src/sagas/core/services/label.js index 7d37a168..aa169453 100644 --- a/client/src/sagas/core/services/label.js +++ b/client/src/sagas/core/services/label.js @@ -1,22 +1,22 @@ import { call, put, select } from 'redux-saga/effects'; -import { - createCardLabelRequest, - createLabelRequest, - deleteCardLabelRequest, - deleteLabelRequest, - updateLabelRequest, -} from '../requests'; +import request from '../request'; import { pathSelector } from '../../../selectors'; import { addLabelToBoardFilter, addLabelToCard, createLabel, deleteLabel, + handleLabelCreate, + handleLabelDelete, + handleLabelFromCardRemove, + handleLabelToCardAdd, + handleLabelUpdate, removeLabelFromBoardFilter, removeLabelFromCard, updateLabel, } from '../../../actions'; +import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; export function* createLabelService(boardId, data) { @@ -30,7 +30,15 @@ export function* createLabelService(boardId, data) { }), ); - yield call(createLabelRequest, boardId, localId, data); + let label; + try { + ({ item: label } = yield call(request, api.createLabel, boardId, data)); + } catch (error) { + yield put(createLabel.failure(localId, error)); + return; + } + + yield put(createLabel.success(localId, label)); } export function* createLabelInCurrentBoardService(data) { @@ -39,19 +47,60 @@ export function* createLabelInCurrentBoardService(data) { yield call(createLabelService, boardId, data); } +export function* handleLabelCreateService(label) { + yield put(handleLabelCreate(label)); +} + export function* updateLabelService(id, data) { yield put(updateLabel(id, data)); - yield call(updateLabelRequest, id, data); + + let label; + try { + ({ item: label } = yield call(request, api.updateLabel, id, data)); + } catch (error) { + yield put(updateLabel.failure(id, error)); + return; + } + + yield put(updateLabel.success(label)); +} + +export function* handleLabelUpdateService(label) { + yield put(handleLabelUpdate(label)); } export function* deleteLabelService(id) { yield put(deleteLabel(id)); - yield call(deleteLabelRequest, id); + + let label; + try { + ({ item: label } = yield call(request, api.deleteLabel, id)); + } catch (error) { + yield put(deleteLabel.failure(id, error)); + return; + } + + yield put(deleteLabel.success(label)); +} + +export function* handleLabelDeleteService(label) { + yield put(handleLabelDelete(label)); } export function* addLabelToCardService(id, cardId) { yield put(addLabelToCard(id, cardId)); - yield call(createCardLabelRequest, cardId, id); + + let cardLabel; + try { + ({ item: cardLabel } = yield call(request, api.createCardLabel, cardId, { + labelId: id, + })); + } catch (error) { + yield put(addLabelToCard.failure(id, cardId, error)); + return; + } + + yield put(addLabelToCard.success(cardLabel)); } export function* addLabelToCurrentCardService(id) { @@ -60,9 +109,22 @@ export function* addLabelToCurrentCardService(id) { yield call(addLabelToCardService, id, cardId); } +export function* handleLabelToCardAddService(cardLabel) { + yield put(handleLabelToCardAdd(cardLabel)); +} + export function* removeLabelFromCardService(id, cardId) { yield put(removeLabelFromCard(id, cardId)); - yield call(deleteCardLabelRequest, cardId, id); + + let cardLabel; + try { + ({ item: cardLabel } = yield call(request, api.deleteCardLabel, cardId, id)); + } catch (error) { + yield put(removeLabelFromCard.failure(id, cardId, error)); + return; + } + + yield put(removeLabelFromCard.success(cardLabel)); } export function* removeLabelFromCurrentCardService(id) { @@ -71,6 +133,10 @@ export function* removeLabelFromCurrentCardService(id) { yield call(removeLabelFromCardService, id, cardId); } +export function* handleLabelFromCardRemoveService(cardLabel) { + yield put(handleLabelFromCardRemove(cardLabel)); +} + export function* addLabelToBoardFilterService(id, boardId) { yield put(addLabelToBoardFilter(id, boardId)); } diff --git a/client/src/sagas/core/services/list.js b/client/src/sagas/core/services/list.js index 2effbff6..6238927f 100644 --- a/client/src/sagas/core/services/list.js +++ b/client/src/sagas/core/services/list.js @@ -1,8 +1,16 @@ import { call, put, select } from 'redux-saga/effects'; -import { createListRequest, deleteListRequest, updateListRequest } from '../requests'; +import request from '../request'; import { listByIdSelector, nextListPositionSelector, pathSelector } from '../../../selectors'; -import { createList, deleteList, updateList } from '../../../actions'; +import { + createList, + deleteList, + handleListCreate, + handleListDelete, + handleListUpdate, + updateList, +} from '../../../actions'; +import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; export function* createListService(boardId, data) { @@ -21,7 +29,15 @@ export function* createListService(boardId, data) { }), ); - yield call(createListRequest, boardId, localId, nextData); + let list; + try { + ({ item: list } = yield call(request, api.createList, boardId, nextData)); + } catch (error) { + yield put(createList.failure(localId, error)); + return; + } + + yield put(createList.success(localId, list)); } export function* createListInCurrentBoardService(data) { @@ -30,9 +46,22 @@ export function* createListInCurrentBoardService(data) { yield call(createListService, boardId, data); } +export function* handleListCreateService(label) { + yield put(handleListCreate(label)); +} + export function* updateListService(id, data) { yield put(updateList(id, data)); - yield call(updateListRequest, id, data); + + let list; + try { + ({ item: list } = yield call(request, api.updateList, id, data)); + } catch (error) { + yield put(updateList.failure(id, error)); + return; + } + + yield put(updateList.success(list)); } export function* moveListService(id, index) { @@ -44,7 +73,24 @@ export function* moveListService(id, index) { }); } +export function* handleListUpdateService(label) { + yield put(handleListUpdate(label)); +} + export function* deleteListService(id) { yield put(deleteList(id)); - yield call(deleteListRequest, id); + + let list; + try { + ({ item: list } = yield call(request, api.deleteList, id)); + } catch (error) { + yield put(deleteList.failure(id, error)); + return; + } + + yield put(deleteList.success(list)); +} + +export function* handleListDeleteService(label) { + yield put(handleListDelete(label)); } diff --git a/client/src/sagas/core/services/login.js b/client/src/sagas/core/services/login.js index 250f70cf..a39298f2 100644 --- a/client/src/sagas/core/services/login.js +++ b/client/src/sagas/core/services/login.js @@ -1,8 +1,9 @@ -import { put } from 'redux-saga/effects'; +import { put, take } from 'redux-saga/effects'; import { logout } from '../../../actions'; // eslint-disable-next-line import/prefer-default-export export function* logoutService() { yield put(logout()); + yield take(); } diff --git a/client/src/sagas/core/services/notification.js b/client/src/sagas/core/services/notification.js index fa2c91db..6724adb3 100644 --- a/client/src/sagas/core/services/notification.js +++ b/client/src/sagas/core/services/notification.js @@ -1,8 +1,56 @@ -import { call } from 'redux-saga/effects'; +import { call, put, select } from 'redux-saga/effects'; -import { deleteNotificationsService } from './notifications'; +import request from '../request'; +import { pathSelector } from '../../../selectors'; +import { + deleteNotification, + handleNotificationCreate, + handleNotificationDelete, +} from '../../../actions'; +import api from '../../../api'; -// eslint-disable-next-line import/prefer-default-export -export function* deleteNotificationService(id) { - yield call(deleteNotificationsService, [id]); +export function* handleNotificationCreateService(notification) { + const { cardId } = yield select(pathSelector); + + if (notification.cardId === cardId) { + try { + yield call(request, api.updateNotifications, [notification.id], { + isRead: true, + }); + } catch {} // eslint-disable-line no-empty + } else { + let users; + let cards; + let actions; + + try { + ({ + included: { users, cards, actions }, + } = yield call(request, api.getNotification, notification.id)); + } catch { + return; + } + + yield put(handleNotificationCreate(notification, users, cards, actions)); + } +} + +export function* deleteNotificationService(id) { + yield put(deleteNotification(id)); + + let notifications; + try { + ({ items: notifications } = yield call(request, api.updateNotifications, [id], { + isRead: true, + })); + } catch (error) { + yield put(deleteNotification.failure(id, error)); + return; + } + + yield put(deleteNotification.success(notifications[0])); +} + +export function* handleNotificationDeleteService(notification) { + yield put(handleNotificationDelete(notification)); } diff --git a/client/src/sagas/core/services/notifications.js b/client/src/sagas/core/services/notifications.js deleted file mode 100644 index 43527f50..00000000 --- a/client/src/sagas/core/services/notifications.js +++ /dev/null @@ -1,18 +0,0 @@ -import { call, put, select } from 'redux-saga/effects'; - -import { deleteNotificationsRequest } from '../requests'; -import { notificationIdsForCurrentCardSelector } from '../../../selectors'; -import { deleteNotifications } from '../../../actions'; - -export function* deleteNotificationsService(ids) { - yield put(deleteNotifications(ids)); - yield call(deleteNotificationsRequest, ids); -} - -export function* deleteNotificationsInCurrentCardService() { - const notificationIds = yield select(notificationIdsForCurrentCardSelector); - - if (notificationIds && notificationIds.length > 0) { - yield call(deleteNotificationsService, notificationIds); - } -} diff --git a/client/src/sagas/core/services/project-manager.js b/client/src/sagas/core/services/project-manager.js new file mode 100644 index 00000000..991fefe3 --- /dev/null +++ b/client/src/sagas/core/services/project-manager.js @@ -0,0 +1,174 @@ +import { call, put, select } from 'redux-saga/effects'; + +import request from '../request'; +import { fetchBoardByCurrentPathRequest } from '../requests'; +import { + currentUserIdSelector, + notificationsByCardIdSelector, + pathSelector, + projectManagerByIdSelector, +} from '../../../selectors'; +import { + createProjectManager, + deleteProjectManager, + handleProjectManagerCreate, + handleProjectManagerDelete, +} from '../../../actions'; +import api from '../../../api'; +import { createLocalId } from '../../../utils/local-id'; +import mergeRecords from '../../../utils/merge-records'; + +export function* createProjectManagerService(projectId, data) { + const localId = yield call(createLocalId); + + yield put( + createProjectManager({ + ...data, + projectId, + id: localId, + }), + ); + + let projectManager; + try { + ({ item: projectManager } = yield call(request, api.createProjectManager, projectId, data)); + } catch (error) { + yield put(createProjectManager.failure(localId, error)); + } + + yield put(createProjectManager.success(localId, projectManager)); +} + +export function* createManagerInCurrentProjectService(data) { + const { projectId } = yield select(pathSelector); + + yield call(createProjectManagerService, projectId, data); +} + +export function* handleProjectManagerCreateService(projectManager) { + const currentUserId = yield select(currentUserIdSelector); + const isCurrentUser = projectManager.userId === currentUserId; + + let user; + let project; + let board; + let users1; + let users2; + let projectManagers; + let boards; + let boardMemberships1; + let boardMemberships2; + let labels; + let lists; + let cards; + let cardMemberships; + let cardLabels; + let tasks; + let attachments; + let notifications; + + if (isCurrentUser) { + const { boardId } = yield select(pathSelector); + + yield put( + handleProjectManagerCreate.fetchProject(projectManager.projectId, currentUserId, boardId), + ); + + try { + ({ + item: project, + included: { users: users1, projectManagers, boards, boardMemberships: boardMemberships1 }, + } = yield call(request, api.getProject, projectManager.projectId)); + } catch { + return; + } + + let body; + try { + body = yield call(fetchBoardByCurrentPathRequest); + } catch {} // eslint-disable-line no-empty + + if (body && body.project && body.project.id === projectManager.projectId) { + ({ + project, + board, + users: users2, + boardMemberships: boardMemberships2, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + } = body); + + if (body.card) { + notifications = yield select(notificationsByCardIdSelector, body.card.id); + } + } + } else { + try { + ({ item: user } = yield call(request, api.getUser, projectManager.userId)); + } catch { + return; + } + } + + yield put( + handleProjectManagerCreate( + projectManager, + project, + board, + isCurrentUser ? mergeRecords(users1, users2) : [user], + projectManagers, + boards, + mergeRecords(boardMemberships1, boardMemberships2), + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + notifications, + ), + ); +} + +export function* deleteProjectManagerService(id) { + let projectManager = yield select(projectManagerByIdSelector, id); + + const currentUserId = yield select(currentUserIdSelector); + const { projectId } = yield select(pathSelector); + + yield put( + deleteProjectManager( + id, + projectManager.userId === currentUserId, + projectManager.projectId === projectId, + ), + ); + + try { + ({ item: projectManager } = yield call(request, api.deleteProjectManager, id)); + } catch (error) { + yield put(deleteProjectManager.failure(id, error)); + return; + } + + yield put(deleteProjectManager.success(projectManager)); +} + +export function* handleProjectManagerDeleteService(projectManager) { + const currentUserId = yield select(currentUserIdSelector); + const { projectId } = yield select(pathSelector); + + yield put( + handleProjectManagerDelete( + projectManager, + projectManager.userId === currentUserId, + projectManager.projectId === projectId, + ), + ); +} diff --git a/client/src/sagas/core/services/project-membership.js b/client/src/sagas/core/services/project-membership.js deleted file mode 100644 index 314c354e..00000000 --- a/client/src/sagas/core/services/project-membership.js +++ /dev/null @@ -1,31 +0,0 @@ -import { call, put, select } from 'redux-saga/effects'; - -import { createProjectMembershipRequest, deleteProjectMembershipRequest } from '../requests'; -import { pathSelector } from '../../../selectors'; -import { createProjectMembership, deleteProjectMembership } from '../../../actions'; -import { createLocalId } from '../../../utils/local-id'; - -export function* createProjectMembershipService(projectId, data) { - const localId = yield call(createLocalId); - - yield put( - createProjectMembership({ - ...data, - projectId, - id: localId, - }), - ); - - yield call(createProjectMembershipRequest, projectId, localId, data); -} - -export function* createMembershipInCurrentProjectService(data) { - const { projectId } = yield select(pathSelector); - - yield call(createProjectMembershipService, projectId, data); -} - -export function* deleteProjectMembershipService(id) { - yield put(deleteProjectMembership(id)); - yield call(deleteProjectMembershipRequest, id); -} diff --git a/client/src/sagas/core/services/project.js b/client/src/sagas/core/services/project.js index b6e20803..884714b7 100644 --- a/client/src/sagas/core/services/project.js +++ b/client/src/sagas/core/services/project.js @@ -1,31 +1,69 @@ import { call, put, select } from 'redux-saga/effects'; import { goToProjectService, goToRootService } from './router'; -import { - createProjectRequest, - deleteProjectRequest, - updateProjectBackgroundImageRequest, - updateProjectRequest, -} from '../requests'; +import request from '../request'; import { pathSelector } from '../../../selectors'; -import { createProject, deleteProject, updateProject } from '../../../actions'; +import { + createProject, + deleteProject, + handleProjectCreate, + handleProjectDelete, + handleProjectUpdate, + updateProject, + updateProjectBackgroundImage, +} from '../../../actions'; +import api from '../../../api'; export function* createProjectService(data) { yield put(createProject(data)); - const { - success, - payload: { project }, - } = yield call(createProjectRequest, data); + let project; + let projectManagers; - if (success) { - yield call(goToProjectService, project.id); + try { + ({ + item: project, + included: { projectManagers }, + } = yield call(request, api.createProject, data)); + } catch (error) { + yield put(createProject.failure(error)); + return; } + + yield put(createProject.success(project, projectManagers)); + yield call(goToProjectService, project.id); +} + +export function* handleProjectCreateService({ id }) { + let project; + let users; + let projectManagers; + let boards; + let boardMemberships; + + try { + ({ + item: project, + included: { users, projectManagers, boards, boardMemberships }, + } = yield call(request, api.getProject, id)); + } catch (error) { + return; + } + + yield put(handleProjectCreate(project, users, projectManagers, boards, boardMemberships)); } export function* updateProjectService(id, data) { yield put(updateProject(id, data)); - yield call(updateProjectRequest, id, data); + + let project; + try { + ({ item: project } = yield call(request, api.updateProject, id, data)); + } catch (error) { + yield put(updateProject.failure(id, error)); + } + + yield put(updateProject.success(project)); } export function* updateCurrentProjectService(data) { @@ -34,8 +72,21 @@ export function* updateCurrentProjectService(data) { yield call(updateProjectService, projectId, data); } +export function* handleProjectUpdateService(project) { + yield put(handleProjectUpdate(project)); +} + export function* updateProjectBackgroundImageService(id, data) { - yield call(updateProjectBackgroundImageRequest, id, data); + yield put(updateProjectBackgroundImage(id)); + + let project; + try { + ({ item: project } = yield call(request, api.updateProjectBackgroundImage, id, data)); + } catch (error) { + yield put(updateProjectBackgroundImage.failure(id, error)); + } + + yield put(updateProjectBackgroundImage.success(project)); } export function* updateCurrentProjectBackgroundImageService(data) { @@ -52,7 +103,15 @@ export function* deleteProjectService(id) { } yield put(deleteProject(id)); - yield call(deleteProjectRequest, id); + + let project; + try { + ({ item: project } = yield call(request, api.deleteProject, id)); + } catch (error) { + yield put(deleteProject.failure(id, error)); + } + + yield put(deleteProject.success(project)); } export function* deleteCurrentProjectService() { @@ -60,3 +119,13 @@ export function* deleteCurrentProjectService() { yield call(deleteProjectService, projectId); } + +export function* handleProjectDeleteService(project) { + const { projectId } = yield select(pathSelector); + + if (project.id === projectId) { + yield call(goToRootService); + } + + yield put(handleProjectDelete(project)); +} diff --git a/client/src/sagas/core/services/router.js b/client/src/sagas/core/services/router.js index a9eb1524..7ed31e6a 100644 --- a/client/src/sagas/core/services/router.js +++ b/client/src/sagas/core/services/router.js @@ -1,13 +1,16 @@ -import { call, put, select } from 'redux-saga/effects'; +import { call, put, select, take } from 'redux-saga/effects'; import { push } from 'connected-react-router'; -import { deleteNotificationsInCurrentCardService } from './notifications'; -import { fetchBoardRequest } from '../requests'; +import request from '../request'; import { currentBoardSelector, isCoreInitializingSelector, + notificationIdsForCurrentCardSelector, pathsMatchSelector, } from '../../../selectors'; +import { handleLocationChange } from '../../../actions'; +import api from '../../../api'; +import ActionTypes from '../../../constants/ActionTypes'; import Paths from '../../../constants/Paths'; export function* goToRootService() { @@ -26,46 +29,103 @@ export function* goToCardService(cardId) { yield put(push(Paths.CARDS.replace(':id', cardId))); } -export function* runPathActionsService(pathsMatch) { +export function* handleLocationChangeService() { + const pathsMatch = yield select(pathsMatchSelector); + if (!pathsMatch) { return; } + switch (pathsMatch.path) { + case Paths.LOGIN: + yield call(goToRootService); + + break; + default: + } + + const isCoreInitializing = yield select(isCoreInitializingSelector); + + if (isCoreInitializing) { + yield take(ActionTypes.CORE_INITIALIZE); + } + + let board; + let users; + let projects; + let boardMemberships; + let labels; + let lists; + let cards; + let cardMemberships; + let cardLabels; + let tasks; + let attachments; + let notifications; + switch (pathsMatch.path) { case Paths.BOARDS: case Paths.CARDS: { - const currentBoard = yield select(currentBoardSelector); // TODO: move to services + const currentBoard = yield select(currentBoardSelector); if (currentBoard && currentBoard.isFetching === null) { - yield call(fetchBoardRequest, currentBoard.id); + yield put(handleLocationChange.fetchBoard(currentBoard.id)); + + try { + ({ + item: board, + included: { + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + }, + } = yield call(request, api.getBoard, currentBoard.id)); + } catch (error) {} // eslint-disable-line no-empty } if (pathsMatch.path === Paths.CARDS) { - yield call(deleteNotificationsInCurrentCardService); + const notificationIds = yield select(notificationIdsForCurrentCardSelector); + + if (notificationIds && notificationIds.length > 0) { + try { + ({ items: notifications } = yield call( + request, + api.updateNotifications, + notificationIds, + { + isRead: true, + }, + )); + } catch (error) {} // eslint-disable-line no-empty + } } break; } default: } -} - -export function* locationChangedService() { - const pathsMatch = yield select(pathsMatchSelector); - - if (pathsMatch) { - switch (pathsMatch.path) { - case Paths.LOGIN: - yield call(goToRootService); - - break; - default: - } - } - - const isCoreInitializing = yield select(isCoreInitializingSelector); - - if (!isCoreInitializing) { - yield call(runPathActionsService, pathsMatch); - } + + yield put( + handleLocationChange( + board, + users, + projects, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + notifications, + ), + ); } diff --git a/client/src/sagas/core/services/socket.js b/client/src/sagas/core/services/socket.js index a6fd3b8e..2b4eac7f 100644 --- a/client/src/sagas/core/services/socket.js +++ b/client/src/sagas/core/services/socket.js @@ -1,252 +1,56 @@ import { call, put, select } from 'redux-saga/effects'; -import { goToBoardService, goToProjectService, goToRootService } from './router'; -import { logoutService } from './login'; -import { closeModalService } from './modal'; -import { deleteNotificationsRequest, fetchUsersRequest } from '../requests'; -import { - currentModalSelector, - currentUserIdSelector, - currentUserSelector, - isAttachmentWithIdExistsSelector, - pathSelector, -} from '../../../selectors'; -import { - createActionReceived, - createAttachmentReceived, - createBoardReceived, - createCardLabelReceived, - createCardMembershipReceived, - createCardReceived, - createLabelReceived, - createListReceived, - createNotificationReceived, - createProjectMembershipReceived, - createProjectReceived, - createTaskReceived, - createUserReceived, - deleteActionReceived, - deleteAttachmentReceived, - deleteCardLabelReceived, - deleteCardMembershipReceived, - deleteCardReceived, - deleteBoardReceived, - deleteLabelReceived, - deleteListReceived, - deleteNotificationReceived, - deleteProjectMembershipReceived, - deleteProjectReceived, - deleteTaskReceived, - deleteUserReceived, - socketDisconnected, - socketReconnected, - updateActionReceived, - updateAttachmentReceived, - updateBoardReceived, - updateCardReceived, - updateLabelReceived, - updateListReceived, - updateProjectReceived, - updateTaskReceived, - updateUserReceived, -} from '../../../actions'; -import ModalTypes from '../../../constants/ModalTypes'; +import { fetchCoreRequest } from '../requests'; +import { currentUserIdSelector, pathSelector } from '../../../selectors'; +import { handleSocketDisconnect, handleSocketReconnect } from '../../../actions'; -export function* socketDisconnectedService() { - yield put(socketDisconnected()); +export function* handleSocketDisconnectService() { + yield put(handleSocketDisconnect()); } -// TODO: refetch state on reconnect -export function* socketReconnectedService() { - yield put(socketReconnected()); -} - -export function* createUserReceivedService(user) { - yield put(createUserReceived(user)); -} - -export function* updateUserReceivedService(user) { - const currentUser = yield select(currentUserSelector); - - if (user.id === currentUser.id) { - if (currentUser.isAdmin) { - if (!user.isAdmin) { - const currentModal = yield select(currentModalSelector); - - if (currentModal === ModalTypes.USERS) { - yield call(closeModalService); - } - } - } else if (user.isAdmin) { - yield call(fetchUsersRequest); - } - } - - yield put(updateUserReceived(user)); -} - -export function* deleteUserReceivedService(user) { +export function* handleSocketReconnectService() { const currentUserId = yield select(currentUserIdSelector); + const { boardId } = yield select(pathSelector); - if (user.id === currentUserId) { - yield call(logoutService); - } + yield put(handleSocketReconnect.fetchCore(currentUserId, boardId)); - yield put(deleteUserReceived(user)); -} - -export function* createProjectReceivedService(project, users, projectMemberships, boards) { - yield put(createProjectReceived(project, users, projectMemberships, boards)); -} - -export function* updateProjectReceivedService(project) { - yield put(updateProjectReceived(project)); -} - -export function* deleteProjectReceivedService(project) { - const { projectId } = yield select(pathSelector); - - if (project.id === projectId) { - yield call(goToRootService); - } - - yield put(deleteProjectReceived(project)); -} - -export function* createProjectMembershipReceivedService(projectMembership, user) { - yield put(createProjectMembershipReceived(projectMembership, user)); -} - -export function* deleteProjectMembershipReceivedService(projectMembership) { - yield put(deleteProjectMembershipReceived(projectMembership)); -} - -export function* createBoardReceivedService(board, lists, labels) { - yield put(createBoardReceived(board, lists, labels)); -} - -export function* updateBoardReceivedService(board) { - yield put(updateBoardReceived(board)); -} - -export function* deleteBoardReceivedService(board) { - const { boardId, projectId } = yield select(pathSelector); - - if (board.id === boardId) { - yield call(goToProjectService, projectId); - } - - yield put(deleteBoardReceived(board)); -} - -export function* createListReceivedService(list) { - yield put(createListReceived(list)); -} - -export function* updateListReceivedService(list) { - yield put(updateListReceived(list)); -} - -export function* deleteListReceivedService(list) { - yield put(deleteListReceived(list)); -} - -export function* createLabelReceivedService(label) { - yield put(createLabelReceived(label)); -} - -export function* updateLabelReceivedService(label) { - yield put(updateLabelReceived(label)); -} - -export function* deleteLabelReceivedService(label) { - yield put(deleteLabelReceived(label)); -} - -export function* createCardReceivedService(card, cardMemberships, cardLabels, tasks, attachments) { - yield put(createCardReceived(card, cardMemberships, cardLabels, tasks, attachments)); -} - -export function* updateCardReceivedService(card) { - yield put(updateCardReceived(card)); -} - -export function* deleteCardReceivedService(card) { - const { cardId, boardId } = yield select(pathSelector); - - if (card.id === cardId) { - yield call(goToBoardService, boardId); - } - - yield put(deleteCardReceived(card)); -} - -export function* createCardMembershipReceivedService(cardMembership) { - yield put(createCardMembershipReceived(cardMembership)); -} - -export function* deleteCardMembershipReceivedService(cardMembership) { - yield put(deleteCardMembershipReceived(cardMembership)); -} - -export function* createCardLabelReceivedService(cardLabel) { - yield put(createCardLabelReceived(cardLabel)); -} - -export function* deleteCardLabelReceivedService(cardLabel) { - yield put(deleteCardLabelReceived(cardLabel)); -} - -export function* createTaskReceivedService(task) { - yield put(createTaskReceived(task)); -} - -export function* updateTaskReceivedService(task) { - yield put(updateTaskReceived(task)); -} - -export function* deleteTaskReceivedService(task) { - yield put(deleteTaskReceived(task)); -} - -export function* createAttachmentReceivedService(attachment, requestId) { - const isExists = yield select(isAttachmentWithIdExistsSelector, requestId); - - if (!isExists) { - yield put(createAttachmentReceived(attachment)); - } -} - -export function* updateAttachmentReceivedService(attachment) { - yield put(updateAttachmentReceived(attachment)); -} - -export function* deleteAttachmentReceivedService(attachment) { - yield put(deleteAttachmentReceived(attachment)); -} - -export function* createActionReceivedService(action) { - yield put(createActionReceived(action)); -} - -export function* updateActionReceivedService(action) { - yield put(updateActionReceived(action)); -} - -export function* deleteActionReceivedService(action) { - yield put(deleteActionReceived(action)); -} - -export function* createNotificationReceivedService(notification, user, card, action) { - const { cardId } = yield select(pathSelector); - - if (card.id === cardId) { - yield call(deleteNotificationsRequest, [notification.id]); - } else { - yield put(createNotificationReceived(notification, user, card, action)); - } -} - -export function* deleteNotificationReceivedService(notification) { - yield put(deleteNotificationReceived(notification)); + const { + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, + } = yield call(fetchCoreRequest); // TODO: handle error + + yield put( + handleSocketReconnect( + user, + board, + users, + projects, + projectManagers, + boards, + boardMemberships, + labels, + lists, + cards, + cardMemberships, + cardLabels, + tasks, + attachments, + actions, + notifications, + ), + ); } diff --git a/client/src/sagas/core/services/task.js b/client/src/sagas/core/services/task.js index 389112c4..5c611298 100644 --- a/client/src/sagas/core/services/task.js +++ b/client/src/sagas/core/services/task.js @@ -1,8 +1,16 @@ import { call, put, select } from 'redux-saga/effects'; -import { createTaskRequest, deleteTaskRequest, updateTaskRequest } from '../requests'; +import request from '../request'; import { pathSelector } from '../../../selectors'; -import { createTask, deleteTask, updateTask } from '../../../actions'; +import { + createTask, + deleteTask, + handleTaskCreate, + handleTaskDelete, + handleTaskUpdate, + updateTask, +} from '../../../actions'; +import api from '../../../api'; import { createLocalId } from '../../../utils/local-id'; export function* createTaskService(cardId, data) { @@ -16,7 +24,15 @@ export function* createTaskService(cardId, data) { }), ); - yield call(createTaskRequest, cardId, localId, data); + let task; + try { + ({ item: task } = yield call(request, api.createTask, cardId, data)); + } catch (error) { + yield put(createTask.failure(localId, error)); + return; + } + + yield put(createTask.success(localId, task)); } export function* createTaskInCurrentCardService(data) { @@ -25,12 +41,42 @@ export function* createTaskInCurrentCardService(data) { yield call(createTaskService, cardId, data); } +export function* handleTaskCreateService(task) { + yield put(handleTaskCreate(task)); +} + export function* updateTaskService(id, data) { yield put(updateTask(id, data)); - yield call(updateTaskRequest, id, data); + + let task; + try { + ({ item: task } = yield call(request, api.updateTask, id, data)); + } catch (error) { + yield put(updateTask.failure(id, error)); + return; + } + + yield put(updateTask.success(task)); +} + +export function* handleTaskUpdateService(task) { + yield put(handleTaskUpdate(task)); } export function* deleteTaskService(id) { yield put(deleteTask(id)); - yield call(deleteTaskRequest, id); + + let task; + try { + ({ item: task } = yield call(request, api.deleteTask, id)); + } catch (error) { + yield put(deleteTask.failure(id, error)); + return; + } + + yield put(deleteTask.success(task)); +} + +export function* handleTaskDeleteService(task) { + yield put(handleTaskDelete(task)); } diff --git a/client/src/sagas/core/services/user.js b/client/src/sagas/core/services/user.js index 818f3b07..cea6d06a 100644 --- a/client/src/sagas/core/services/user.js +++ b/client/src/sagas/core/services/user.js @@ -1,17 +1,8 @@ import { call, put, select } from 'redux-saga/effects'; -import { - createCardMembershipRequest, - createUserRequest, - deleteCardMembershipRequest, - deleteUserRequest, - updateUserAvatarRequest, - updateUserEmailRequest, - updateUserPasswordRequest, - updateUserRequest, - updateUserUsernameRequest, -} from '../requests'; -import { currentUserIdSelector, pathSelector } from '../../../selectors'; +import { logoutService } from './login'; +import request from '../request'; +import { currentUserIdSelector, currentUserSelector, pathSelector } from '../../../selectors'; import { addUserToBoardFilter, addUserToCard, @@ -21,14 +12,37 @@ import { clearUserUsernameUpdateError, createUser, deleteUser, - updateUser, + handleUserCreate, + handleUserDelete, + handleUserFromCardRemove, + handleUserToCardAdd, + handleUserUpdate, removeUserFromBoardFilter, removeUserFromCard, + updateUser, + updateUserAvatar, + updateUserEmail, + updateUserPassword, + updateUserUsername, } from '../../../actions'; +import api from '../../../api'; export function* createUserService(data) { yield put(createUser(data)); - yield call(createUserRequest, data); + + let user; + try { + ({ item: user } = yield call(request, api.createUser, data)); + } catch (error) { + yield put(createUser.failure(error)); + return; + } + + yield put(createUser.success(user)); +} + +export function* handleUserCreateService(user) { + yield put(handleUserCreate(user)); } export function* clearUserCreateErrorService() { @@ -37,7 +51,16 @@ export function* clearUserCreateErrorService() { export function* updateUserService(id, data) { yield put(updateUser(id, data)); - yield call(updateUserRequest, id, data); + + let user; + try { + ({ item: user } = yield call(request, api.updateUser, id, data)); + } catch (error) { + yield put(updateUser.failure(id, error)); + return; + } + + yield put(updateUser.success(user)); } export function* updateCurrentUserService(data) { @@ -46,8 +69,30 @@ export function* updateCurrentUserService(data) { yield call(updateUserService, id, data); } +export function* handleUserUpdateService(user) { + const currentUser = yield select(currentUserSelector); + const isCurrent = user.id === currentUser.id; + + let users; + if (isCurrent && !currentUser.isAdmin && user.isAdmin) { + ({ items: users } = yield call(request, api.getUsers)); + } + + yield put(handleUserUpdate(user, users, isCurrent)); +} + export function* updateUserEmailService(id, data) { - yield call(updateUserEmailRequest, id, data); + yield put(updateUserEmail(id, data)); + + let user; + try { + ({ item: user } = yield call(request, api.updateUserEmail, id, data)); + } catch (error) { + yield put(updateUserEmail.failure(id, error)); + return; + } + + yield put(updateUserEmail.success(user)); } export function* updateCurrentUserEmailService(data) { @@ -67,7 +112,17 @@ export function* clearCurrentUserEmailUpdateErrorService() { } export function* updateUserPasswordService(id, data) { - yield call(updateUserPasswordRequest, id, data); + yield put(updateUserPassword(id, data)); + + let user; + try { + ({ item: user } = yield call(request, api.updateUserPassword, id, data)); + } catch (error) { + yield put(updateUserPassword.failure(id, error)); + return; + } + + yield put(updateUserPassword.success(user)); } export function* updateCurrentUserPasswordService(data) { @@ -87,7 +142,17 @@ export function* clearCurrentUserPasswordUpdateErrorService() { } export function* updateUserUsernameService(id, data) { - yield call(updateUserUsernameRequest, id, data); + yield put(updateUserUsername(id, data)); + + let user; + try { + ({ item: user } = yield call(request, api.updateUserUsername, id, data)); + } catch (error) { + yield put(updateUserUsername.failure(id, error)); + return; + } + + yield put(updateUserUsername.success(user)); } export function* updateCurrentUserUsernameService(data) { @@ -107,7 +172,17 @@ export function* clearCurrentUserUsernameUpdateErrorService() { } export function* updateUserAvatarService(id, data) { - yield call(updateUserAvatarRequest, id, data); + yield put(updateUserAvatar(id)); + + let user; + try { + ({ item: user } = yield call(request, api.updateUserAvatar, id, data)); + } catch (error) { + yield put(updateUserAvatar.failure(id, error)); + return; + } + + yield put(updateUserAvatar.success(user)); } export function* updateCurrentUserAvatarService(data) { @@ -118,14 +193,44 @@ export function* updateCurrentUserAvatarService(data) { export function* deleteUserService(id) { yield put(deleteUser(id)); - yield call(deleteUserRequest, id); + + let user; + try { + ({ item: user } = yield call(request, api.deleteUser, id)); + } catch (error) { + yield put(deleteUser.failure(id, error)); + return; + } + + yield put(deleteUser.success(user)); +} + +export function* handleUserDeleteService(user) { + const currentUserId = yield select(currentUserIdSelector); + + if (user.id === currentUserId) { + yield call(logoutService); + } + + yield put(handleUserDelete(user)); } export function* addUserToCardService(id, cardId) { const currentUserId = yield select(currentUserIdSelector); yield put(addUserToCard(id, cardId, id === currentUserId)); - yield call(createCardMembershipRequest, cardId, id); + + let cardMembership; + try { + ({ item: cardMembership } = yield call(request, api.createCardMembership, cardId, { + userId: id, + })); + } catch (error) { + yield put(addUserToCard.failure(id, cardId, error)); + return; + } + + yield put(addUserToCard.success(cardMembership)); } export function* addUserToCurrentCardService(id) { @@ -134,9 +239,22 @@ export function* addUserToCurrentCardService(id) { yield call(addUserToCardService, id, cardId); } +export function* handleUserToCardAddService(cardMembership) { + yield put(handleUserToCardAdd(cardMembership)); +} + export function* removeUserFromCardService(id, cardId) { yield put(removeUserFromCard(id, cardId)); - yield call(deleteCardMembershipRequest, cardId, id); + + let cardMembership; + try { + ({ item: cardMembership } = yield call(request, api.deleteCardMembership, cardId, id)); + } catch (error) { + yield put(removeUserFromCard.failure(id, cardId, error)); + return; + } + + yield put(removeUserFromCard.success(cardMembership)); } export function* removeUserFromCurrentCardService(id) { @@ -145,6 +263,10 @@ export function* removeUserFromCurrentCardService(id) { yield call(removeUserFromCardService, id, cardId); } +export function* handleUserFromCardRemoveService(cardMembership) { + yield put(handleUserFromCardRemove(cardMembership)); +} + export function* addUserToBoardFilterService(id, boardId) { yield put(addUserToBoardFilter(id, boardId)); } diff --git a/client/src/sagas/core/watchers/action.js b/client/src/sagas/core/watchers/action.js new file mode 100644 index 00000000..c76cff9f --- /dev/null +++ b/client/src/sagas/core/watchers/action.js @@ -0,0 +1,22 @@ +import { all, takeEvery } from 'redux-saga/effects'; + +import { + handleActionCreateService, + handleActionDeleteService, + handleActionUpdateService, +} from '../services'; +import EntryActionTypes from '../../../constants/EntryActionTypes'; + +export default function* actionWatchers() { + yield all([ + takeEvery(EntryActionTypes.ACTION_CREATE_HANDLE, ({ payload: { action } }) => + handleActionCreateService(action), + ), + takeEvery(EntryActionTypes.ACTION_UPDATE_HANDLE, ({ payload: { action } }) => + handleActionUpdateService(action), + ), + takeEvery(EntryActionTypes.ACTION_DELETE_HANDLE, ({ payload: { action } }) => + handleActionDeleteService(action), + ), + ]); +} diff --git a/client/src/sagas/core/watchers/actions.js b/client/src/sagas/core/watchers/actions.js index a40e7091..b80639f7 100644 --- a/client/src/sagas/core/watchers/actions.js +++ b/client/src/sagas/core/watchers/actions.js @@ -1,10 +1,10 @@ -import { takeLatest } from 'redux-saga/effects'; +import { takeEvery } from 'redux-saga/effects'; import { fetchActionsInCurrentCardService } from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* actionsWatchers() { - yield takeLatest(EntryActionTypes.ACTIONS_IN_CURRENT_CARD_FETCH, () => + yield takeEvery(EntryActionTypes.ACTIONS_IN_CURRENT_CARD_FETCH, () => fetchActionsInCurrentCardService(), ); } diff --git a/client/src/sagas/core/watchers/attachment.js b/client/src/sagas/core/watchers/attachment.js index 39f5a8ff..125988e6 100644 --- a/client/src/sagas/core/watchers/attachment.js +++ b/client/src/sagas/core/watchers/attachment.js @@ -1,22 +1,34 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { createAttachmentInCurrentCardService, deleteAttachmentService, + handleAttachmentCreateService, + handleAttachmentDeleteService, + handleAttachmentUpdateService, updateAttachmentService, } from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* attachmentWatchers() { yield all([ - takeLatest(EntryActionTypes.ATTACHMENT_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.ATTACHMENT_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => createAttachmentInCurrentCardService(data), ), - takeLatest(EntryActionTypes.ATTACHMENT_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.ATTACHMENT_CREATE_HANDLE, ({ payload: { attachment, requestId } }) => + handleAttachmentCreateService(attachment, requestId), + ), + takeEvery(EntryActionTypes.ATTACHMENT_UPDATE, ({ payload: { id, data } }) => updateAttachmentService(id, data), ), - takeLatest(EntryActionTypes.ATTACHMENT_DELETE, ({ payload: { id } }) => + takeEvery(EntryActionTypes.ATTACHMENT_UPDATE_HANDLE, ({ payload: { attachment } }) => + handleAttachmentUpdateService(attachment), + ), + takeEvery(EntryActionTypes.ATTACHMENT_DELETE, ({ payload: { id } }) => deleteAttachmentService(id), ), + takeEvery(EntryActionTypes.ATTACHMENT_DELETE_HANDLE, ({ payload: { attachment } }) => + handleAttachmentDeleteService(attachment), + ), ]); } diff --git a/client/src/sagas/core/watchers/board-membership.js b/client/src/sagas/core/watchers/board-membership.js new file mode 100644 index 00000000..ed909648 --- /dev/null +++ b/client/src/sagas/core/watchers/board-membership.js @@ -0,0 +1,26 @@ +import { all, takeEvery } from 'redux-saga/effects'; + +import { + createMembershipInCurrentBoardService, + deleteBoardMembershipService, + handleBoardMembershipCreateService, + handleBoardMembershipDeleteService, +} from '../services'; +import EntryActionTypes from '../../../constants/EntryActionTypes'; + +export default function* boardMembershipWatchers() { + yield all([ + takeEvery(EntryActionTypes.MEMBERSHIP_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => + createMembershipInCurrentBoardService(data), + ), + takeEvery(EntryActionTypes.BOARD_MEMBERSHIP_CREATE_HANDLE, ({ payload: { boardMembership } }) => + handleBoardMembershipCreateService(boardMembership), + ), + takeEvery(EntryActionTypes.BOARD_MEMBERSHIP_DELETE, ({ payload: { id } }) => + deleteBoardMembershipService(id), + ), + takeEvery(EntryActionTypes.BOARD_MEMBERSHIP_DELETE_HANDLE, ({ payload: { boardMembership } }) => + handleBoardMembershipDeleteService(boardMembership), + ), + ]); +} diff --git a/client/src/sagas/core/watchers/board.js b/client/src/sagas/core/watchers/board.js index 1aba2509..aca352ee 100644 --- a/client/src/sagas/core/watchers/board.js +++ b/client/src/sagas/core/watchers/board.js @@ -1,9 +1,12 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { createBoardInCurrentProjectService, deleteBoardService, - fetchBoard, + fetchBoardService, + handleBoardCreateService, + handleBoardDeleteService, + handleBoardUpdateService, moveBoardService, updateBoardService, } from '../services'; @@ -11,16 +14,25 @@ import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* boardWatchers() { yield all([ - takeLatest(EntryActionTypes.BOARD_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.BOARD_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => createBoardInCurrentProjectService(data), ), - takeLatest(EntryActionTypes.BOARD_FETCH, ({ payload: { id } }) => fetchBoard(id)), - takeLatest(EntryActionTypes.BOARD_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.BOARD_CREATE_HANDLE, ({ payload: { board } }) => + handleBoardCreateService(board), + ), + takeEvery(EntryActionTypes.BOARD_FETCH, ({ payload: { id } }) => fetchBoardService(id)), + takeEvery(EntryActionTypes.BOARD_UPDATE, ({ payload: { id, data } }) => updateBoardService(id, data), ), - takeLatest(EntryActionTypes.BOARD_MOVE, ({ payload: { id, index } }) => + takeEvery(EntryActionTypes.BOARD_UPDATE_HANDLE, ({ payload: { board } }) => + handleBoardUpdateService(board), + ), + takeEvery(EntryActionTypes.BOARD_MOVE, ({ payload: { id, index } }) => moveBoardService(id, index), ), - takeLatest(EntryActionTypes.BOARD_DELETE, ({ payload: { id } }) => deleteBoardService(id)), + takeEvery(EntryActionTypes.BOARD_DELETE, ({ payload: { id } }) => deleteBoardService(id)), + takeEvery(EntryActionTypes.BOARD_DELETE_HANDLE, ({ payload: { board } }) => + handleBoardDeleteService(board), + ), ]); } diff --git a/client/src/sagas/core/watchers/card.js b/client/src/sagas/core/watchers/card.js index f22523d6..16fac5cc 100644 --- a/client/src/sagas/core/watchers/card.js +++ b/client/src/sagas/core/watchers/card.js @@ -1,9 +1,12 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { createCardService, deleteCardService, deleteCurrentCardService, + handleCardCreateService, + handleCardDeleteService, + handleCardUpdateService, moveCardService, moveCurrentCardService, transferCardService, @@ -15,28 +18,37 @@ import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* cardWatchers() { yield all([ - takeLatest(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data } }) => + takeEvery(EntryActionTypes.CARD_CREATE, ({ payload: { listId, data } }) => createCardService(listId, data), ), - takeLatest(EntryActionTypes.CARD_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.CARD_CREATE_HANDLE, ({ payload: { card } }) => + handleCardCreateService(card), + ), + takeEvery(EntryActionTypes.CARD_UPDATE, ({ payload: { id, data } }) => updateCardService(id, data), ), - takeLatest(EntryActionTypes.CURRENT_CARD_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.CURRENT_CARD_UPDATE, ({ payload: { data } }) => updateCurrentCardService(data), ), - takeLatest(EntryActionTypes.CARD_MOVE, ({ payload: { id, listId, index } }) => + takeEvery(EntryActionTypes.CARD_UPDATE_HANDLE, ({ payload: { card } }) => + handleCardUpdateService(card), + ), + takeEvery(EntryActionTypes.CARD_MOVE, ({ payload: { id, listId, index } }) => moveCardService(id, listId, index), ), - takeLatest(EntryActionTypes.CURRENT_CARD_MOVE, ({ payload: { listId, index } }) => + takeEvery(EntryActionTypes.CURRENT_CARD_MOVE, ({ payload: { listId, index } }) => moveCurrentCardService(listId, index), ), - takeLatest(EntryActionTypes.CARD_TRANSFER, ({ payload: { id, boardId, listId, index } }) => + takeEvery(EntryActionTypes.CARD_TRANSFER, ({ payload: { id, boardId, listId, index } }) => transferCardService(id, boardId, listId, index), ), - takeLatest(EntryActionTypes.CURRENT_CARD_TRANSFER, ({ payload: { boardId, listId, index } }) => + takeEvery(EntryActionTypes.CURRENT_CARD_TRANSFER, ({ payload: { boardId, listId, index } }) => transferCurrentCardService(boardId, listId, index), ), - takeLatest(EntryActionTypes.CARD_DELETE, ({ payload: { id } }) => deleteCardService(id)), - takeLatest(EntryActionTypes.CURRENT_CARD_DELETE, () => deleteCurrentCardService()), + takeEvery(EntryActionTypes.CARD_DELETE, ({ payload: { id } }) => deleteCardService(id)), + takeEvery(EntryActionTypes.CURRENT_CARD_DELETE, () => deleteCurrentCardService()), + takeEvery(EntryActionTypes.CARD_DELETE_HANDLE, ({ payload: { card } }) => + handleCardDeleteService(card), + ), ]); } diff --git a/client/src/sagas/core/watchers/comment-action.js b/client/src/sagas/core/watchers/comment-action.js index 8c70edbd..29e64f36 100644 --- a/client/src/sagas/core/watchers/comment-action.js +++ b/client/src/sagas/core/watchers/comment-action.js @@ -1,4 +1,4 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { createCommentActionInCurrentCardService, @@ -9,13 +9,13 @@ import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* commentActionWatchers() { yield all([ - takeLatest(EntryActionTypes.COMMENT_ACTION_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.COMMENT_ACTION_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => createCommentActionInCurrentCardService(data), ), - takeLatest(EntryActionTypes.COMMENT_ACTION_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.COMMENT_ACTION_UPDATE, ({ payload: { id, data } }) => updateCommentActionService(id, data), ), - takeLatest(EntryActionTypes.COMMENT_ACTION_DELETE, ({ payload: { id } }) => + takeEvery(EntryActionTypes.COMMENT_ACTION_DELETE, ({ payload: { id } }) => deleteCommentActionService(id), ), ]); diff --git a/client/src/sagas/core/watchers/core.js b/client/src/sagas/core/watchers/core.js new file mode 100644 index 00000000..62cfd6c9 --- /dev/null +++ b/client/src/sagas/core/watchers/core.js @@ -0,0 +1,8 @@ +import { takeEvery } from 'redux-saga/effects'; + +import { initializeCoreService } from '../services'; +import EntryActionTypes from '../../../constants/EntryActionTypes'; + +export default function* coreWatchers() { + yield takeEvery(EntryActionTypes.CORE_INITIALIZE, () => initializeCoreService()); +} diff --git a/client/src/sagas/core/watchers/index.js b/client/src/sagas/core/watchers/index.js index 77be27b6..27c81c1c 100755 --- a/client/src/sagas/core/watchers/index.js +++ b/client/src/sagas/core/watchers/index.js @@ -1,17 +1,20 @@ import router from './router'; import socket from './socket'; import login from './login'; +import core from './core'; import modal from './modal'; import user from './user'; import project from './project'; -import projectMembership from './project-membership'; +import projectManager from './project-manager'; import board from './board'; +import boardMembership from './board-membership'; import label from './label'; import list from './list'; import card from './card'; import task from './task'; import attachment from './attachment'; import actions from './actions'; +import action from './action'; import commentAction from './comment-action'; import notification from './notification'; @@ -19,17 +22,20 @@ export default [ router, socket, login, + core, modal, user, project, - projectMembership, + projectManager, board, + boardMembership, label, list, card, task, attachment, actions, + action, commentAction, notification, ]; diff --git a/client/src/sagas/core/watchers/label.js b/client/src/sagas/core/watchers/label.js index a7202517..75ba0c8e 100644 --- a/client/src/sagas/core/watchers/label.js +++ b/client/src/sagas/core/watchers/label.js @@ -1,4 +1,4 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { addLabelToCardService, @@ -6,6 +6,11 @@ import { addLabelToFilterInCurrentBoardService, createLabelInCurrentBoardService, deleteLabelService, + handleLabelCreateService, + handleLabelDeleteService, + handleLabelFromCardRemoveService, + handleLabelToCardAddService, + handleLabelUpdateService, removeLabelFromCardService, removeLabelFromCurrentCardService, removeLabelFromFilterInCurrentBoardService, @@ -15,29 +20,44 @@ import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* labelWatchers() { yield all([ - takeLatest(EntryActionTypes.LABEL_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.LABEL_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => createLabelInCurrentBoardService(data), ), - takeLatest(EntryActionTypes.LABEL_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.LABEL_CREATE_HANDLE, ({ payload: { label } }) => + handleLabelCreateService(label), + ), + takeEvery(EntryActionTypes.LABEL_UPDATE, ({ payload: { id, data } }) => updateLabelService(id, data), ), - takeLatest(EntryActionTypes.LABEL_DELETE, ({ payload: { id } }) => deleteLabelService(id)), - takeLatest(EntryActionTypes.LABEL_TO_CARD_ADD, ({ payload: { id, cardId } }) => + takeEvery(EntryActionTypes.LABEL_UPDATE_HANDLE, ({ payload: { label } }) => + handleLabelUpdateService(label), + ), + takeEvery(EntryActionTypes.LABEL_DELETE, ({ payload: { id } }) => deleteLabelService(id)), + takeEvery(EntryActionTypes.LABEL_DELETE_HANDLE, ({ payload: { label } }) => + handleLabelDeleteService(label), + ), + takeEvery(EntryActionTypes.LABEL_TO_CARD_ADD, ({ payload: { id, cardId } }) => addLabelToCardService(id, cardId), ), - takeLatest(EntryActionTypes.LABEL_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => + takeEvery(EntryActionTypes.LABEL_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => addLabelToCurrentCardService(id), ), - takeLatest(EntryActionTypes.LABEL_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => + takeEvery(EntryActionTypes.LABEL_TO_CARD_ADD_HANDLE, ({ payload: { cardLabel } }) => + handleLabelToCardAddService(cardLabel), + ), + takeEvery(EntryActionTypes.LABEL_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => removeLabelFromCardService(id, cardId), ), - takeLatest(EntryActionTypes.LABEL_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => + takeEvery(EntryActionTypes.LABEL_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => removeLabelFromCurrentCardService(id), ), - takeLatest(EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => + takeEvery(EntryActionTypes.LABEL_FROM_CARD_REMOVE_HANDLE, ({ payload: { cardLabel } }) => + handleLabelFromCardRemoveService(cardLabel), + ), + takeEvery(EntryActionTypes.LABEL_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => addLabelToFilterInCurrentBoardService(id), ), - takeLatest(EntryActionTypes.LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => + takeEvery(EntryActionTypes.LABEL_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => removeLabelFromFilterInCurrentBoardService(id), ), ]); diff --git a/client/src/sagas/core/watchers/list.js b/client/src/sagas/core/watchers/list.js index 6b3e8bad..67462f8a 100644 --- a/client/src/sagas/core/watchers/list.js +++ b/client/src/sagas/core/watchers/list.js @@ -1,8 +1,11 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { createListInCurrentBoardService, deleteListService, + handleListCreateService, + handleListDeleteService, + handleListUpdateService, moveListService, updateListService, } from '../services'; @@ -10,15 +13,24 @@ import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* listWatchers() { yield all([ - takeLatest(EntryActionTypes.LIST_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.LIST_IN_CURRENT_BOARD_CREATE, ({ payload: { data } }) => createListInCurrentBoardService(data), ), - takeLatest(EntryActionTypes.LIST_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.LIST_CREATE_HANDLE, ({ payload: { list } }) => + handleListCreateService(list), + ), + takeEvery(EntryActionTypes.LIST_UPDATE, ({ payload: { id, data } }) => updateListService(id, data), ), - takeLatest(EntryActionTypes.LIST_MOVE, ({ payload: { id, index } }) => + takeEvery(EntryActionTypes.LIST_UPDATE_HANDLE, ({ payload: { list } }) => + handleListUpdateService(list), + ), + takeEvery(EntryActionTypes.LIST_MOVE, ({ payload: { id, index } }) => moveListService(id, index), ), - takeLatest(EntryActionTypes.LIST_DELETE, ({ payload: { id } }) => deleteListService(id)), + takeEvery(EntryActionTypes.LIST_DELETE, ({ payload: { id } }) => deleteListService(id)), + takeEvery(EntryActionTypes.LIST_DELETE_HANDLE, ({ payload: { list } }) => + handleListDeleteService(list), + ), ]); } diff --git a/client/src/sagas/core/watchers/login.js b/client/src/sagas/core/watchers/login.js index e0519f45..84fd40c5 100644 --- a/client/src/sagas/core/watchers/login.js +++ b/client/src/sagas/core/watchers/login.js @@ -1,8 +1,8 @@ -import { takeLatest } from 'redux-saga/effects'; +import { takeEvery } from 'redux-saga/effects'; import { logoutService } from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* loginWatchers() { - yield takeLatest(EntryActionTypes.LOGOUT, () => logoutService()); + yield takeEvery(EntryActionTypes.LOGOUT, () => logoutService()); } diff --git a/client/src/sagas/core/watchers/modal.js b/client/src/sagas/core/watchers/modal.js index d22dc781..50b6956a 100644 --- a/client/src/sagas/core/watchers/modal.js +++ b/client/src/sagas/core/watchers/modal.js @@ -1,11 +1,11 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { closeModalService, openModalService } from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* modalWatchers() { yield all([ - takeLatest(EntryActionTypes.MODAL_OPEN, ({ payload: { type } }) => openModalService(type)), - takeLatest(EntryActionTypes.MODAL_CLOSE, () => closeModalService()), + takeEvery(EntryActionTypes.MODAL_OPEN, ({ payload: { type } }) => openModalService(type)), + takeEvery(EntryActionTypes.MODAL_CLOSE, () => closeModalService()), ]); } diff --git a/client/src/sagas/core/watchers/notification.js b/client/src/sagas/core/watchers/notification.js index 83aeec48..93fb5ef3 100644 --- a/client/src/sagas/core/watchers/notification.js +++ b/client/src/sagas/core/watchers/notification.js @@ -1,10 +1,22 @@ -import { takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; -import { deleteNotificationService } from '../services'; +import { + deleteNotificationService, + handleNotificationCreateService, + handleNotificationDeleteService, +} from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* notificationWatchers() { - yield takeLatest(EntryActionTypes.NOTIFICATION_DELETE, ({ payload: { id } }) => - deleteNotificationService(id), - ); + yield all([ + takeEvery(EntryActionTypes.NOTIFICATION_CREATE_HANDLE, ({ payload: { notification } }) => + handleNotificationCreateService(notification), + ), + takeEvery(EntryActionTypes.NOTIFICATION_DELETE, ({ payload: { id } }) => + deleteNotificationService(id), + ), + takeEvery(EntryActionTypes.NOTIFICATION_DELETE_HANDLE, ({ payload: { notification } }) => + handleNotificationDeleteService(notification), + ), + ]); } diff --git a/client/src/sagas/core/watchers/project-manager.js b/client/src/sagas/core/watchers/project-manager.js new file mode 100644 index 00000000..18c65a7b --- /dev/null +++ b/client/src/sagas/core/watchers/project-manager.js @@ -0,0 +1,26 @@ +import { all, takeEvery } from 'redux-saga/effects'; + +import { + createManagerInCurrentProjectService, + deleteProjectManagerService, + handleProjectManagerCreateService, + handleProjectManagerDeleteService, +} from '../services'; +import EntryActionTypes from '../../../constants/EntryActionTypes'; + +export default function* projectManagerWatchers() { + yield all([ + takeEvery(EntryActionTypes.MANAGER_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => + createManagerInCurrentProjectService(data), + ), + takeEvery(EntryActionTypes.PROJECT_MANAGER_CREATE_HANDLE, ({ payload: { projectManager } }) => + handleProjectManagerCreateService(projectManager), + ), + takeEvery(EntryActionTypes.PROJECT_MANAGER_DELETE, ({ payload: { id } }) => + deleteProjectManagerService(id), + ), + takeEvery(EntryActionTypes.PROJECT_MANAGER_DELETE_HANDLE, ({ payload: { projectManager } }) => + handleProjectManagerDeleteService(projectManager), + ), + ]); +} diff --git a/client/src/sagas/core/watchers/project-membership.js b/client/src/sagas/core/watchers/project-membership.js deleted file mode 100644 index 4a46505c..00000000 --- a/client/src/sagas/core/watchers/project-membership.js +++ /dev/null @@ -1,18 +0,0 @@ -import { all, takeLatest } from 'redux-saga/effects'; - -import { - createMembershipInCurrentProjectService, - deleteProjectMembershipService, -} from '../services'; -import EntryActionTypes from '../../../constants/EntryActionTypes'; - -export default function* projectMembershipWatchers() { - yield all([ - takeLatest(EntryActionTypes.MEMBERSHIP_IN_CURRENT_PROJECT_CREATE, ({ payload: { data } }) => - createMembershipInCurrentProjectService(data), - ), - takeLatest(EntryActionTypes.PROJECT_MEMBERSHIP_DELETE, ({ payload: { id } }) => - deleteProjectMembershipService(id), - ), - ]); -} diff --git a/client/src/sagas/core/watchers/project.js b/client/src/sagas/core/watchers/project.js index b24f1910..8283de1a 100644 --- a/client/src/sagas/core/watchers/project.js +++ b/client/src/sagas/core/watchers/project.js @@ -1,8 +1,11 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { createProjectService, deleteCurrentProjectService, + handleProjectCreateService, + handleProjectDeleteService, + handleProjectUpdateService, updateCurrentProjectBackgroundImageService, updateCurrentProjectService, } from '../services'; @@ -10,15 +13,24 @@ import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* projectWatchers() { yield all([ - takeLatest(EntryActionTypes.PROJECT_CREATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.PROJECT_CREATE, ({ payload: { data } }) => createProjectService(data), ), - takeLatest(EntryActionTypes.CURRENT_PROJECT_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.PROJECT_CREATE_HANDLE, ({ payload: { project } }) => + handleProjectCreateService(project), + ), + takeEvery(EntryActionTypes.CURRENT_PROJECT_UPDATE, ({ payload: { data } }) => updateCurrentProjectService(data), ), - takeLatest(EntryActionTypes.CURRENT_PROJECT_BACKGROUND_IMAGE_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.PROJECT_UPDATE_HANDLE, ({ payload: { project } }) => + handleProjectUpdateService(project), + ), + takeEvery(EntryActionTypes.CURRENT_PROJECT_BACKGROUND_IMAGE_UPDATE, ({ payload: { data } }) => updateCurrentProjectBackgroundImageService(data), ), - takeLatest(EntryActionTypes.CURRENT_PROJECT_DELETE, () => deleteCurrentProjectService()), + takeEvery(EntryActionTypes.CURRENT_PROJECT_DELETE, () => deleteCurrentProjectService()), + takeEvery(EntryActionTypes.PROJECT_DELETE_HANDLE, ({ payload: { project } }) => + handleProjectDeleteService(project), + ), ]); } diff --git a/client/src/sagas/core/watchers/router.js b/client/src/sagas/core/watchers/router.js index 75c58e4a..c25472ab 100755 --- a/client/src/sagas/core/watchers/router.js +++ b/client/src/sagas/core/watchers/router.js @@ -1,8 +1,8 @@ import { takeEvery } from 'redux-saga/effects'; import { LOCATION_CHANGE } from 'connected-react-router'; -import { locationChangedService } from '../services'; +import { handleLocationChangeService } from '../services'; export default function* routerWatchers() { - yield takeEvery(LOCATION_CHANGE, () => locationChangedService()); + yield takeEvery(LOCATION_CHANGE, () => handleLocationChangeService()); } diff --git a/client/src/sagas/core/watchers/socket.js b/client/src/sagas/core/watchers/socket.js index 5b94278b..0bbc18ac 100644 --- a/client/src/sagas/core/watchers/socket.js +++ b/client/src/sagas/core/watchers/socket.js @@ -1,206 +1,211 @@ import { eventChannel } from 'redux-saga'; -import { call, cancelled, take } from 'redux-saga/effects'; +import { all, call, cancelled, put, take, takeEvery } from 'redux-saga/effects'; +import { handleSocketDisconnectService, handleSocketReconnectService } from '../services'; import { - createActionReceivedService, - createAttachmentReceivedService, - createBoardReceivedService, - createCardLabelReceivedService, - createCardMembershipReceivedService, - createCardReceivedService, - createLabelReceivedService, - createListReceivedService, - createNotificationReceivedService, - createProjectMembershipReceivedService, - createProjectReceivedService, - createTaskReceivedService, - createUserReceivedService, - deleteActionReceivedService, - deleteAttachmentReceivedService, - deleteCardLabelReceivedService, - deleteCardMembershipReceivedService, - deleteCardReceivedService, - deleteBoardReceivedService, - deleteLabelReceivedService, - deleteListReceivedService, - deleteNotificationReceivedService, - deleteProjectMembershipReceivedService, - deleteProjectReceivedService, - deleteTaskReceivedService, - deleteUserReceivedService, - socketDisconnectedService, - socketReconnectedService, - updateActionReceivedService, - updateAttachmentReceivedService, - updateBoardReceivedService, - updateCardReceivedService, - updateLabelReceivedService, - updateListReceivedService, - updateProjectReceivedService, - updateTaskReceivedService, - updateUserReceivedService, -} from '../services'; + handleProjectManagerCreate as handleProjectManagerCreateAction, + handleProjectManagerDelete as handleProjectManagerDeleteAction, + handleBoardCreate as handleBoardCreateAction, + handleBoardUpdate as handleBoardUpdateAction, + handleBoardDelete as handleBoardDeleteAction, + handleBoardMembershipCreate as handleBoardMembershipCreateAction, + handleBoardMembershipDelete as handleBoardMembershipDeleteAction, + handleListCreate as handleListCreateAction, + handleListUpdate as handleListUpdateAction, + handleListDelete as handleListDeleteAction, + handleLabelCreate as handleLabelCreateAction, + handleLabelUpdate as handleLabelUpdateAction, + handleLabelDelete as handleLabelDeleteAction, + handleCardCreate as handleCardCreateAction, + handleCardUpdate as handleCardUpdateAction, + handleCardDelete as handleCardDeleteAction, + handleUserToCardAdd as handleUserToCardAddAction, + handleUserFromCardRemove as handleUserFromCardRemoveAction, + handleLabelToCardAdd as handleLabelToCardAddAction, + handleLabelFromCardRemove as handleLabelFromCardRemoveAction, + handleTaskCreate as handleTaskCreateAction, + handleTaskUpdate as handleTaskUpdateAction, + handleTaskDelete as handleTaskDeleteAction, + handleAttachmentCreate as handleAttachmentCreateAction, + handleAttachmentUpdate as handleAttachmentUpdateAction, + handleAttachmentDelete as handleAttachmentDeleteAction, + handleActionCreate as handleActionCreateAction, + handleActionUpdate as handleActionUpdateAction, + handleActionDelete as handleActionDeleteAction, + handleNotificationCreate as handleNotificationCreateAction, + handleNotificationDelete as handleNotificationDeleteAction, + handleSocketDisconnect as handleSocketDisconnectAction, + handleUserCreate as handleUserCreateAction, + handleUserUpdate as handleUserUpdateAction, + handleUserDelete as handleUserDeleteAction, + handleProjectCreate as handleProjectCreateAction, + handleProjectUpdate as handleProjectUpdateAction, + handleProjectDelete as handleProjectDeleteAction, + handleSocketReconnect as handleSocketReconnectAction, +} from '../../../actions/entry'; import api, { socket } from '../../../api'; +import EntryActionTypes from '../../../constants/EntryActionTypes'; const createSocketEventsChannel = () => eventChannel((emit) => { + const handleDisconnect = () => { + emit(handleSocketDisconnectAction()); + }; + const handleReconnect = () => { - emit([socketReconnectedService]); + emit(handleSocketReconnectAction()); }; const handleUserCreate = ({ item }) => { - emit([createUserReceivedService, item]); + emit(handleUserCreateAction(item)); }; const handleUserUpdate = ({ item }) => { - emit([updateUserReceivedService, item]); + emit(handleUserUpdateAction(item)); }; const handleUserDelete = ({ item }) => { - emit([deleteUserReceivedService, item]); + emit(handleUserDeleteAction(item)); }; - const handleProjectCreate = ({ item, included: { users, projectMemberships, boards } }) => { - emit([createProjectReceivedService, item, users, projectMemberships, boards]); + const handleProjectCreate = ({ item }) => { + emit(handleProjectCreateAction(item)); }; const handleProjectUpdate = ({ item }) => { - emit([updateProjectReceivedService, item]); + emit(handleProjectUpdateAction(item)); }; const handleProjectDelete = ({ item }) => { - emit([deleteProjectReceivedService, item]); + emit(handleProjectDeleteAction(item)); }; - const handleProjectMembershipCreate = ({ item, included: { users } }) => { - emit([createProjectMembershipReceivedService, item, users[0]]); + const handleProjectManagerCreate = ({ item }) => { + emit(handleProjectManagerCreateAction(item)); }; - const handleProjectMembershipDelete = ({ item }) => { - emit([deleteProjectMembershipReceivedService, item]); + const handleProjectManagerDelete = ({ item }) => { + emit(handleProjectManagerDeleteAction(item)); }; - const handleBoardCreate = ({ item, included: { lists, labels } }) => { - emit([createBoardReceivedService, item, lists, labels]); + const handleBoardCreate = ({ item }) => { + emit(handleBoardCreateAction(item)); }; const handleBoardUpdate = ({ item }) => { - emit([updateBoardReceivedService, item]); + emit(handleBoardUpdateAction(item)); }; const handleBoardDelete = ({ item }) => { - emit([deleteBoardReceivedService, item]); + emit(handleBoardDeleteAction(item)); + }; + + const handleBoardMembershipCreate = ({ item }) => { + emit(handleBoardMembershipCreateAction(item)); + }; + + const handleBoardMembershipDelete = ({ item }) => { + emit(handleBoardMembershipDeleteAction(item)); }; const handleListCreate = ({ item }) => { - emit([createListReceivedService, item]); + emit(handleListCreateAction(item)); }; const handleListUpdate = ({ item }) => { - emit([updateListReceivedService, item]); + emit(handleListUpdateAction(item)); }; const handleListDelete = ({ item }) => { - emit([deleteListReceivedService, item]); + emit(handleListDeleteAction(item)); }; const handleLabelCreate = ({ item }) => { - emit([createLabelReceivedService, item]); + emit(handleLabelCreateAction(item)); }; const handleLabelUpdate = ({ item }) => { - emit([updateLabelReceivedService, item]); + emit(handleLabelUpdateAction(item)); }; const handleLabelDelete = ({ item }) => { - emit([deleteLabelReceivedService, item]); + emit(handleLabelDeleteAction(item)); }; - const handleCardCreate = api.makeHandleCardCreate( - ({ item, included: { cardMemberships, cardLabels, tasks, attachments } }) => { - emit([createCardReceivedService, item, cardMemberships, cardLabels, tasks, attachments]); - }, - ); + const handleCardCreate = api.makeHandleCardCreate(({ item }) => { + emit(handleCardCreateAction(item)); + }); const handleCardUpdate = api.makeHandleCardUpdate(({ item }) => { - emit([updateCardReceivedService, item]); + emit(handleCardUpdateAction(item)); }); const handleCardDelete = api.makeHandleCardDelete(({ item }) => { - emit([deleteCardReceivedService, item]); + emit(handleCardDeleteAction(item)); }); - const handleCardMembershipCreate = ({ item }) => { - emit([createCardMembershipReceivedService, item]); + const handleUserToCardAdd = ({ item }) => { + emit(handleUserToCardAddAction(item)); }; - const handleCardMembershipDelete = ({ item }) => { - emit([deleteCardMembershipReceivedService, item]); + const handleUserFromCardRemove = ({ item }) => { + emit(handleUserFromCardRemoveAction(item)); }; - const handleCardLabelCreate = ({ item }) => { - emit([createCardLabelReceivedService, item]); + const handleLabelToCardAdd = ({ item }) => { + emit(handleLabelToCardAddAction(item)); }; - const handleCardLabelDelete = ({ item }) => { - emit([deleteCardLabelReceivedService, item]); + const handleLabelFromCardRemove = ({ item }) => { + emit(handleLabelFromCardRemoveAction(item)); }; const handleTaskCreate = ({ item }) => { - emit([createTaskReceivedService, item]); + emit(handleTaskCreateAction(item)); }; const handleTaskUpdate = ({ item }) => { - emit([updateTaskReceivedService, item]); + emit(handleTaskUpdateAction(item)); }; const handleTaskDelete = ({ item }) => { - emit([deleteTaskReceivedService, item]); + emit(handleTaskDeleteAction(item)); }; const handleAttachmentCreate = api.makeHandleAttachmentCreate(({ item, requestId }) => { - emit([createAttachmentReceivedService, item, requestId]); + emit(handleAttachmentCreateAction(item, requestId)); }); const handleAttachmentUpdate = api.makeHandleAttachmentUpdate(({ item }) => { - emit([updateAttachmentReceivedService, item]); + emit(handleAttachmentUpdateAction(item)); }); const handleAttachmentDelete = api.makeHandleAttachmentDelete(({ item }) => { - emit([deleteAttachmentReceivedService, item]); + emit(handleAttachmentDeleteAction(item)); }); const handleActionCreate = api.makeHandleActionCreate(({ item }) => { - emit([createActionReceivedService, item]); + emit(handleActionCreateAction(item)); }); const handleActionUpdate = api.makeHandleActionUpdate(({ item }) => { - emit([updateActionReceivedService, item]); + emit(handleActionUpdateAction(item)); }); const handleActionDelete = api.makeHandleActionDelete(({ item }) => { - emit([deleteActionReceivedService, item]); + emit(handleActionDeleteAction(item)); }); - const handleNotificationCreate = api.makeHandleNotificationCreate( - ({ item, included: { users, cards, actions } }) => { - emit([createNotificationReceivedService, item, users[0], cards[0], actions[0]]); - }, - ); - - const handleNotificationDelete = ({ item }) => { - emit([deleteNotificationReceivedService, item]); + const handleNotificationCreate = ({ item }) => { + emit(handleNotificationCreateAction(item)); }; - const handleDisconnect = () => { - socket.off('disconnect', handleDisconnect); - - emit([socketDisconnectedService]); - - socket.on('reconnect', handleReconnect); + const handleNotificationDelete = ({ item }) => { + emit(handleNotificationDeleteAction(item)); }; socket.on('disconnect', handleDisconnect); + socket.on('reconnect', handleReconnect); socket.on('userCreate', handleUserCreate); socket.on('userUpdate', handleUserUpdate); @@ -210,13 +215,16 @@ const createSocketEventsChannel = () => socket.on('projectUpdate', handleProjectUpdate); socket.on('projectDelete', handleProjectDelete); - socket.on('projectMembershipCreate', handleProjectMembershipCreate); - socket.on('projectMembershipDelete', handleProjectMembershipDelete); + socket.on('projectManagerCreate', handleProjectManagerCreate); + socket.on('projectManagerDelete', handleProjectManagerDelete); socket.on('boardCreate', handleBoardCreate); socket.on('boardUpdate', handleBoardUpdate); socket.on('boardDelete', handleBoardDelete); + socket.on('boardMembershipCreate', handleBoardMembershipCreate); + socket.on('boardMembershipDelete', handleBoardMembershipDelete); + socket.on('listCreate', handleListCreate); socket.on('listUpdate', handleListUpdate); socket.on('listDelete', handleListDelete); @@ -229,11 +237,11 @@ const createSocketEventsChannel = () => socket.on('cardUpdate', handleCardUpdate); socket.on('cardDelete', handleCardDelete); - socket.on('cardMembershipCreate', handleCardMembershipCreate); - socket.on('cardMembershipDelete', handleCardMembershipDelete); + socket.on('cardMembershipCreate', handleUserToCardAdd); + socket.on('cardMembershipDelete', handleUserFromCardRemove); - socket.on('cardLabelCreate', handleCardLabelCreate); - socket.on('cardLabelDelete', handleCardLabelDelete); + socket.on('cardLabelCreate', handleLabelToCardAdd); + socket.on('cardLabelDelete', handleLabelFromCardRemove); socket.on('taskCreate', handleTaskCreate); socket.on('taskUpdate', handleTaskUpdate); @@ -262,13 +270,16 @@ const createSocketEventsChannel = () => socket.off('projectUpdate', handleProjectUpdate); socket.off('projectDelete', handleProjectDelete); - socket.off('projectMembershipCreate', handleProjectMembershipCreate); - socket.off('projectMembershipDelete', handleProjectMembershipDelete); + socket.off('projectManagerCreate', handleProjectManagerCreate); + socket.off('projectManagerDelete', handleProjectManagerDelete); socket.off('boardCreate', handleBoardCreate); socket.off('boardUpdate', handleBoardUpdate); socket.off('boardDelete', handleBoardDelete); + socket.off('boardMembershipCreate', handleBoardMembershipCreate); + socket.off('boardMembershipDelete', handleBoardMembershipDelete); + socket.off('listCreate', handleListCreate); socket.off('listUpdate', handleListUpdate); socket.off('listDelete', handleListDelete); @@ -281,11 +292,11 @@ const createSocketEventsChannel = () => socket.off('cardUpdate', handleCardUpdate); socket.off('cardDelete', handleCardDelete); - socket.off('cardMembershipCreate', handleCardMembershipCreate); - socket.off('cardMembershipDelete', handleCardMembershipDelete); + socket.off('cardMembershipCreate', handleUserToCardAdd); + socket.off('cardMembershipDelete', handleUserFromCardRemove); - socket.off('cardLabelCreate', handleCardLabelCreate); - socket.off('cardLabelDelete', handleCardLabelDelete); + socket.off('cardLabelCreate', handleLabelToCardAdd); + socket.off('cardLabelDelete', handleLabelFromCardRemove); socket.off('taskCreate', handleTaskCreate); socket.off('taskUpdate', handleTaskUpdate); @@ -305,13 +316,20 @@ const createSocketEventsChannel = () => }); export default function* socketWatchers() { + yield all([ + yield takeEvery(EntryActionTypes.SOCKET_DISCONNECT_HANDLE, () => + handleSocketDisconnectService(), + ), + yield takeEvery(EntryActionTypes.SOCKET_RECONNECT_HANDLE, () => handleSocketReconnectService()), + ]); + const socketEventsChannel = yield call(createSocketEventsChannel); try { while (true) { - const args = yield take(socketEventsChannel); + const action = yield take(socketEventsChannel); - yield call(...args); + yield put(action); } } finally { if (yield cancelled()) { diff --git a/client/src/sagas/core/watchers/task.js b/client/src/sagas/core/watchers/task.js index 4a0abae7..934e3247 100644 --- a/client/src/sagas/core/watchers/task.js +++ b/client/src/sagas/core/watchers/task.js @@ -1,16 +1,32 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; -import { createTaskInCurrentCardService, deleteTaskService, updateTaskService } from '../services'; +import { + createTaskInCurrentCardService, + deleteTaskService, + handleTaskCreateService, + handleTaskDeleteService, + handleTaskUpdateService, + updateTaskService, +} from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* taskWatchers() { yield all([ - takeLatest(EntryActionTypes.TASK_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.TASK_IN_CURRENT_CARD_CREATE, ({ payload: { data } }) => createTaskInCurrentCardService(data), ), - takeLatest(EntryActionTypes.TASK_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.TASK_CREATE_HANDLE, ({ payload: { task } }) => + handleTaskCreateService(task), + ), + takeEvery(EntryActionTypes.TASK_UPDATE, ({ payload: { id, data } }) => updateTaskService(id, data), ), - takeLatest(EntryActionTypes.TASK_DELETE, ({ payload: { id } }) => deleteTaskService(id)), + takeEvery(EntryActionTypes.TASK_UPDATE_HANDLE, ({ payload: { task } }) => + handleTaskUpdateService(task), + ), + takeEvery(EntryActionTypes.TASK_DELETE, ({ payload: { id } }) => deleteTaskService(id)), + takeEvery(EntryActionTypes.TASK_DELETE_HANDLE, ({ payload: { task } }) => + handleTaskDeleteService(task), + ), ]); } diff --git a/client/src/sagas/core/watchers/user.js b/client/src/sagas/core/watchers/user.js index 70776d1e..7042432c 100644 --- a/client/src/sagas/core/watchers/user.js +++ b/client/src/sagas/core/watchers/user.js @@ -1,4 +1,4 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { addUserToCardService, @@ -19,57 +19,77 @@ import { updateCurrentUserPasswordService, updateCurrentUserService, updateCurrentUserUsernameService, + handleUserCreateService, + handleUserUpdateService, + handleUserDeleteService, + handleUserToCardAddService, + handleUserFromCardRemoveService, } from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* userWatchers() { yield all([ - takeLatest(EntryActionTypes.USER_CREATE, ({ payload: { data } }) => createUserService(data)), - takeLatest(EntryActionTypes.USER_CREATE_ERROR_CLEAR, () => clearUserCreateErrorService()), - takeLatest(EntryActionTypes.USER_UPDATE, ({ payload: { id, data } }) => + takeEvery(EntryActionTypes.USER_CREATE, ({ payload: { data } }) => createUserService(data)), + takeEvery(EntryActionTypes.USER_CREATE_HANDLE, ({ payload: { user } }) => + handleUserCreateService(user), + ), + takeEvery(EntryActionTypes.USER_CREATE_ERROR_CLEAR, () => clearUserCreateErrorService()), + takeEvery(EntryActionTypes.USER_UPDATE, ({ payload: { id, data } }) => updateUserService(id, data), ), - takeLatest(EntryActionTypes.CURRENT_USER_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.CURRENT_USER_UPDATE, ({ payload: { data } }) => updateCurrentUserService(data), ), - takeLatest(EntryActionTypes.CURRENT_USER_EMAIL_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.USER_UPDATE_HANDLE, ({ payload: { user } }) => + handleUserUpdateService(user), + ), + takeEvery(EntryActionTypes.CURRENT_USER_EMAIL_UPDATE, ({ payload: { data } }) => updateCurrentUserEmailService(data), ), - takeLatest(EntryActionTypes.CURRENT_USER_EMAIL_UPDATE_ERROR_CLEAR, () => + takeEvery(EntryActionTypes.CURRENT_USER_EMAIL_UPDATE_ERROR_CLEAR, () => clearCurrentUserEmailUpdateErrorService(), ), - takeLatest(EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE, ({ payload: { data } }) => updateCurrentUserPasswordService(data), ), - takeLatest(EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE_ERROR_CLEAR, () => + takeEvery(EntryActionTypes.CURRENT_USER_PASSWORD_UPDATE_ERROR_CLEAR, () => clearCurrentUserPasswordUpdateErrorService(), ), - takeLatest(EntryActionTypes.CURRENT_USER_USERNAME_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.CURRENT_USER_USERNAME_UPDATE, ({ payload: { data } }) => updateCurrentUserUsernameService(data), ), - takeLatest(EntryActionTypes.CURRENT_USER_USERNAME_UPDATE_ERROR_CLEAR, () => + takeEvery(EntryActionTypes.CURRENT_USER_USERNAME_UPDATE_ERROR_CLEAR, () => clearCurrentUserUsernameUpdateErrorService(), ), - takeLatest(EntryActionTypes.CURRENT_USER_AVATAR_UPDATE, ({ payload: { data } }) => + takeEvery(EntryActionTypes.CURRENT_USER_AVATAR_UPDATE, ({ payload: { data } }) => updateCurrentUserAvatarService(data), ), - takeLatest(EntryActionTypes.USER_DELETE, ({ payload: { id } }) => deleteUserService(id)), - takeLatest(EntryActionTypes.USER_TO_CARD_ADD, ({ payload: { id, cardId } }) => + takeEvery(EntryActionTypes.USER_DELETE, ({ payload: { id } }) => deleteUserService(id)), + takeEvery(EntryActionTypes.USER_DELETE_HANDLE, ({ payload: { user } }) => + handleUserDeleteService(user), + ), + takeEvery(EntryActionTypes.USER_TO_CARD_ADD, ({ payload: { id, cardId } }) => addUserToCardService(id, cardId), ), - takeLatest(EntryActionTypes.USER_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => + takeEvery(EntryActionTypes.USER_TO_CURRENT_CARD_ADD, ({ payload: { id } }) => addUserToCurrentCardService(id), ), - takeLatest(EntryActionTypes.USER_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => + takeEvery(EntryActionTypes.USER_TO_CARD_ADD_HANDLE, ({ payload: { cardMembership } }) => + handleUserToCardAddService(cardMembership), + ), + takeEvery(EntryActionTypes.USER_FROM_CARD_REMOVE, ({ payload: { id, cardId } }) => removeUserFromCardService(id, cardId), ), - takeLatest(EntryActionTypes.USER_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => + takeEvery(EntryActionTypes.USER_FROM_CURRENT_CARD_REMOVE, ({ payload: { id } }) => removeUserFromCurrentCardService(id), ), - takeLatest(EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => + takeEvery(EntryActionTypes.USER_FROM_CARD_REMOVE_HANDLE, ({ payload: { cardMembership } }) => + handleUserFromCardRemoveService(cardMembership), + ), + takeEvery(EntryActionTypes.USER_TO_FILTER_IN_CURRENT_BOARD_ADD, ({ payload: { id } }) => addUserToFilterInCurrentBoardService(id), ), - takeLatest(EntryActionTypes.USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => + takeEvery(EntryActionTypes.USER_FROM_FILTER_IN_CURRENT_BOARD_REMOVE, ({ payload: { id } }) => removeUserFromFilterInCurrentBoardService(id), ), ]); diff --git a/client/src/sagas/login/index.js b/client/src/sagas/login/index.js index 4a437204..5ebd39c1 100755 --- a/client/src/sagas/login/index.js +++ b/client/src/sagas/login/index.js @@ -10,7 +10,7 @@ export default function* loginSaga() { const { payload: { accessToken }, - } = yield take(ActionTypes.AUTHENTICATE_SUCCEEDED); + } = yield take(ActionTypes.AUTHENTICATE__SUCCESS); yield cancel(watcherTasks); diff --git a/client/src/sagas/login/requests/index.js b/client/src/sagas/login/requests/index.js deleted file mode 100644 index 6cc1e6e2..00000000 --- a/client/src/sagas/login/requests/index.js +++ /dev/null @@ -1 +0,0 @@ -export * from './login'; diff --git a/client/src/sagas/login/requests/login.js b/client/src/sagas/login/requests/login.js deleted file mode 100755 index db6eeaa7..00000000 --- a/client/src/sagas/login/requests/login.js +++ /dev/null @@ -1,29 +0,0 @@ -import { call, put } from 'redux-saga/effects'; - -import { authenticateFailed, authenticateRequested, authenticateSucceeded } from '../../../actions'; -import api from '../../../api'; - -// eslint-disable-next-line import/prefer-default-export -export function* authenticateRequest(data) { - yield put(authenticateRequested(data)); - - try { - const { item } = yield call(api.createAccessToken, data); - - const action = authenticateSucceeded(item); - yield put(action); - - return { - success: true, - payload: action.payload, - }; - } catch (error) { - const action = authenticateFailed(error); - yield put(action); - - return { - success: false, - payload: action.payload, - }; - } -} diff --git a/client/src/sagas/login/services/login.js b/client/src/sagas/login/services/login.js index 0a6b6a74..38c41623 100644 --- a/client/src/sagas/login/services/login.js +++ b/client/src/sagas/login/services/login.js @@ -1,11 +1,20 @@ import { call, put } from 'redux-saga/effects'; -import { authenticateRequest } from '../requests'; import { authenticate, clearAuthenticateError } from '../../../actions'; +import api from '../../../api'; export function* authenticateService(data) { yield put(authenticate(data)); - yield call(authenticateRequest, data); + + let accessToken; + try { + ({ item: accessToken } = yield call(api.createAccessToken, data)); + } catch (error) { + yield put(authenticate.failure(error)); + return; + } + + yield put(authenticate.success(accessToken)); } export function* clearAuthenticateErrorService() { diff --git a/client/src/sagas/login/services/router.js b/client/src/sagas/login/services/router.js index 1a9d9e8e..3ca6ed2e 100644 --- a/client/src/sagas/login/services/router.js +++ b/client/src/sagas/login/services/router.js @@ -12,7 +12,7 @@ export function* goToRootService() { yield put(push(Paths.ROOT)); } -export function* locationChangedService() { +export function* handleLocationChangeService() { const pathsMatch = yield select(pathsMatchSelector); if (!pathsMatch) { diff --git a/client/src/sagas/login/watchers/login.js b/client/src/sagas/login/watchers/login.js index f4ae09ec..aed70190 100644 --- a/client/src/sagas/login/watchers/login.js +++ b/client/src/sagas/login/watchers/login.js @@ -1,11 +1,11 @@ -import { all, takeLatest } from 'redux-saga/effects'; +import { all, takeEvery } from 'redux-saga/effects'; import { authenticateService, clearAuthenticateErrorService } from '../services'; import EntryActionTypes from '../../../constants/EntryActionTypes'; export default function* loginWatchers() { yield all([ - takeLatest(EntryActionTypes.AUTHENTICATE, ({ payload: { data } }) => authenticateService(data)), - takeLatest(EntryActionTypes.AUTHENTICATE_ERROR_CLEAR, () => clearAuthenticateErrorService()), + takeEvery(EntryActionTypes.AUTHENTICATE, ({ payload: { data } }) => authenticateService(data)), + takeEvery(EntryActionTypes.AUTHENTICATE_ERROR_CLEAR, () => clearAuthenticateErrorService()), ]); } diff --git a/client/src/sagas/login/watchers/router.js b/client/src/sagas/login/watchers/router.js index 75c58e4a..c25472ab 100755 --- a/client/src/sagas/login/watchers/router.js +++ b/client/src/sagas/login/watchers/router.js @@ -1,8 +1,8 @@ import { takeEvery } from 'redux-saga/effects'; import { LOCATION_CHANGE } from 'connected-react-router'; -import { locationChangedService } from '../services'; +import { handleLocationChangeService } from '../services'; export default function* routerWatchers() { - yield takeEvery(LOCATION_CHANGE, () => locationChangedService()); + yield takeEvery(LOCATION_CHANGE, () => handleLocationChangeService()); } diff --git a/client/src/selectors/attachment.js b/client/src/selectors/attachment.js new file mode 100644 index 00000000..8ec5ec62 --- /dev/null +++ b/client/src/selectors/attachment.js @@ -0,0 +1,10 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; + +// eslint-disable-next-line import/prefer-default-export +export const isAttachmentWithIdExistsSelector = createSelector( + orm, + (_, id) => id, + ({ Attachment }, id) => Attachment.idExists(id), +); diff --git a/client/src/selectors/auth.js b/client/src/selectors/auth.js new file mode 100644 index 00000000..21deed96 --- /dev/null +++ b/client/src/selectors/auth.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export const accessTokenSelector = ({ auth: { accessToken } }) => accessToken; diff --git a/client/src/selectors/board-membership.js b/client/src/selectors/board-membership.js new file mode 100644 index 00000000..879fa19c --- /dev/null +++ b/client/src/selectors/board-membership.js @@ -0,0 +1,20 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; + +export const makeBoardMembershipByIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ BoardMembership }, id) => { + const boardMembershipModel = BoardMembership.withId(id); + + if (!boardMembershipModel) { + return boardMembershipModel; + } + + return boardMembershipModel.ref; + }, + ); + +export const boardMembershipByIdSelector = makeBoardMembershipByIdSelector(); diff --git a/client/src/selectors/board.js b/client/src/selectors/board.js new file mode 100644 index 00000000..740a19d0 --- /dev/null +++ b/client/src/selectors/board.js @@ -0,0 +1,167 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; +import { pathSelector } from './router'; +import { currentUserIdSelector } from './user'; +import { isLocalId } from '../utils/local-id'; + +export const makeBoardByIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Board }, id) => { + const boardModel = Board.withId(id); + + if (!boardModel) { + return boardModel; + } + + return boardModel.ref; + }, + ); + +export const boardByIdSelector = makeBoardByIdSelector(); + +export const currentBoardSelector = createSelector( + orm, + (state) => pathSelector(state).boardId, + ({ Board }, id) => { + if (!id) { + return id; + } + + const boardModel = Board.withId(id); + + if (!boardModel) { + return boardModel; + } + + return boardModel.ref; + }, +); + +export const membershipsForCurrentBoardSelector = createSelector( + orm, + (state) => pathSelector(state).boardId, + (state) => currentUserIdSelector(state), + ({ Board }, id, currentUserId) => { + if (!id) { + return id; + } + + const boardModel = Board.withId(id); + + if (!boardModel) { + return boardModel; + } + + return boardModel + .getOrderedMembershipsQuerySet() + .toModelArray() + .map((boardMembershipModel) => ({ + ...boardMembershipModel.ref, + isPersisted: !isLocalId(boardMembershipModel.id), + user: { + ...boardMembershipModel.user.ref, + isCurrent: boardMembershipModel.user.id === currentUserId, + }, + })); + }, +); + +export const labelsForCurrentBoardSelector = createSelector( + orm, + (state) => pathSelector(state).boardId, + ({ Board }, id) => { + if (!id) { + return id; + } + + const boardModel = Board.withId(id); + + if (!boardModel) { + return boardModel; + } + + return boardModel.labels.toRefArray().map((label) => ({ + ...label, + isPersisted: !isLocalId(label.id), + })); + }, +); + +export const listIdsForCurrentBoardSelector = createSelector( + orm, + (state) => pathSelector(state).boardId, + ({ Board }, id) => { + if (!id) { + return id; + } + + const boardModel = Board.withId(id); + + if (!boardModel) { + return boardModel; + } + + return boardModel + .getOrderedListsQuerySet() + .toRefArray() + .map((list) => list.id); + }, +); + +export const filterUsersForCurrentBoardSelector = createSelector( + orm, + (state) => pathSelector(state).boardId, + ({ Board }, id) => { + if (!id) { + return id; + } + + const boardModel = Board.withId(id); + + if (!boardModel) { + return boardModel; + } + + return boardModel.filterUsers.toRefArray(); + }, +); + +export const filterLabelsForCurrentBoardSelector = createSelector( + orm, + (state) => pathSelector(state).boardId, + ({ Board }, id) => { + if (!id) { + return id; + } + + const boardModel = Board.withId(id); + + if (!boardModel) { + return boardModel; + } + + return boardModel.filterLabels.toRefArray(); + }, +); + +export const isCurrentUserMemberForCurrentBoardSelector = createSelector( + orm, + (state) => pathSelector(state).boardId, + (state) => currentUserIdSelector(state), + ({ Board }, id, currentUserId) => { + if (!id) { + return false; + } + + const boardModel = Board.withId(id); + + if (!boardModel) { + return false; + } + + return boardModel.hasMemberUser(currentUserId); + }, +); diff --git a/client/src/selectors/boolean.js b/client/src/selectors/boolean.js deleted file mode 100644 index 488ef1ae..00000000 --- a/client/src/selectors/boolean.js +++ /dev/null @@ -1,29 +0,0 @@ -import { createSelector } from 'redux-orm'; - -import orm from '../orm'; -import { pathSelector } from './path'; - -export const isAnyFilterActiveForCurrentBoardSelector = createSelector( - orm, - (state) => pathSelector(state).boardId, - ({ Board }, id) => { - if (!id) { - return false; - } - - const boardModel = Board.withId(id); - - if (!boardModel) { - return false; - } - - return boardModel.filterUsers.exists() || boardModel.filterLabels.exists(); - }, -); - -export const isAttachmentWithIdExistsSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Attachment }, id) => Attachment.idExists(id), - ); diff --git a/client/src/selectors/by-id.js b/client/src/selectors/by-id.js deleted file mode 100755 index 556df404..00000000 --- a/client/src/selectors/by-id.js +++ /dev/null @@ -1,166 +0,0 @@ -import { createSelector } from 'redux-orm'; - -import orm from '../orm'; -import { isLocalId } from '../utils/local-id'; - -export const makeBoardByIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Board }, id) => { - const boardModel = Board.withId(id); - - if (!boardModel) { - return boardModel; - } - - return boardModel.ref; - }, - ); - -export const makeListByIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ List }, id) => { - const listModel = List.withId(id); - - if (!listModel) { - return listModel; - } - - return { - ...listModel.ref, - isPersisted: !isLocalId(id), - }; - }, - ); - -export const makeCardIdsByListIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ List }, id) => { - const listModel = List.withId(id); - - if (!listModel) { - return listModel; - } - - return listModel.getOrderedFilteredCardsModelArray().map((cardModel) => cardModel.id); - }, - ); - -export const makeCardByIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Card }, id) => { - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return { - ...cardModel.ref, - coverUrl: cardModel.coverAttachment && cardModel.coverAttachment.coverUrl, - isPersisted: !isLocalId(id), - }; - }, - ); - -export const makeUsersByCardIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Card }, id) => { - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel.users.toRefArray(); - }, - ); - -export const makeLabelsByCardIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Card }, id) => { - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel.labels.toRefArray(); - }, - ); - -export const makeTasksByCardIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Card }, id) => { - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel.tasks.toRefArray(); - }, - ); - -export const makeLastActionIdByCardIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Card }, id) => { - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - const lastActionModel = cardModel.getOrderedInCardActionsQuerySet().last(); - - return lastActionModel && lastActionModel.id; - }, - ); - -export const makeNotificationsTotalByCardIdSelector = () => - createSelector( - orm, - (_, id) => id, - ({ Card }, id) => { - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel.getUnreadNotificationsQuerySet().count(); - }, - ); - -export const boardByIdSelector = makeBoardByIdSelector(); - -export const listByIdSelector = makeListByIdSelector(); - -export const cardIdsByListIdSelector = makeCardIdsByListIdSelector(); - -export const cardByIdSelector = makeCardByIdSelector(); - -export const usersByCardIdSelector = makeUsersByCardIdSelector(); - -export const labelsByCardIdSelector = makeLabelsByCardIdSelector(); - -export const tasksByCardIdSelector = makeTasksByCardIdSelector(); - -export const lastActionIdByCardIdSelector = makeLastActionIdByCardIdSelector(); - -export const notificationsTotalByCardIdSelector = makeNotificationsTotalByCardIdSelector(); diff --git a/client/src/selectors/card.js b/client/src/selectors/card.js new file mode 100644 index 00000000..dd7de706 --- /dev/null +++ b/client/src/selectors/card.js @@ -0,0 +1,284 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; +import { pathSelector } from './router'; +import { currentUserIdSelector } from './user'; +import { isLocalId } from '../utils/local-id'; + +export const makeCardByIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Card }, id) => { + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return { + ...cardModel.ref, + coverUrl: cardModel.coverAttachment && cardModel.coverAttachment.coverUrl, + isPersisted: !isLocalId(id), + }; + }, + ); + +export const cardByIdSelector = makeCardByIdSelector(); + +export const makeUsersByCardIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Card }, id) => { + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.users.toRefArray(); + }, + ); + +export const usersByCardIdSelector = makeUsersByCardIdSelector(); + +export const makeLabelsByCardIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Card }, id) => { + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.labels.toRefArray(); + }, + ); + +export const labelsByCardIdSelector = makeLabelsByCardIdSelector(); + +export const makeTasksByCardIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Card }, id) => { + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.tasks.toRefArray(); + }, + ); + +export const tasksByCardIdSelector = makeTasksByCardIdSelector(); + +export const makeLastActionIdByCardIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Card }, id) => { + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + const lastActionModel = cardModel.getOrderedInCardActionsQuerySet().last(); + + return lastActionModel && lastActionModel.id; + }, + ); + +export const lastActionIdByCardIdSelector = makeLastActionIdByCardIdSelector(); + +export const makeNotificationsByCardIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Card }, id) => { + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.getUnreadNotificationsQuerySet().toRefArray(); + }, + ); + +export const notificationsByCardIdSelector = makeNotificationsByCardIdSelector(); + +export const makeNotificationsTotalByCardIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ Card }, id) => { + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.getUnreadNotificationsQuerySet().count(); + }, + ); + +export const notificationsTotalByCardIdSelector = makeNotificationsTotalByCardIdSelector(); + +export const currentCardSelector = createSelector( + orm, + (state) => pathSelector(state).cardId, + ({ Card }, id) => { + if (!id) { + return id; + } + + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.ref; + }, +); + +export const usersForCurrentCardSelector = createSelector( + orm, + (state) => pathSelector(state).cardId, + ({ Card }, id) => { + if (!id) { + return id; + } + + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.users.toRefArray(); + }, +); + +export const labelsForCurrentCardSelector = createSelector( + orm, + (state) => pathSelector(state).cardId, + ({ Card }, id) => { + if (!id) { + return id; + } + + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel.labels.toRefArray(); + }, +); + +export const tasksForCurrentCardSelector = createSelector( + orm, + (state) => pathSelector(state).cardId, + ({ Card }, id) => { + if (!id) { + return id; + } + + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel + .getOrderedTasksQuerySet() + .toRefArray() + .map((task) => ({ + ...task, + isPersisted: !isLocalId(task.id), + })); + }, +); + +export const attachmentsForCurrentCardSelector = createSelector( + orm, + (state) => pathSelector(state).cardId, + ({ Card }, id) => { + if (!id) { + return id; + } + + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel + .getOrderedAttachmentsQuerySet() + .toRefArray() + .map((attachment) => ({ + ...attachment, + isCover: attachment.id === cardModel.coverAttachmentId, + isPersisted: !isLocalId(attachment.id), + })); + }, +); + +export const actionsForCurrentCardSelector = createSelector( + orm, + (state) => pathSelector(state).cardId, + (state) => currentUserIdSelector(state), + ({ Card }, id, currentUserId) => { + if (!id) { + return id; + } + + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel + .getOrderedInCardActionsQuerySet() + .toModelArray() + .map((actionModel) => ({ + ...actionModel.ref, + isPersisted: !isLocalId(actionModel.id), + user: { + ...actionModel.user.ref, + isCurrent: actionModel.user.id === currentUserId, + }, + })); + }, +); + +export const notificationIdsForCurrentCardSelector = createSelector( + orm, + (state) => pathSelector(state).cardId, + ({ Card }, id) => { + if (!id) { + return id; + } + + const cardModel = Card.withId(id); + + if (!cardModel) { + return cardModel; + } + + return cardModel + .getUnreadNotificationsQuerySet() + .toRefArray() + .map((notification) => notification.id); + }, +); diff --git a/client/src/selectors/common.js b/client/src/selectors/common.js deleted file mode 100755 index 7a7fb209..00000000 --- a/client/src/selectors/common.js +++ /dev/null @@ -1,3 +0,0 @@ -export const accessTokenSelector = ({ auth: { accessToken } }) => accessToken; - -export const isCoreInitializingSelector = ({ core: { isInitializing } }) => isInitializing; diff --git a/client/src/selectors/next-position.js b/client/src/selectors/core.js similarity index 95% rename from client/src/selectors/next-position.js rename to client/src/selectors/core.js index dda99c34..f1aada13 100755 --- a/client/src/selectors/next-position.js +++ b/client/src/selectors/core.js @@ -4,6 +4,8 @@ import isUndefined from 'lodash/isUndefined'; import orm from '../orm'; import Config from '../constants/Config'; +export const isCoreInitializingSelector = ({ core: { isInitializing } }) => isInitializing; + const nextPosition = (items, index, excludedId) => { const filteredItems = isUndefined(excludedId) ? items diff --git a/client/src/selectors/current.js b/client/src/selectors/current.js deleted file mode 100755 index 489ad52a..00000000 --- a/client/src/selectors/current.js +++ /dev/null @@ -1,442 +0,0 @@ -import { createSelector } from 'redux-orm'; - -import orm from '../orm'; -import { pathSelector } from './path'; -import { isLocalId } from '../utils/local-id'; - -export const currentModalSelector = ({ core: { currentModal } }) => currentModal; - -export const currentUserIdSelector = ({ auth: { userId } }) => userId; - -export const currentUserSelector = createSelector( - orm, - (state) => currentUserIdSelector(state), - ({ User }, id) => { - if (!id) { - return id; - } - - const userModel = User.withId(id); - - if (!userModel) { - return userModel; - } - - return userModel.ref; - }, -); - -export const projectsForCurrentUserSelector = createSelector( - orm, - (state) => currentUserIdSelector(state), - ({ User }, id) => { - if (!id) { - return id; - } - - const userModel = User.withId(id); - - if (!userModel) { - return userModel; - } - - return userModel - .getOrderedProjectMembershipsQuerySet() - .toModelArray() - .map(({ project: projectModel }) => { - let notificationsTotal = 0; - projectModel.boards.toModelArray().forEach((boardModel) => { - boardModel.cards.toModelArray().forEach((cardModel) => { - notificationsTotal += cardModel.getUnreadNotificationsQuerySet().count(); - }); - }); - - const firstBoard = projectModel.boards.first(); - const firstBoardId = firstBoard && firstBoard.id; - - return { - ...projectModel.ref, - notificationsTotal, - firstBoardId, - }; - }); - }, -); - -export const projectsToListsForCurrentUserSelector = createSelector( - orm, - (state) => currentUserIdSelector(state), - ({ User }, id) => { - if (!id) { - return id; - } - - const userModel = User.withId(id); - - if (!userModel) { - return userModel; - } - - return userModel - .getOrderedProjectMembershipsQuerySet() - .toModelArray() - .map(({ project: projectModel }) => ({ - ...projectModel.ref, - boards: projectModel - .getOrderedBoardsQuerySet() - .toModelArray() - .map((boardModel) => ({ - ...boardModel.ref, - lists: boardModel.getOrderedListsQuerySet().toRefArray(), - })), - })); - }, -); - -export const notificationsForCurrentUserSelector = createSelector( - orm, - (state) => currentUserIdSelector(state), - ({ User }, id) => { - if (!id) { - return id; - } - - const userModel = User.withId(id); - - if (!userModel) { - return userModel; - } - - return userModel - .getOrderedUnreadNotificationsQuerySet() - .toModelArray() - .map((notificationModel) => ({ - ...notificationModel.ref, - action: notificationModel.action && { - ...notificationModel.action.ref, - user: notificationModel.action.user.ref, - }, - card: notificationModel.card && notificationModel.card.ref, - })); - }, -); - -export const currentProjectSelector = createSelector( - orm, - (state) => pathSelector(state).projectId, - ({ Project }, id) => { - if (!id) { - return id; - } - - const projectModel = Project.withId(id); - - if (!projectModel) { - return projectModel; - } - - return projectModel.ref; - }, -); - -export const membershipsForCurrentProjectSelector = createSelector( - orm, - (state) => pathSelector(state).projectId, - (state) => currentUserIdSelector(state), - ({ Project }, id, currentUserId) => { - if (!id) { - return id; - } - - const projectModel = Project.withId(id); - - if (!projectModel) { - return projectModel; - } - - return projectModel - .getOrderedMembershipsQuerySet() - .toModelArray() - .map((projectMembershipModel) => ({ - ...projectMembershipModel.ref, - isPersisted: !isLocalId(projectMembershipModel.id), - user: { - ...projectMembershipModel.user.ref, - isCurrent: projectMembershipModel.user.id === currentUserId, - }, - })); - }, -); - -export const boardsForCurrentProjectSelector = createSelector( - orm, - (state) => pathSelector(state).projectId, - ({ Project }, id) => { - if (!id) { - return id; - } - - const projectModel = Project.withId(id); - - if (!projectModel) { - return projectModel; - } - - return projectModel - .getOrderedBoardsQuerySet() - .toRefArray() - .map((board) => ({ - ...board, - isPersisted: !isLocalId(board.id), - })); - }, -); - -export const currentBoardSelector = createSelector( - orm, - (state) => pathSelector(state).boardId, - ({ Board }, id) => { - if (!id) { - return id; - } - - const boardModel = Board.withId(id); - - if (!boardModel) { - return boardModel; - } - - return boardModel.ref; - }, -); - -export const labelsForCurrentBoardSelector = createSelector( - orm, - (state) => pathSelector(state).boardId, - ({ Board }, id) => { - if (!id) { - return id; - } - - const boardModel = Board.withId(id); - - if (!boardModel) { - return boardModel; - } - - return boardModel.labels.toRefArray().map((label) => ({ - ...label, - isPersisted: !isLocalId(label.id), - })); - }, -); - -export const listIdsForCurrentBoardSelector = createSelector( - orm, - (state) => pathSelector(state).boardId, - ({ Board }, id) => { - if (!id) { - return id; - } - - const boardModel = Board.withId(id); - - if (!boardModel) { - return boardModel; - } - - return boardModel - .getOrderedListsQuerySet() - .toRefArray() - .map((list) => list.id); - }, -); - -export const filterUsersForCurrentBoardSelector = createSelector( - orm, - (state) => pathSelector(state).boardId, - ({ Board }, id) => { - if (!id) { - return id; - } - - const boardModel = Board.withId(id); - - if (!boardModel) { - return boardModel; - } - - return boardModel.filterUsers.toRefArray(); - }, -); - -export const filterLabelsForCurrentBoardSelector = createSelector( - orm, - (state) => pathSelector(state).boardId, - ({ Board }, id) => { - if (!id) { - return id; - } - - const boardModel = Board.withId(id); - - if (!boardModel) { - return boardModel; - } - - return boardModel.filterLabels.toRefArray(); - }, -); - -export const currentCardSelector = createSelector( - orm, - (state) => pathSelector(state).cardId, - ({ Card }, id) => { - if (!id) { - return id; - } - - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel.ref; - }, -); - -export const usersForCurrentCardSelector = createSelector( - orm, - (state) => pathSelector(state).cardId, - ({ Card }, id) => { - if (!id) { - return id; - } - - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel.users.toRefArray(); - }, -); - -export const labelsForCurrentCardSelector = createSelector( - orm, - (state) => pathSelector(state).cardId, - ({ Card }, id) => { - if (!id) { - return id; - } - - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel.labels.toRefArray(); - }, -); - -export const tasksForCurrentCardSelector = createSelector( - orm, - (state) => pathSelector(state).cardId, - ({ Card }, id) => { - if (!id) { - return id; - } - - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel - .getOrderedTasksQuerySet() - .toRefArray() - .map((task) => ({ - ...task, - isPersisted: !isLocalId(task.id), - })); - }, -); - -export const attachmentsForCurrentCardSelector = createSelector( - orm, - (state) => pathSelector(state).cardId, - ({ Card }, id) => { - if (!id) { - return id; - } - - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel - .getOrderedAttachmentsQuerySet() - .toRefArray() - .map((attachment) => ({ - ...attachment, - isCover: attachment.id === cardModel.coverAttachmentId, - isPersisted: !isLocalId(attachment.id), - })); - }, -); - -export const actionsForCurrentCardSelector = createSelector( - orm, - (state) => pathSelector(state).cardId, - (state) => currentUserIdSelector(state), - ({ Card }, id, currentUserId) => { - if (!id) { - return id; - } - - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel - .getOrderedInCardActionsQuerySet() - .toModelArray() - .map((actionModel) => ({ - ...actionModel.ref, - isPersisted: !isLocalId(actionModel.id), - user: { - ...actionModel.user.ref, - isCurrent: actionModel.user.id === currentUserId, - }, - })); - }, -); - -export const notificationIdsForCurrentCardSelector = createSelector( - orm, - (state) => pathSelector(state).cardId, - ({ Card }, id) => { - if (!id) { - return id; - } - - const cardModel = Card.withId(id); - - if (!cardModel) { - return cardModel; - } - - return cardModel - .getUnreadNotificationsQuerySet() - .toRefArray() - .map((notification) => notification.id); - }, -); diff --git a/client/src/selectors/index.js b/client/src/selectors/index.js index 0de296b2..d4c8525f 100755 --- a/client/src/selectors/index.js +++ b/client/src/selectors/index.js @@ -1,7 +1,13 @@ -export * from './common'; -export * from './all'; -export * from './path'; -export * from './current'; -export * from './by-id'; -export * from './boolean'; -export * from './next-position'; +export * from './router'; +export * from './auth'; +export * from './core'; +export * from './modal'; +export * from './user'; +export * from './users'; +export * from './project'; +export * from './project-manager'; +export * from './board'; +export * from './board-membership'; +export * from './list'; +export * from './card'; +export * from './attachment'; diff --git a/client/src/selectors/list.js b/client/src/selectors/list.js new file mode 100644 index 00000000..ff1616fe --- /dev/null +++ b/client/src/selectors/list.js @@ -0,0 +1,41 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; +import { isLocalId } from '../utils/local-id'; + +export const makeListByIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ List }, id) => { + const listModel = List.withId(id); + + if (!listModel) { + return listModel; + } + + return { + ...listModel.ref, + isPersisted: !isLocalId(id), + }; + }, + ); + +export const listByIdSelector = makeListByIdSelector(); + +export const makeCardIdsByListIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ List }, id) => { + const listModel = List.withId(id); + + if (!listModel) { + return listModel; + } + + return listModel.getOrderedFilteredCardsModelArray().map((cardModel) => cardModel.id); + }, + ); + +export const cardIdsByListIdSelector = makeCardIdsByListIdSelector(); diff --git a/client/src/selectors/modal.js b/client/src/selectors/modal.js new file mode 100644 index 00000000..d8c2d8e2 --- /dev/null +++ b/client/src/selectors/modal.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export const currentModalSelector = ({ core: { currentModal } }) => currentModal; diff --git a/client/src/selectors/project-manager.js b/client/src/selectors/project-manager.js new file mode 100644 index 00000000..eb0f7207 --- /dev/null +++ b/client/src/selectors/project-manager.js @@ -0,0 +1,20 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; + +export const makeProjectManagerByIdSelector = () => + createSelector( + orm, + (_, id) => id, + ({ ProjectManager }, id) => { + const projectManagerModel = ProjectManager.withId(id); + + if (!projectManagerModel) { + return projectManagerModel; + } + + return projectManagerModel.ref; + }, + ); + +export const projectManagerByIdSelector = makeProjectManagerByIdSelector(); diff --git a/client/src/selectors/project.js b/client/src/selectors/project.js new file mode 100644 index 00000000..9727c068 --- /dev/null +++ b/client/src/selectors/project.js @@ -0,0 +1,94 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; +import { pathSelector } from './router'; +import { currentUserIdSelector } from './user'; +import { isLocalId } from '../utils/local-id'; + +export const currentProjectSelector = createSelector( + orm, + (state) => pathSelector(state).projectId, + ({ Project }, id) => { + if (!id) { + return id; + } + + const projectModel = Project.withId(id); + + if (!projectModel) { + return projectModel; + } + + return projectModel.ref; + }, +); + +export const managersForCurrentProjectSelector = createSelector( + orm, + (state) => pathSelector(state).projectId, + (state) => currentUserIdSelector(state), + ({ Project }, id, currentUserId) => { + if (!id) { + return id; + } + + const projectModel = Project.withId(id); + + if (!projectModel) { + return projectModel; + } + + return projectModel + .getOrderedManagersQuerySet() + .toModelArray() + .map((projectManagerModel) => ({ + ...projectManagerModel.ref, + isPersisted: !isLocalId(projectManagerModel.id), + user: { + ...projectManagerModel.user.ref, + isCurrent: projectManagerModel.user.id === currentUserId, + }, + })); + }, +); + +export const boardsForCurrentProjectSelector = createSelector( + orm, + (state) => pathSelector(state).projectId, + (state) => currentUserIdSelector(state), + ({ Project }, id, currentUserId) => { + if (!id) { + return id; + } + + const projectModel = Project.withId(id); + + if (!projectModel) { + return projectModel; + } + + return projectModel.getOrderedAvailableBoardsModelArray(currentUserId).map((boardModel) => ({ + ...boardModel.ref, + isPersisted: !isLocalId(boardModel.id), + })); + }, +); + +export const isCurrentUserManagerForCurrentProjectSelector = createSelector( + orm, + (state) => pathSelector(state).projectId, + (state) => currentUserIdSelector(state), + ({ Project }, id, currentUserId) => { + if (!id) { + return false; + } + + const projectModel = Project.withId(id); + + if (!projectModel) { + return false; + } + + return projectModel.hasManagerUser(currentUserId); + }, +); diff --git a/client/src/selectors/path.js b/client/src/selectors/router.js similarity index 62% rename from client/src/selectors/path.js rename to client/src/selectors/router.js index b709023d..5e79682b 100755 --- a/client/src/selectors/path.js +++ b/client/src/selectors/router.js @@ -2,6 +2,7 @@ import { createSelector as createReselectSelector } from 'reselect'; import { createSelector as createReduxOrmSelector } from 'redux-orm'; import orm from '../orm'; +import { currentUserIdSelector } from './user'; import matchPaths from '../utils/match-paths'; import Paths from '../constants/Paths'; @@ -18,14 +19,29 @@ export const pathsMatchSelector = createReselectSelector(pathnameSelector, (path export const pathSelector = createReduxOrmSelector( orm, pathsMatchSelector, - ({ Project, Board, Card }, pathsMatch) => { + (state) => currentUserIdSelector(state), + ({ Project, Board, Card }, pathsMatch, currentUserId) => { if (pathsMatch) { switch (pathsMatch.path) { case Paths.PROJECTS: { const projectModel = Project.withId(pathsMatch.params.id); + if (!projectModel) { + return { + projectId: null, + }; + } + + if (!projectModel.hasManagerUser(currentUserId)) { + if (!projectModel.hasMemberUserForAnyBoard(currentUserId)) { + return { + projectId: null, + }; + } + } + return { - projectId: projectModel && projectModel.id, + projectId: projectModel.id, }; } case Paths.BOARDS: { @@ -39,6 +55,15 @@ export const pathSelector = createReduxOrmSelector( }; } + if (!projectModel.hasManagerUser(currentUserId)) { + if (!boardModel.hasMemberUser(currentUserId)) { + return { + boardId: null, + projectId: null, + }; + } + } + return { boardId: boardModel.id, projectId: projectModel.id, @@ -57,6 +82,16 @@ export const pathSelector = createReduxOrmSelector( }; } + if (!projectModel.hasManagerUser(currentUserId)) { + if (!boardModel.hasMemberUser(currentUserId)) { + return { + cardId: null, + boardId: null, + projectId: null, + }; + } + } + return { cardId: cardModel.id, boardId: boardModel.id, diff --git a/client/src/selectors/user.js b/client/src/selectors/user.js new file mode 100644 index 00000000..b0706767 --- /dev/null +++ b/client/src/selectors/user.js @@ -0,0 +1,108 @@ +import { createSelector } from 'redux-orm'; + +import orm from '../orm'; + +export const currentUserIdSelector = ({ auth: { userId } }) => userId; + +export const currentUserSelector = createSelector( + orm, + (state) => currentUserIdSelector(state), + ({ User }, id) => { + if (!id) { + return id; + } + + const userModel = User.withId(id); + + if (!userModel) { + return userModel; + } + + return userModel.ref; + }, +); + +export const projectsForCurrentUserSelector = createSelector( + orm, + (state) => currentUserIdSelector(state), + ({ User }, id) => { + if (!id) { + return id; + } + + const userModel = User.withId(id); + + if (!userModel) { + return userModel; + } + + return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => { + const boardsModels = projectModel.getOrderedAvailableBoardsModelArray(userModel.id); + + let notificationsTotal = 0; + boardsModels.forEach((boardModel) => { + boardModel.cards.toModelArray().forEach((cardModel) => { + notificationsTotal += cardModel.getUnreadNotificationsQuerySet().count(); + }); + }); + + return { + ...projectModel.ref, + notificationsTotal, + firstBoardId: boardsModels[0] && boardsModels[0].id, + }; + }); + }, +); + +export const projectsToListsForCurrentUserSelector = createSelector( + orm, + (state) => currentUserIdSelector(state), + ({ User }, id) => { + if (!id) { + return id; + } + + const userModel = User.withId(id); + + if (!userModel) { + return userModel; + } + + return userModel.getOrderedAvailableProjectsModelArray().map((projectModel) => ({ + ...projectModel.ref, + boards: projectModel.getOrderedMemberBoardsModelArray(id).map((boardModel) => ({ + ...boardModel.ref, + lists: boardModel.getOrderedListsQuerySet().toRefArray(), + })), + })); + }, +); + +export const notificationsForCurrentUserSelector = createSelector( + orm, + (state) => currentUserIdSelector(state), + ({ User }, id) => { + if (!id) { + return id; + } + + const userModel = User.withId(id); + + if (!userModel) { + return userModel; + } + + return userModel + .getOrderedUnreadNotificationsQuerySet() + .toModelArray() + .map((notificationModel) => ({ + ...notificationModel.ref, + action: notificationModel.action && { + ...notificationModel.action.ref, + user: notificationModel.action.user.ref, + }, + card: notificationModel.card && notificationModel.card.ref, + })); + }, +); diff --git a/client/src/selectors/all.js b/client/src/selectors/users.js old mode 100755 new mode 100644 similarity index 52% rename from client/src/selectors/all.js rename to client/src/selectors/users.js index cc57a22e..66f0ef9b --- a/client/src/selectors/all.js +++ b/client/src/selectors/users.js @@ -1,19 +1,19 @@ import { createSelector } from 'redux-orm'; import orm from '../orm'; -import { currentUserIdSelector } from './current'; +import { currentUserIdSelector } from './user'; -export const allUsersSelector = createSelector(orm, ({ User }) => +export const usersSelector = createSelector(orm, ({ User }) => User.getOrderedUndeletedQuerySet().toRefArray(), ); -export const allUsersExceptCurrentSelector = createSelector( +export const usersExceptCurrentSelector = createSelector( orm, (state) => currentUserIdSelector(state), - ({ User }, currentUserId) => + ({ User }, id) => User.getOrderedUndeletedQuerySet() .exclude({ - id: currentUserId, + id, }) .toRefArray(), ); diff --git a/client/src/setupTests.js b/client/src/setupTests.js index 16e8df78..b5adb885 100644 --- a/client/src/setupTests.js +++ b/client/src/setupTests.js @@ -1,5 +1,5 @@ import { configure } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; +import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; import 'jest-enzyme'; diff --git a/client/src/store.js b/client/src/store.js index c5f0a675..8c56df6a 100755 --- a/client/src/store.js +++ b/client/src/store.js @@ -16,7 +16,7 @@ if (process.env.NODE_ENV !== 'production') { const { logger } = require('redux-logger'); // eslint-disable-line global-require middlewares.push(logger); - // enable Redux Devtools in development + // Enable Redux Devtools in development // https://github.com/zalmoxisus/redux-devtools-extension if (typeof window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ !== 'undefined') { compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__; diff --git a/client/src/styles.module.scss b/client/src/styles.module.scss index 3459db1f..f14cc3c9 100644 --- a/client/src/styles.module.scss +++ b/client/src/styles.module.scss @@ -71,7 +71,7 @@ } .react-datepicker__month { - margin: 0; + margin: 0.4rem 0 0; } .react-datepicker__navigation--previous, @@ -92,7 +92,6 @@ .react-datepicker__navigation { border-width: 7px 9px; top: 0; - margin: 9px 0; } .react-datepicker__day { diff --git a/client/src/utils/merge-records.js b/client/src/utils/merge-records.js new file mode 100644 index 00000000..65a7068a --- /dev/null +++ b/client/src/utils/merge-records.js @@ -0,0 +1,27 @@ +const mergeRecords = (target, ...sources) => { + if (sources.length === 0) { + return target; + } + + const source = sources.shift(); + + if (!target || !source) { + return mergeRecords(target || source, ...sources); + } + + const nextTarget = [...target]; + + source.forEach((sourceRecord) => { + const index = nextTarget.findIndex((targetRecord) => targetRecord.id === sourceRecord.id); + + if (index >= 0) { + Object.assign(nextTarget[index], sourceRecord); + } else { + nextTarget.push(sourceRecord); + } + }); + + return mergeRecords(nextTarget, ...sources); +}; + +export default mergeRecords; diff --git a/package-lock.json b/package-lock.json index e2043cd5..e4d5b8a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,49 +8,114 @@ "version": "0.1.0", "hasInstallScript": true, "license": "MIT", - "devDependencies": { - "concurrently": "^5.3.0", - "husky": "^5.0.9", - "lint-staged": "^10.5.4" + "dependencies": { + "concurrently": "^6.2.0", + "husky": "^6.0.0", + "lint-staged": "^11.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -63,18 +128,16 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "engines": { "node": ">=8" @@ -87,28 +150,28 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, "engines": { "node": ">=8" } @@ -117,7 +180,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -129,51 +191,40 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, "engines": { "node": ">=6" } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, "engines": { "node": ">=6" } @@ -182,7 +233,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "dependencies": { "restore-cursor": "^3.1.0" }, @@ -194,7 +244,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -207,132 +256,70 @@ } }, "node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "engines": { - "node": ">= 6" + "node": ">= 10" } }, "node_modules/concurrently": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", - "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", - "dev": true, + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.2.0.tgz", + "integrity": "sha512-v9I4Y3wFoXCSY2L73yYgwA9ESrQMpRn80jMcqMgHx720Hecz2GZAvTI6bREVST6lkddNypDKRN22qhK0X8Y00g==", "dependencies": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "read-pkg": "^5.2.0", + "rxjs": "^6.6.3", "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", + "supports-color": "^8.1.0", "tree-kill": "^1.2.2", - "yargs": "^13.3.0" + "yargs": "^16.2.0" }, "bin": { "concurrently": "bin/concurrently.js" }, "engines": { - "node": ">=6.0.0" + "node": ">=10.0.0" } }, "node_modules/cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -348,7 +335,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -359,10 +345,9 @@ } }, "node_modules/date-fns": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz", - "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==", - "dev": true, + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.22.1.tgz", + "integrity": "sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==", "engines": { "node": ">=0.11" }, @@ -375,7 +360,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -388,41 +372,20 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, "dependencies": { "ansi-colors": "^4.1.1" }, @@ -434,34 +397,39 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" }, "engines": { @@ -471,26 +439,10 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -498,29 +450,15 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -528,19 +466,14 @@ "node_modules/get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -550,7 +483,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -559,56 +491,41 @@ } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "engines": { - "node": ">=8.12.0" + "node": ">=10.17.0" } }, "node_modules/husky": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-5.1.3.tgz", - "integrity": "sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/typicode" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/husky" - } - ], + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", + "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==", "bin": { "husky": "lib/bin.js" }, - "engines": { - "node": ">= 10" + "funding": { + "url": "https://github.com/sponsors/typicode" } }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -624,7 +541,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -632,14 +548,12 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dependencies": { "has": "^1.0.3" }, @@ -651,7 +565,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -660,7 +573,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -669,7 +581,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -678,7 +589,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -687,7 +597,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true, "engines": { "node": ">=8" } @@ -696,7 +605,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -707,50 +615,39 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "node_modules/lint-staged": { - "version": "10.5.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", - "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", - "dev": true, + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz", + "integrity": "sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw==", "dependencies": { - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-truncate": "^2.1.0", - "commander": "^6.2.0", + "commander": "^7.2.0", "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", + "debug": "^4.3.1", "dedent": "^0.7.0", "enquirer": "^2.3.6", - "execa": "^4.1.0", - "listr2": "^3.2.2", - "log-symbols": "^4.0.0", - "micromatch": "^4.0.2", + "execa": "^5.0.0", + "listr2": "^3.8.2", + "log-symbols": "^4.1.0", + "micromatch": "^4.0.4", "normalize-path": "^3.0.0", "please-upgrade-node": "^3.2.0", "string-argv": "0.3.1", @@ -763,89 +660,16 @@ "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/lint-staged/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/lint-staged/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/listr2": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.4.3.tgz", - "integrity": "sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA==", - "dev": true, + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.10.0.tgz", + "integrity": "sha512-eP40ZHihu70sSmqFNbNy2NL1YwImmlMmPh9WO5sLmPDleurMHt3n+SwEWNu2kzKScexZnkyFtc1VI0z/TGlmpw==", "dependencies": { - "chalk": "^4.1.0", "cli-truncate": "^2.1.0", - "figures": "^3.2.0", - "indent-string": "^4.0.0", + "colorette": "^1.2.2", "log-update": "^4.0.0", "p-map": "^4.0.0", - "rxjs": "^6.6.6", + "rxjs": "^6.6.7", "through": "^2.3.8", "wrap-ansi": "^7.0.0" }, @@ -856,100 +680,15 @@ "enquirer": ">= 2.3.0 < 3" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/listr2/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/listr2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/listr2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -961,81 +700,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -1049,44 +717,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/log-update/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -1103,7 +737,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -1116,27 +749,24 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dependencies": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } @@ -1144,14 +774,12 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -1163,7 +791,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1172,7 +799,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "dependencies": { "path-key": "^3.0.0" }, @@ -1180,20 +806,10 @@ "node": ">=8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "dependencies": { "mimic-fn": "^2.1.0" }, @@ -1204,38 +820,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -1246,20 +834,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -1271,7 +849,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -1285,44 +862,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "engines": { "node": ">=8.6" }, @@ -1330,81 +894,48 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, "dependencies": { "semver-compare": "^1.0.0" } }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dependencies": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -1417,7 +948,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -1426,7 +956,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -1436,10 +965,9 @@ } }, "node_modules/rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", - "dev": true, + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dependencies": { "tslib": "^1.9.0" }, @@ -1451,7 +979,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, "bin": { "semver": "bin/semver" } @@ -1459,20 +986,12 @@ "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -1484,7 +1003,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -1492,14 +1010,12 @@ "node_modules/signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "node_modules/slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -1509,50 +1025,15 @@ "node": ">=8" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", - "dev": true + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -1561,30 +1042,26 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==" }, "node_modules/string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, "engines": { "node": ">=0.6.19" } @@ -1593,7 +1070,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -1607,7 +1083,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, "dependencies": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", @@ -1621,7 +1096,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.0" }, @@ -1633,34 +1107,33 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, "engines": { "node": ">=6" } }, "node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -1672,7 +1145,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, "bin": { "tree-kill": "cli.js" } @@ -1680,16 +1152,14 @@ "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true, + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1699,7 +1169,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -1709,7 +1178,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -1720,17 +1188,10 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -1743,177 +1204,132 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, "node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, "engines": { "node": ">= 6" } }, "node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, "node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true, + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "node": ">=10" } } }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.14.5" } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==" }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -1922,44 +1338,38 @@ "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" } }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -1967,33 +1377,23 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "dependencies": { "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -2001,14 +1401,12 @@ "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, "requires": { "restore-cursor": "^3.1.0" } @@ -2017,117 +1415,64 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, "requires": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" } }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, "concurrently": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", - "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", - "dev": true, + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.2.0.tgz", + "integrity": "sha512-v9I4Y3wFoXCSY2L73yYgwA9ESrQMpRn80jMcqMgHx720Hecz2GZAvTI6bREVST6lkddNypDKRN22qhK0X8Y00g==", "requires": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "read-pkg": "^5.2.0", + "rxjs": "^6.6.3", "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", + "supports-color": "^8.1.0", "tree-kill": "^1.2.2", - "yargs": "^13.3.0" + "yargs": "^16.2.0" } }, "cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "dev": true, "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -2140,7 +1485,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2148,52 +1492,32 @@ } }, "date-fns": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.19.0.tgz", - "integrity": "sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==", - "dev": true + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.22.1.tgz", + "integrity": "sha512-yUFPQjrxEmIsMqlHhAhmxkuH769baF21Kk+nZwZGyrMoyLA+LugaQtC0+Tqf9CBUUULWwUJt6Q5ySI3LJDDCGg==" }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "requires": { "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, "requires": { "ansi-colors": "^4.1.1" } @@ -2202,126 +1526,96 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" }, "husky": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-5.1.3.tgz", - "integrity": "sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg==", - "dev": true + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz", + "integrity": "sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==" }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -2330,20 +1624,17 @@ "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "requires": { "has": "^1.0.3" } @@ -2351,293 +1642,107 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, "lint-staged": { - "version": "10.5.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz", - "integrity": "sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==", - "dev": true, + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-11.0.0.tgz", + "integrity": "sha512-3rsRIoyaE8IphSUtO1RVTFl1e0SLBtxxUOPBtHxQgBHS5/i6nqvjcUfNioMa4BU9yGnPzbO+xkfLtXtxBpCzjw==", "requires": { - "chalk": "^4.1.0", + "chalk": "^4.1.1", "cli-truncate": "^2.1.0", - "commander": "^6.2.0", + "commander": "^7.2.0", "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", + "debug": "^4.3.1", "dedent": "^0.7.0", "enquirer": "^2.3.6", - "execa": "^4.1.0", - "listr2": "^3.2.2", - "log-symbols": "^4.0.0", - "micromatch": "^4.0.2", + "execa": "^5.0.0", + "listr2": "^3.8.2", + "log-symbols": "^4.1.0", + "micromatch": "^4.0.4", "normalize-path": "^3.0.0", "please-upgrade-node": "^3.2.0", "string-argv": "0.3.1", "stringify-object": "^3.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "listr2": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.4.3.tgz", - "integrity": "sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA==", - "dev": true, + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.10.0.tgz", + "integrity": "sha512-eP40ZHihu70sSmqFNbNy2NL1YwImmlMmPh9WO5sLmPDleurMHt3n+SwEWNu2kzKScexZnkyFtc1VI0z/TGlmpw==", "requires": { - "chalk": "^4.1.0", "cli-truncate": "^2.1.0", - "figures": "^3.2.0", - "indent-string": "^4.0.0", + "colorette": "^1.2.2", "log-update": "^4.0.0", "p-map": "^4.0.0", - "rxjs": "^6.6.6", + "rxjs": "^6.6.7", "through": "^2.3.8", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" } }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "log-update": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, "requires": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -2645,35 +1750,10 @@ "wrap-ansi": "^6.2.0" }, "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -2684,7 +1764,6 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -2696,36 +1775,31 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "requires": { "braces": "^3.0.1", - "picomatch": "^2.0.5" + "picomatch": "^2.2.3" } }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -2736,74 +1810,36 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, "requires": { "path-key": "^3.0.0" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, "onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, "requires": { "mimic-fn": "^2.1.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "requires": { "aggregate-error": "^3.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -2812,7 +1848,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -2820,101 +1855,61 @@ "lines-and-columns": "^1.1.6" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" }, "please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, "requires": { "semver-compare": "^1.0.0" } }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" } } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -2923,24 +1918,21 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", - "dev": true, + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "requires": { "tslib": "^1.9.0" } @@ -2948,26 +1940,17 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -2975,63 +1958,32 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, "spawn-command": { "version": "0.0.2-1", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", - "dev": true + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -3040,36 +1992,31 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==" }, "string-argv": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==" }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3080,7 +2027,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "dev": true, "requires": { "get-own-enumerable-property-symbols": "^3.0.0", "is-obj": "^1.0.1", @@ -3091,7 +2037,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, "requires": { "ansi-regex": "^5.0.0" } @@ -3099,29 +2044,25 @@ "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -3129,26 +2070,22 @@ "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -3158,139 +2095,48 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" } } } diff --git a/package.json b/package.json index b6e05d5a..2038a62c 100644 --- a/package.json +++ b/package.json @@ -40,9 +40,9 @@ "npm run server:lint" ] }, - "devDependencies": { - "concurrently": "^5.3.0", - "husky": "^5.0.9", - "lint-staged": "^10.5.4" + "dependencies": { + "concurrently": "^6.2.0", + "husky": "^6.0.0", + "lint-staged": "^11.0.0" } } diff --git a/server/.env b/server/.env index cca5da54..4aab02ca 100644 --- a/server/.env +++ b/server/.env @@ -1,4 +1,4 @@ TZ=UTC BASE_URL=http://localhost:1337 -DATABASE_URL=postgresql://postgres@localhost/planka +DATABASE_URL=postgresql://ghostly@localhost/planka SECRET_KEY=notsecretkey diff --git a/server/api/controllers/access-tokens/create.js b/server/api/controllers/access-tokens/create.js index a95c7460..1ca6eead 100755 --- a/server/api/controllers/access-tokens/create.js +++ b/server/api/controllers/access-tokens/create.js @@ -37,8 +37,8 @@ module.exports = { }, }, - async fn(inputs, exits) { - const user = await sails.helpers.getUserByEmailOrUsername(inputs.emailOrUsername); + async fn(inputs) { + const user = await sails.helpers.users.getOneByEmailOrUsername(inputs.emailOrUsername); if (!user) { throw Errors.INVALID_EMAIL_OR_USERNAME; @@ -48,8 +48,8 @@ module.exports = { throw Errors.INVALID_PASSWORD; } - return exits.success({ - item: sails.helpers.signToken(user.id), - }); + return { + item: sails.helpers.utils.signToken(user.id), + }; }, }; diff --git a/server/api/controllers/actions/index.js b/server/api/controllers/actions/index.js index dcb4942a..8697c71a 100755 --- a/server/api/controllers/actions/index.js +++ b/server/api/controllers/actions/index.js @@ -23,32 +23,36 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { card, project } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - if (!isUserMemberForProject) { - throw Errors.CARD_NOT_FOUND; // Forbidden + if (!isBoardMember) { + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + project.id, + ); + + if (!isProjectManager) { + throw Errors.BOARD_NOT_FOUND; // Forbidden + } } - const actions = await sails.helpers.getActionsForCard(inputs.cardId, inputs.beforeId); + const actions = await sails.helpers.cards.getActions(card.id, inputs.beforeId); - const userIds = sails.helpers.mapRecords(actions, 'userId', true); - const users = await sails.helpers.getUsers(userIds, true); + const userIds = sails.helpers.utils.mapRecords(actions, 'userId', true); + const users = await sails.helpers.users.getMany(userIds, true); - return exits.success({ + return { items: actions, included: { users, }, - }); + }; }, }; diff --git a/server/api/controllers/attachments/create.js b/server/api/controllers/attachments/create.js index 9f3d77ad..a36dd437 100644 --- a/server/api/controllers/attachments/create.js +++ b/server/api/controllers/attachments/create.js @@ -29,46 +29,45 @@ module.exports = { async fn(inputs, exits) { const { currentUser } = this.req; - const { card, project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { card } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } - this.req.file('file').upload(sails.helpers.createAttachmentReceiver(), async (error, files) => { - if (error) { - return exits.uploadError(error.message); - } + this.req + .file('file') + .upload(sails.helpers.utils.createAttachmentReceiver(), async (error, files) => { + if (error) { + return exits.uploadError(error.message); + } - if (files.length === 0) { - return exits.uploadError('No file was uploaded'); - } + if (files.length === 0) { + return exits.uploadError('No file was uploaded'); + } - const file = files[0]; + const file = files[0]; - const attachment = await sails.helpers.createAttachment( - card, - currentUser, - { - dirname: file.extra.dirname, - filename: file.filename, - isImage: file.extra.isImage, - name: file.extra.name, - }, - inputs.requestId, - this.req, - ); + const attachment = await sails.helpers.attachments.createOne( + { + dirname: file.extra.dirname, + filename: file.filename, + isImage: file.extra.isImage, + name: file.extra.name, + }, + currentUser, + card, + inputs.requestId, + this.req, + ); - return exits.success({ - item: attachment.toJSON(), + return exits.success({ + item: attachment.toJSON(), + }); }); - }); }, }; diff --git a/server/api/controllers/attachments/delete.js b/server/api/controllers/attachments/delete.js index be2f5be4..1968e86e 100755 --- a/server/api/controllers/attachments/delete.js +++ b/server/api/controllers/attachments/delete.js @@ -19,33 +19,30 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const attachmentToProjectPath = await sails.helpers - .getAttachmentToProjectPath(inputs.id) + const path = await sails.helpers.attachments + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.ATTACHMENT_NOT_FOUND); - let { attachment } = attachmentToProjectPath; - const { card, board, project } = attachmentToProjectPath; + let { attachment } = path; + const { card, board } = path; - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.ATTACHMENT_NOT_FOUND; // Forbidden } - attachment = await sails.helpers.deleteAttachment(attachment, card, board, this.req); + attachment = await sails.helpers.attachments.deleteOne(attachment, board, card, this.req); if (!attachment) { throw Errors.ATTACHMENT_NOT_FOUND; } - return exits.success({ + return { item: attachment, - }); + }; }, }; diff --git a/server/api/controllers/attachments/update.js b/server/api/controllers/attachments/update.js index c3767266..d9c0da0a 100755 --- a/server/api/controllers/attachments/update.js +++ b/server/api/controllers/attachments/update.js @@ -23,34 +23,31 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const attachmentToProjectPath = await sails.helpers - .getAttachmentToProjectPath(inputs.id) + const path = await sails.helpers.attachments + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.ATTACHMENT_NOT_FOUND); - let { attachment } = attachmentToProjectPath; - const { board, project } = attachmentToProjectPath; + let { attachment } = path; + const { board } = path; - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.ATTACHMENT_NOT_FOUND; // Forbidden } const values = _.pick(inputs, ['name']); - attachment = await sails.helpers.updateAttachment(attachment, values, board, this.req); + attachment = await sails.helpers.attachments.updateOne(attachment, values, board, this.req); if (!attachment) { throw Errors.ATTACHMENT_NOT_FOUND; } - return exits.success({ + return { item: attachment, - }); + }; }, }; diff --git a/server/api/controllers/board-memberships/create.js b/server/api/controllers/board-memberships/create.js new file mode 100755 index 00000000..892b027f --- /dev/null +++ b/server/api/controllers/board-memberships/create.js @@ -0,0 +1,69 @@ +const Errors = { + BOARD_NOT_FOUND: { + boardNotFound: 'Board not found', + }, + USER_NOT_FOUND: { + userNotFound: 'User not found', + }, + USER_ALREADY_BOARD_MEMBER: { + userAlreadyBoardMember: 'User already board member', + }, +}; + +module.exports = { + inputs: { + boardId: { + type: 'string', + regex: /^[0-9]+$/, + required: true, + }, + userId: { + type: 'string', + regex: /^[0-9]+$/, + required: true, + }, + }, + + exits: { + boardNotFound: { + responseType: 'notFound', + }, + userNotFound: { + responseType: 'notFound', + }, + userAlreadyBoardMember: { + responseType: 'conflict', + }, + }, + + async fn(inputs) { + const { currentUser } = this.req; + + const { board } = await sails.helpers.boards + .getProjectPath(inputs.boardId) + .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); + + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + board.projectId, + ); + + if (!isProjectManager) { + throw Errors.BOARD_NOT_FOUND; // Forbidden + } + + const user = await sails.helpers.users.getOne(inputs.userId); + + if (!user) { + throw Error.USER_NOT_FOUND; + } + + const boardMembership = await sails.helpers.boardMemberships + .createOne(user, board, this.req) + .intercept('userAlreadyBoardMember', () => Errors.USER_ALREADY_BOARD_MEMBER); + + return { + item: boardMembership, + }; + }, +}; diff --git a/server/api/controllers/board-memberships/delete.js b/server/api/controllers/board-memberships/delete.js new file mode 100755 index 00000000..f4aacf90 --- /dev/null +++ b/server/api/controllers/board-memberships/delete.js @@ -0,0 +1,57 @@ +const Errors = { + BOARD_MEMBERSHIP_NOT_FOUND: { + boardMembershipNotFound: 'Board membership not found', + }, +}; + +module.exports = { + inputs: { + id: { + type: 'string', + regex: /^[0-9]+$/, + required: true, + }, + }, + + exits: { + boardMembershipNotFound: { + responseType: 'notFound', + }, + }, + + async fn(inputs) { + const { currentUser } = this.req; + + const path = await sails.helpers.boardMemberships + .getProjectPath(inputs.id) + .intercept('pathNotFound', () => Errors.BOARD_MEMBERSHIP_NOT_FOUND); + + let { boardMembership } = path; + const { project } = path; + + if (boardMembership.userId !== currentUser.id) { + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + project.id, + ); + + if (!isProjectManager) { + throw Errors.BOARD_MEMBERSHIP_NOT_FOUND; + } + } + + boardMembership = await sails.helpers.boardMemberships.deleteOne( + boardMembership, + project, + this.req, + ); + + if (!boardMembership) { + throw Errors.BOARD_MEMBERSHIP_NOT_FOUND; + } + + return { + item: boardMembership, + }; + }, +}; diff --git a/server/api/controllers/boards/create.js b/server/api/controllers/boards/create.js index 7c5f1b27..7aaada4a 100755 --- a/server/api/controllers/boards/create.js +++ b/server/api/controllers/boards/create.js @@ -13,7 +13,7 @@ module.exports = { }, type: { type: 'string', - isIn: Board.TYPES, + isIn: Object.values(Board.Types), required: true, }, position: { @@ -32,29 +32,42 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { // TODO: allow over HTTP without subscription if (!this.req.isSocket) { return this.res.badRequest(); } + const { currentUser } = this.req; + const project = await Project.findOne(inputs.projectId); if (!project) { throw Errors.PROJECT_NOT_FOUND; } + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); + + if (!isProjectManager) { + throw Errors.PROJECT_NOT_FOUND; // Forbidden + } + const values = _.pick(inputs, ['type', 'position', 'name']); - const board = await sails.helpers.createBoard(project, values, this.req); + + const { board, boardMembership } = await sails.helpers.boards.createOne( + values, + currentUser, + project, + this.req, + ); sails.sockets.join(this.req, `board:${board.id}`); // TODO: only when subscription needed - return exits.success({ + return { item: board, included: { - lists: [], - labels: [], + boardMemberships: [boardMembership], }, - }); + }; }, }; diff --git a/server/api/controllers/boards/delete.js b/server/api/controllers/boards/delete.js index 9987ba6b..906bfb7f 100755 --- a/server/api/controllers/boards/delete.js +++ b/server/api/controllers/boards/delete.js @@ -19,21 +19,32 @@ module.exports = { }, }, - async fn(inputs, exits) { - let board = await Board.findOne(inputs.id); + async fn(inputs) { + let { board } = await sails.helpers.boards + .getProjectPath(inputs.id) + .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); if (!board) { throw Errors.BOARD_NOT_FOUND; } - board = await sails.helpers.deleteBoard(board, this.req); + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + board.projectId, + ); + + if (!isProjectManager) { + throw Errors.BOARD_NOT_FOUND; // Forbidden + } + + board = await sails.helpers.boards.deleteOne(board, this.req); if (!board) { throw Errors.BOARD_NOT_FOUND; } - return exits.success({ + return { item: board, - }); + }; }, }; diff --git a/server/api/controllers/boards/show.js b/server/api/controllers/boards/show.js index c871fa85..8fbb017f 100755 --- a/server/api/controllers/boards/show.js +++ b/server/api/controllers/boards/show.js @@ -19,7 +19,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { // TODO: allow over HTTP without subscription if (!this.req.isSocket) { return this.res.badRequest(); @@ -27,35 +27,43 @@ module.exports = { const { currentUser } = this.req; - const { board, project } = await sails.helpers - .getBoardToProjectPath(inputs.id) + const { board, project } = await sails.helpers.boards + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { - throw Errors.BOARD_NOT_FOUND; // Forbidden + if (!isBoardMember) { + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + project.id, + ); + + if (!isProjectManager) { + throw Errors.BOARD_NOT_FOUND; // Forbidden + } } - const labels = await sails.helpers.getLabelsForBoard(board.id); - const lists = await sails.helpers.getListsForBoard(board.id); + const boardMemberships = await sails.helpers.boards.getBoardMemberships(board.id); - const cards = await sails.helpers.getCardsForBoard(board); - const cardIds = sails.helpers.mapRecords(cards); + const userIds = sails.helpers.utils.mapRecords(boardMemberships, 'userId'); + const users = await sails.helpers.users.getMany(userIds); - const cardSubscriptions = await sails.helpers.getSubscriptionsByUserForCard( - cardIds, - currentUser.id, - ); + const labels = await sails.helpers.boards.getLabels(board.id); + const lists = await sails.helpers.boards.getLists(board.id); - const cardMemberships = await sails.helpers.getMembershipsForCard(cardIds); - const cardLabels = await sails.helpers.getCardLabelsForCard(cardIds); + const cards = await sails.helpers.boards.getCards(board); + const cardIds = sails.helpers.utils.mapRecords(cards); - const tasks = await sails.helpers.getTasksForCard(cardIds); - const attachments = await sails.helpers.getAttachmentsForCard(cardIds); + const cardSubscriptions = await sails.helpers.cardSubscriptions.getMany({ + cardId: cardIds, + userId: currentUser.id, + }); + + const cardMemberships = await sails.helpers.cards.getCardMemberships(cardIds); + const cardLabels = await sails.helpers.cards.getCardLabels(cardIds); + const tasks = await sails.helpers.cards.getTasks(cardIds); + const attachments = await sails.helpers.cards.getAttachments(cardIds); const isSubscribedByCardId = cardSubscriptions.reduce( (result, cardSubscription) => ({ @@ -65,16 +73,17 @@ module.exports = { {}, ); - cards.map((card) => ({ - ...card, - isSubscribed: isSubscribedByCardId[card.id] || false, - })); + cards.forEach((card) => { + card.isSubscribed = isSubscribedByCardId[card.id] || false; // eslint-disable-line no-param-reassign + }); sails.sockets.join(this.req, `board:${board.id}`); // TODO: only when subscription needed - return exits.success({ + return { item: board, included: { + users, + boardMemberships, labels, lists, cards, @@ -82,7 +91,8 @@ module.exports = { cardLabels, tasks, attachments, + projects: [project], }, - }); + }; }, }; diff --git a/server/api/controllers/boards/update.js b/server/api/controllers/boards/update.js index 66163bca..745af6ca 100755 --- a/server/api/controllers/boards/update.js +++ b/server/api/controllers/boards/update.js @@ -26,22 +26,35 @@ module.exports = { }, }, - async fn(inputs, exits) { - let board = await Board.findOne(inputs.id); + async fn(inputs) { + const { currentUser } = this.req; + + let { board } = await sails.helpers.boards + .getProjectPath(inputs.id) + .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); if (!board) { throw Errors.BOARD_NOT_FOUND; } + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + board.projectId, + ); + + if (!isProjectManager) { + throw Errors.BOARD_NOT_FOUND; // Forbidden + } + const values = _.pick(inputs, ['position', 'name']); - board = await sails.helpers.updateBoard(board, values, this.req); + board = await sails.helpers.boards.updateOne(board, values, this.req); if (!board) { throw Errors.BOARD_NOT_FOUND; } - return exits.success({ + return { item: board, - }); + }; }, }; diff --git a/server/api/controllers/card-labels/create.js b/server/api/controllers/card-labels/create.js index 3d205342..1ce0b966 100755 --- a/server/api/controllers/card-labels/create.js +++ b/server/api/controllers/card-labels/create.js @@ -36,19 +36,16 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { card, project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { card } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } @@ -61,12 +58,12 @@ module.exports = { throw Errors.LABEL_NOT_FOUND; } - const cardLabel = await sails.helpers - .createCardLabel(card, label, this.req) + const cardLabel = await sails.helpers.cardLabels + .createOne(label, card, this.req) .intercept('labelAlreadyInCard', () => Errors.LABEL_ALREADY_IN_CARD); - return exits.success({ + return { item: cardLabel, - }); + }; }, }; diff --git a/server/api/controllers/card-labels/delete.js b/server/api/controllers/card-labels/delete.js index 0fde5016..e8c5d093 100755 --- a/server/api/controllers/card-labels/delete.js +++ b/server/api/controllers/card-labels/delete.js @@ -30,19 +30,16 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { board, project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { board } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } @@ -55,14 +52,14 @@ module.exports = { throw Errors.LABEL_NOT_IN_CARD; } - cardLabel = await sails.helpers.deleteCardLabel(cardLabel, board, this.req); + cardLabel = await sails.helpers.cardLabels.deleteOne(cardLabel, board, this.req); if (!cardLabel) { throw Errors.LABEL_NOT_IN_CARD; } - return exits.success({ + return { item: cardLabel, - }); + }; }, }; diff --git a/server/api/controllers/card-memberships/create.js b/server/api/controllers/card-memberships/create.js index 3dfdf397..b0410de4 100755 --- a/server/api/controllers/card-memberships/create.js +++ b/server/api/controllers/card-memberships/create.js @@ -36,34 +36,31 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { card, project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { card } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - let isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + let isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } - isUserMemberForProject = await sails.helpers.isUserMemberForProject(project.id, inputs.userId); + isBoardMember = await sails.helpers.users.isBoardMember(inputs.userId, card.boardId); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.USER_NOT_FOUND; } - const cardMembership = await sails.helpers - .createCardMembership(card, inputs.userId, this.req) + const cardMembership = await sails.helpers.cardMemberships + .createOne(inputs.userId, card, this.req) .intercept('userAlreadyCardMember', () => Errors.USER_ALREADY_CARD_MEMBER); - return exits.success({ + return { item: cardMembership, - }); + }; }, }; diff --git a/server/api/controllers/card-memberships/delete.js b/server/api/controllers/card-memberships/delete.js index 09b42e69..b7cb1d3b 100755 --- a/server/api/controllers/card-memberships/delete.js +++ b/server/api/controllers/card-memberships/delete.js @@ -30,19 +30,16 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { board, project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { board } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } @@ -55,14 +52,14 @@ module.exports = { throw Errors.USER_NOT_CARD_MEMBER; } - cardMembership = await sails.helpers.deleteCardMembership(cardMembership, board, this.req); + cardMembership = await sails.helpers.cardMemberships.deleteOne(cardMembership, board, this.req); if (!cardMembership) { throw Errors.USER_NOT_CARD_MEMBER; } - return exits.success({ + return { item: cardMembership, - }); + }; }, }; diff --git a/server/api/controllers/cards/create.js b/server/api/controllers/cards/create.js index da427bf1..0638a643 100755 --- a/server/api/controllers/cards/create.js +++ b/server/api/controllers/cards/create.js @@ -81,20 +81,17 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { board, project } = await sails.helpers - .getBoardToProjectPath(inputs.boardId) + const { board } = await sails.helpers.boards + .getProjectPath(inputs.boardId) .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { - throw Errors.LIST_NOT_FOUND; // Forbidden + if (!isBoardMember) { + throw Errors.BOARD_NOT_FOUND; // Forbidden } let list; @@ -111,19 +108,13 @@ module.exports = { const values = _.pick(inputs, ['position', 'name', 'description', 'dueDate', 'timer']); - const card = await sails.helpers - .createCard(board, list, values, currentUser, this.req) + const card = await sails.helpers.cards + .createOne(values, currentUser, board, list, this.req) .intercept('listMustBePresent', () => Errors.LIST_MUST_BE_PRESENT) .intercept('positionMustBeInValues', () => Errors.POSITION_MUST_BE_PRESENT); - return exits.success({ + return { item: card, - included: { - cardMemberships: [], - cardLabels: [], - tasks: [], - attachments: [], - }, - }); + }; }, }; diff --git a/server/api/controllers/cards/delete.js b/server/api/controllers/cards/delete.js index 7ee4eadc..3ae416da 100755 --- a/server/api/controllers/cards/delete.js +++ b/server/api/controllers/cards/delete.js @@ -19,33 +19,27 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const cardToProjectPath = await sails.helpers - .getCardToProjectPath(inputs.id) + let { card } = await sails.helpers.cards + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - let { card } = cardToProjectPath; - const { project } = cardToProjectPath; + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); - - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } - card = await sails.helpers.deleteCard(card, this.req); + card = await sails.helpers.cards.deleteOne(card, this.req); if (!card) { throw Errors.CARD_NOT_FOUND; } - return exits.success({ + return { item: card, - }); + }; }, }; diff --git a/server/api/controllers/cards/index.js b/server/api/controllers/cards/index.js index a5c12210..1515a7a0 100644 --- a/server/api/controllers/cards/index.js +++ b/server/api/controllers/cards/index.js @@ -26,32 +26,23 @@ module.exports = { async fn(inputs, exits) { const { currentUser } = this.req; - const { board, project } = await sails.helpers - .getBoardToProjectPath(inputs.boardId) + const { board } = await sails.helpers.boards + .getProjectPath(inputs.boardId) .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.BOARD_NOT_FOUND; // Forbidden } - const cards = await sails.helpers.getCardsForBoard(board, inputs.beforeId); - const cardIds = sails.helpers.mapRecords(cards); + const cards = await sails.helpers.boards.getCards(board, inputs.beforeId); + const cardIds = sails.helpers.utils.mapRecords(cards); - const cardSubscriptions = await sails.helpers.getSubscriptionsByUserForCard( - cardIds, - currentUser.id, - ); - - const cardMemberships = await sails.helpers.getMembershipsForCard(cardIds); - const cardLabels = await sails.helpers.getCardLabelsForCard(cardIds); - - const tasks = await sails.helpers.getTasksForCard(cardIds); - const attachments = await sails.helpers.getAttachmentsForCard(cardIds); + const cardSubscriptions = await sails.helpers.cardSubscriptions.getMany({ + cardId: cardIds, + userId: currentUser.id, + }); const isSubscribedByCardId = cardSubscriptions.reduce( (result, cardSubscription) => ({ @@ -61,10 +52,14 @@ module.exports = { {}, ); - cards.map((card) => ({ - ...card, - isSubscribed: isSubscribedByCardId[card.id] || false, - })); + cards.forEach((card) => { + card.isSubscribed = isSubscribedByCardId[card.id] || false; // eslint-disable-line no-param-reassign + }); + + const cardMemberships = await sails.helpers.cards.getCardMemberships(cardIds); + const cardLabels = await sails.helpers.cards.getCardLabels(cardIds); + const tasks = await sails.helpers.cards.getTasks(cardIds); + const attachments = await sails.helpers.cards.getAttachments(cardIds); return exits.success({ items: cards, diff --git a/server/api/controllers/cards/show.js b/server/api/controllers/cards/show.js index ddadb9fa..bc37eb06 100755 --- a/server/api/controllers/cards/show.js +++ b/server/api/controllers/cards/show.js @@ -19,24 +19,41 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { card, project } = await sails.helpers - .getCardToProjectPath(inputs.id) + const { card, project } = await sails.helpers.cards + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - if (!isUserMemberForProject) { - throw Errors.CARD_NOT_FOUND; // Forbidden + if (!isBoardMember) { + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + project.id, + ); + + if (!isProjectManager) { + throw Errors.CARD_NOT_FOUND; // Forbidden + } } - return exits.success({ + card.isSubscribed = await sails.helpers.users.isCardSubscriber(currentUser.id, card.id); + + const cardMemberships = await sails.helpers.cards.getCardMemberships(card.id); + const cardLabels = await sails.helpers.cards.getCardLabels(card.id); + const tasks = await sails.helpers.cards.getTasks(card.id); + const attachments = await sails.helpers.cards.getAttachments(card.id); + + return { item: card, - }); + included: { + cardMemberships, + cardLabels, + tasks, + attachments, + }, + }; }, }; diff --git a/server/api/controllers/cards/update.js b/server/api/controllers/cards/update.js index 8c9a0d56..227689ea 100755 --- a/server/api/controllers/cards/update.js +++ b/server/api/controllers/cards/update.js @@ -100,49 +100,43 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const cardToProjectPath = await sails.helpers - .getCardToProjectPath(inputs.id) + const path = await sails.helpers.cards + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - let { card, project } = cardToProjectPath; - const { list, board } = cardToProjectPath; + let { card } = path; + const { list, board } = path; - let isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + let isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } - let toBoard; + let nextBoard; if (!_.isUndefined(inputs.boardId)) { - ({ board: toBoard, project } = await sails.helpers - .getBoardToProjectPath(inputs.boardId) + ({ board: nextBoard } = await sails.helpers.boards + .getProjectPath(inputs.boardId) .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND)); - isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, nextBoard.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.BOARD_NOT_FOUND; // Forbidden } } - let toList; + let nextList; if (!_.isUndefined(inputs.listId)) { - toList = await List.findOne({ + nextList = await List.findOne({ id: inputs.listId, - boardId: (toBoard || board).id, + boardId: (nextBoard || board).id, }); - if (!toList) { + if (!nextList) { throw Errors.LIST_NOT_FOUND; // Forbidden } } @@ -157,17 +151,17 @@ module.exports = { 'isSubscribed', ]); - card = await sails.helpers - .updateCard(card, toBoard, toList, values, board, list, currentUser, this.req) - .intercept('toListMustBePresent', () => Errors.LIST_MUST_BE_PRESENT) + card = await sails.helpers.cards + .updateOne(card, values, nextBoard, nextList, currentUser, board, list, this.req) + .intercept('nextListMustBePresent', () => Errors.LIST_MUST_BE_PRESENT) .intercept('positionMustBeInValues', () => Errors.POSITION_MUST_BE_PRESENT); if (!card) { throw Errors.CARD_NOT_FOUND; } - return exits.success({ + return { item: card, - }); + }; }, }; diff --git a/server/api/controllers/comment-actions/create.js b/server/api/controllers/comment-actions/create.js index a5de36d7..b7d59ade 100755 --- a/server/api/controllers/comment-actions/create.js +++ b/server/api/controllers/comment-actions/create.js @@ -23,31 +23,28 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { card, project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { card } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } const values = { - type: 'commentCard', + type: Action.Types.COMMENT_CARD, data: _.pick(inputs, ['text']), }; - const action = await sails.helpers.createAction(card, currentUser, values, this.req); + const action = await sails.helpers.actions.createOne(values, currentUser, card, this.req); - return exits.success({ + return { item: action, - }); + }; }, }; diff --git a/server/api/controllers/comment-actions/delete.js b/server/api/controllers/comment-actions/delete.js index 1434f1cb..c6943e02 100755 --- a/server/api/controllers/comment-actions/delete.js +++ b/server/api/controllers/comment-actions/delete.js @@ -19,42 +19,41 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const criteria = { - id: inputs.id, - type: 'commentCard', - }; - - if (!currentUser.isAdmin) { - criteria.userId = currentUser.id; - } - - const actionToProjectPath = await sails.helpers - .getActionToProjectPath(criteria) + const path = await sails.helpers.actions + .getProjectPath({ + id: inputs.id, + type: Action.Types.COMMENT_CARD, + }) .intercept('pathNotFound', () => Errors.COMMENT_ACTION_NOT_FOUND); - let { action } = actionToProjectPath; - const { board, project } = actionToProjectPath; + let { action } = path; + const { board, project } = path; - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); - if (!isUserMemberForProject) { - throw Errors.COMMENT_ACTION_NOT_FOUND; // Forbidden + if (!isProjectManager) { + if (action.userId !== currentUser.id) { + throw Errors.COMMENT_ACTION_NOT_FOUND; // Forbidden + } + + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); + + if (!isBoardMember) { + throw Errors.COMMENT_ACTION_NOT_FOUND; // Forbidden + } } - action = await sails.helpers.deleteAction(action, board, this.req); + action = await sails.helpers.actions.deleteOne(action, board, this.req); if (!action) { throw Errors.COMMENT_ACTION_NOT_FOUND; } - return exits.success({ + return { item: action, - }); + }; }, }; diff --git a/server/api/controllers/comment-actions/update.js b/server/api/controllers/comment-actions/update.js index 9a995fae..4a3d87fa 100755 --- a/server/api/controllers/comment-actions/update.js +++ b/server/api/controllers/comment-actions/update.js @@ -23,41 +23,45 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const actionToProjectPath = await sails.helpers - .getActionToProjectPath({ + const path = await sails.helpers.actions + .getProjectPath({ id: inputs.id, - type: 'commentCard', - userId: currentUser.id, + type: Action.Types.COMMENT_CARD, }) .intercept('pathNotFound', () => Errors.COMMENT_ACTION_NOT_FOUND); - let { action } = actionToProjectPath; - const { board, project } = actionToProjectPath; + let { action } = path; + const { board, project } = path; - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); - if (!isUserMemberForProject) { - throw Errors.COMMENT_ACTION_NOT_FOUND; // Forbidden + if (!isProjectManager) { + if (action.userId !== currentUser.id) { + throw Errors.COMMENT_ACTION_NOT_FOUND; // Forbidden + } + + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); + + if (!isBoardMember) { + throw Errors.COMMENT_ACTION_NOT_FOUND; // Forbidden + } } const values = { data: _.pick(inputs, ['text']), }; - action = await sails.helpers.updateAction(action, values, board, this.req); + action = await sails.helpers.actions.updateOne(action, values, board, this.req); if (!action) { throw Errors.COMMENT_ACTION_NOT_FOUND; } - return exits.success({ + return { item: action, - }); + }; }, }; diff --git a/server/api/controllers/labels/create.js b/server/api/controllers/labels/create.js index fcce4047..70a9771d 100755 --- a/server/api/controllers/labels/create.js +++ b/server/api/controllers/labels/create.js @@ -29,27 +29,24 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { board, project } = await sails.helpers - .getBoardToProjectPath(inputs.boardId) + const { board } = await sails.helpers.boards + .getProjectPath(inputs.boardId) .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.BOARD_NOT_FOUND; // Forbidden } const values = _.pick(inputs, ['name', 'color']); - const label = await sails.helpers.createLabel(board, values, this.req); + const label = await sails.helpers.labels.createOne(values, board, this.req); - return exits.success({ + return { item: label, - }); + }; }, }; diff --git a/server/api/controllers/labels/delete.js b/server/api/controllers/labels/delete.js index f19159bd..738bedff 100755 --- a/server/api/controllers/labels/delete.js +++ b/server/api/controllers/labels/delete.js @@ -19,33 +19,27 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const labelToProjectPath = await sails.helpers - .getLabelToProjectPath(inputs.id) + let { label } = await sails.helpers.labels + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.LABEL_NOT_FOUND); - let { label } = labelToProjectPath; - const { project } = labelToProjectPath; + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, label.boardId); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); - - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.LABEL_NOT_FOUND; // Forbidden } - label = await sails.helpers.deleteLabel(label, this.req); + label = await sails.helpers.labels.deleteOne(label, this.req); if (!label) { throw Errors.LABEL_NOT_FOUND; } - return exits.success({ + return { item: label, - }); + }; }, }; diff --git a/server/api/controllers/labels/update.js b/server/api/controllers/labels/update.js index d16e5246..7f5dabbf 100755 --- a/server/api/controllers/labels/update.js +++ b/server/api/controllers/labels/update.js @@ -29,30 +29,24 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const labelToProjectPath = await sails.helpers - .getLabelToProjectPath(inputs.id) + let { label } = await sails.helpers.labels + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.LABEL_NOT_FOUND); - let { label } = labelToProjectPath; - const { project } = labelToProjectPath; + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, label.boardId); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); - - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.LABEL_NOT_FOUND; // Forbidden } const values = _.pick(inputs, ['name', 'color']); - label = await sails.helpers.updateLabel(label, values, this.req); + label = await sails.helpers.labels.updateOne(label, values, this.req); - return exits.success({ + return { item: label, - }); + }; }, }; diff --git a/server/api/controllers/lists/create.js b/server/api/controllers/lists/create.js index 4dbab37b..e434003b 100755 --- a/server/api/controllers/lists/create.js +++ b/server/api/controllers/lists/create.js @@ -27,27 +27,24 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { board, project } = await sails.helpers - .getBoardToProjectPath(inputs.boardId) + const { board } = await sails.helpers.boards + .getProjectPath(inputs.boardId) .intercept('pathNotFound', () => Errors.BOARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.BOARD_NOT_FOUND; // Forbidden } const values = _.pick(inputs, ['position', 'name']); - const list = await sails.helpers.createList(board, values, this.req); + const list = await sails.helpers.lists.createOne(values, board, this.req); - return exits.success({ + return { item: list, - }); + }; }, }; diff --git a/server/api/controllers/lists/delete.js b/server/api/controllers/lists/delete.js index 2fbaa0bf..dba700d2 100755 --- a/server/api/controllers/lists/delete.js +++ b/server/api/controllers/lists/delete.js @@ -19,33 +19,27 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const listToProjectPath = await sails.helpers - .getListToProjectPath(inputs.id) + let { list } = await sails.helpers.lists + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.LIST_NOT_FOUND); - let { list } = listToProjectPath; - const { project } = listToProjectPath; + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, list.boardId); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); - - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.LIST_NOT_FOUND; // Forbidden } - list = await sails.helpers.deleteList(list, this.req); + list = await sails.helpers.lists.deleteOne(list, this.req); if (!list) { throw Errors.LIST_NOT_FOUND; } - return exits.success({ + return { item: list, - }); + }; }, }; diff --git a/server/api/controllers/lists/update.js b/server/api/controllers/lists/update.js index 757c1df3..ae6b2490 100755 --- a/server/api/controllers/lists/update.js +++ b/server/api/controllers/lists/update.js @@ -26,34 +26,28 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const listToProjectPath = await sails.helpers - .getListToProjectPath(inputs.id) + let { list } = await sails.helpers.lists + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.LIST_NOT_FOUND); - let { list } = listToProjectPath; - const { project } = listToProjectPath; + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, list.boardId); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); - - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.LIST_NOT_FOUND; // Forbidden } const values = _.pick(inputs, ['position', 'name']); - list = await sails.helpers.updateList(list, values, this.req); + list = await sails.helpers.lists.updateOne(list, values, this.req); if (!list) { throw Errors.LIST_NOT_FOUND; } - return exits.success({ + return { item: list, - }); + }; }, }; diff --git a/server/api/controllers/notifications/index.js b/server/api/controllers/notifications/index.js index f72e92a2..f054bb74 100755 --- a/server/api/controllers/notifications/index.js +++ b/server/api/controllers/notifications/index.js @@ -1,25 +1,25 @@ module.exports = { - async fn(inputs, exits) { + async fn() { const { currentUser } = this.req; - const notifications = await sails.helpers.getNotificationsForUser(currentUser.id); + const notifications = await sails.helpers.users.getNotifications(currentUser.id); - const actionIds = sails.helpers.mapRecords(notifications, 'actionId'); - const actions = await sails.helpers.getActions(actionIds); + const actionIds = sails.helpers.utils.mapRecords(notifications, 'actionId'); + const actions = await sails.helpers.actions.getMany(actionIds); - const cardIds = sails.helpers.mapRecords(notifications, 'cardId'); - const cards = await sails.helpers.getCards(cardIds); + const userIds = sails.helpers.utils.mapRecords(actions, 'userId', true); + const users = await sails.helpers.users.getMany(userIds, true); - const userIds = sails.helpers.mapRecords(actions, 'userId', true); - const users = await sails.helpers.getUsers(userIds); + const cardIds = sails.helpers.utils.mapRecords(notifications, 'cardId'); + const cards = await sails.helpers.cards.getMany(cardIds); - return exits.success({ + return { items: notifications, included: { users, cards, actions, }, - }); + }; }, }; diff --git a/server/api/controllers/notifications/show.js b/server/api/controllers/notifications/show.js new file mode 100644 index 00000000..0aac171e --- /dev/null +++ b/server/api/controllers/notifications/show.js @@ -0,0 +1,48 @@ +const Errors = { + NOTIFICATION_NOT_FOUND: { + notificationNotFound: 'Notification not found', + }, +}; + +module.exports = { + inputs: { + id: { + type: 'string', + regex: /^[0-9]+$/, + required: true, + }, + }, + + exits: { + notificationNotFound: { + responseType: 'notFound', + }, + }, + + async fn(inputs) { + const { currentUser } = this.req; + + const notification = await Notification.findOne({ + id: inputs.id, + isRead: false, + userId: currentUser.id, + }); + + if (!notification) { + throw Errors.NOTIFICATION_NOT_FOUND; + } + + const action = await Action.findOne(notification.actionId); + const user = await sails.helpers.users.getOne(action.userId, true); + const card = await Card.findOne(notification.cardId); + + return { + item: notification, + included: { + users: [user], + cards: [card], + actions: [action], + }, + }; + }, +}; diff --git a/server/api/controllers/notifications/update.js b/server/api/controllers/notifications/update.js index 0b24206e..6d73f616 100755 --- a/server/api/controllers/notifications/update.js +++ b/server/api/controllers/notifications/update.js @@ -10,20 +10,20 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; const values = _.pick(inputs, ['isRead']); - const notifications = await sails.helpers.updateNotificationsForUser( + const notifications = await sails.helpers.notifications.updateMany( inputs.ids.split(','), - currentUser, values, + currentUser, this.req, ); - return exits.success({ + return { items: notifications, - }); + }; }, }; diff --git a/server/api/controllers/project-memberships/create.js b/server/api/controllers/project-managers/create.js similarity index 52% rename from server/api/controllers/project-memberships/create.js rename to server/api/controllers/project-managers/create.js index 39b63d88..227980d9 100755 --- a/server/api/controllers/project-memberships/create.js +++ b/server/api/controllers/project-managers/create.js @@ -5,8 +5,8 @@ const Errors = { USER_NOT_FOUND: { userNotFound: 'User not found', }, - USER_ALREADY_PROJECT_MEMBER: { - userAlreadyProjectMember: 'User already project member', + USER_ALREADY_PROJECT_MANAGER: { + userAlreadyProjectManager: 'User already project manager', }, }; @@ -31,33 +31,38 @@ module.exports = { userNotFound: { responseType: 'notFound', }, - userAlreadyProjectMember: { + userAlreadyProjectManager: { responseType: 'conflict', }, }, - async fn(inputs, exits) { + async fn(inputs) { + const { currentUser } = this.req; + const project = await Project.findOne(inputs.projectId); if (!project) { throw Errors.PROJECT_NOT_FOUND; } - const user = await sails.helpers.getUser(inputs.userId); + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); + + if (!isProjectManager) { + throw Errors.PROJECT_NOT_FOUND; // Forbidden + } + + const user = await sails.helpers.users.getOne(inputs.userId); if (!user) { throw Error.USER_NOT_FOUND; } - const projectMembership = await sails.helpers - .createProjectMembership(project, user, this.req) - .intercept('userAlreadyProjectMember', () => Errors.USER_ALREADY_PROJECT_MEMBER); + const projectManager = await sails.helpers.projectManagers + .createOne(user, project, this.req) + .intercept('userAlreadyProjectManager', () => Errors.USER_ALREADY_PROJECT_MANAGER); - return exits.success({ - item: projectMembership, - included: { - users: [user], - }, - }); + return { + item: projectManager, + }; }, }; diff --git a/server/api/controllers/project-managers/delete.js b/server/api/controllers/project-managers/delete.js new file mode 100755 index 00000000..141f11f4 --- /dev/null +++ b/server/api/controllers/project-managers/delete.js @@ -0,0 +1,51 @@ +const Errors = { + PROJECT_MANAGER_NOT_FOUND: { + projectManagerNotFound: 'Project manager not found', + }, +}; + +module.exports = { + inputs: { + id: { + type: 'string', + regex: /^[0-9]+$/, + required: true, + }, + }, + + exits: { + projectManagerNotFound: { + responseType: 'notFound', + }, + }, + + async fn(inputs) { + const { currentUser } = this.req; + + let projectManager = await ProjectManager.findOne(inputs.id); + + if (!projectManager) { + throw Errors.PROJECT_MANAGER_NOT_FOUND; + } + + const isProjectManager = await sails.helpers.users.isProjectManager( + currentUser.id, + projectManager.projectId, + ); + + if (!isProjectManager) { + throw Errors.PROJECT_MANAGER_NOT_FOUND; // Forbidden + } + + // TODO: check if the last one + projectManager = await sails.helpers.projectManagers.deleteOne(projectManager, this.req); + + if (!projectManager) { + throw Errors.PROJECT_MANAGER_NOT_FOUND; + } + + return { + item: projectManager, + }; + }, +}; diff --git a/server/api/controllers/project-memberships/delete.js b/server/api/controllers/project-memberships/delete.js deleted file mode 100755 index 61337741..00000000 --- a/server/api/controllers/project-memberships/delete.js +++ /dev/null @@ -1,39 +0,0 @@ -const Errors = { - PROJECT_MEMBERSHIP_NOT_FOUND: { - projectMembershipNotFound: 'Project membership not found', - }, -}; - -module.exports = { - inputs: { - id: { - type: 'string', - regex: /^[0-9]+$/, - required: true, - }, - }, - - exits: { - projectMembershipNotFound: { - responseType: 'notFound', - }, - }, - - async fn(inputs, exits) { - let projectMembership = await ProjectMembership.findOne(inputs.id); - - if (!projectMembership) { - throw Errors.PROJECT_MEMBERSHIP_NOT_FOUND; - } - - projectMembership = await sails.helpers.deleteProjectMembership(projectMembership, this.req); - - if (!projectMembership) { - throw Errors.PROJECT_MEMBERSHIP_NOT_FOUND; - } - - return exits.success({ - item: projectMembership, - }); - }, -}; diff --git a/server/api/controllers/projects/create.js b/server/api/controllers/projects/create.js index bed49cfe..62ef6f1a 100755 --- a/server/api/controllers/projects/create.js +++ b/server/api/controllers/projects/create.js @@ -6,25 +6,22 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; const values = _.pick(inputs, ['name']); - const { project, projectMembership } = await sails.helpers.createProject( - currentUser, + const { project, projectManager } = await sails.helpers.projects.createOne( values, + currentUser, this.req, - true, ); - return exits.success({ + return { item: project, included: { - users: [currentUser], - projectMemberships: [projectMembership], - boards: [], + projectManagers: [projectManager], }, - }); + }; }, }; diff --git a/server/api/controllers/projects/delete.js b/server/api/controllers/projects/delete.js index ab901af0..19d5de48 100755 --- a/server/api/controllers/projects/delete.js +++ b/server/api/controllers/projects/delete.js @@ -19,21 +19,29 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { + const { currentUser } = this.req; + let project = await Project.findOne(inputs.id); if (!project) { throw Errors.PROJECT_NOT_FOUND; } - project = await sails.helpers.deleteProject(project, this.req); + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); + + if (!isProjectManager) { + throw Errors.PROJECT_NOT_FOUND; // Forbidden + } + + project = await sails.helpers.projects.deleteOne(project, this.req); if (!project) { throw Errors.PROJECT_NOT_FOUND; } - return exits.success({ + return { item: project, - }); + }; }, }; diff --git a/server/api/controllers/projects/index.js b/server/api/controllers/projects/index.js index 4a694514..539025fe 100755 --- a/server/api/controllers/projects/index.js +++ b/server/api/controllers/projects/index.js @@ -1,25 +1,44 @@ module.exports = { - async fn(inputs, exits) { + async fn() { const { currentUser } = this.req; - const projectIds = await sails.helpers.getMembershipProjectIdsForUser(currentUser.id); - const projects = await sails.helpers.getProjects(projectIds); + const managerProjectIds = await sails.helpers.users.getManagerProjectIds(currentUser.id); - const { userIds, projectMemberships } = await sails.helpers.getMembershipUserIdsForProject( - projectIds, + const boardMemberships = await sails.helpers.users.getBoardMemberships(currentUser.id); + const membershipBoardIds = await sails.helpers.utils.mapRecords(boardMemberships, 'boardId'); + + const membershipBoards = await sails.helpers.boards.getMany({ + id: membershipBoardIds, + projectId: { + '!=': managerProjectIds, + }, + }); + + const membershipProjectIds = sails.helpers.utils.mapRecords( + membershipBoards, + 'projectId', true, ); - const users = await sails.helpers.getUsers(userIds); - const boards = await sails.helpers.getBoardsForProject(projectIds); + const projectIds = [...managerProjectIds, ...membershipProjectIds]; + const projects = await sails.helpers.projects.getMany(projectIds); - return exits.success({ + const projectManagers = await sails.helpers.projects.getProjectManagers(projectIds); + + const userIds = sails.helpers.utils.mapRecords(projectManagers, 'userId', true); + const users = await sails.helpers.users.getMany(userIds); + + const managerBoards = await sails.helpers.projects.getBoards(managerProjectIds); + const boards = [...managerBoards, ...membershipBoards]; + + return { items: projects, included: { users, - projectMemberships, + projectManagers, boards, + boardMemberships, }, - }); + }; }, }; diff --git a/server/api/controllers/projects/show.js b/server/api/controllers/projects/show.js new file mode 100644 index 00000000..b27690e2 --- /dev/null +++ b/server/api/controllers/projects/show.js @@ -0,0 +1,65 @@ +const Errors = { + PROJECT_NOT_FOUND: { + projectNotFound: 'Project not found', + }, +}; + +module.exports = { + inputs: { + id: { + type: 'string', + regex: /^[0-9]+$/, + required: true, + }, + }, + + exits: { + projectNotFound: { + responseType: 'notFound', + }, + }, + + async fn(inputs) { + const { currentUser } = this.req; + + const project = await Project.findOne(inputs.id); + + if (!project) { + throw Errors.PROJECT_NOT_FOUND; + } + + let boards = await sails.helpers.projects.getBoards(project.id); + let boardIds = sails.helpers.utils.mapRecords(boards); + + const boardMemberships = await sails.helpers.boardMemberships.getMany({ + boardId: boardIds, + userId: currentUser.id, + }); + + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); + + if (!isProjectManager) { + if (boardMemberships.length === 0) { + throw Errors.PROJECT_NOT_FOUND; // Forbidden + } + + boardIds = sails.helpers.utils.mapRecords(boardMemberships, 'boardId'); + boards = boards.filter((board) => boardIds.includes(board.id)); + } + + const projectManagers = await sails.helpers.projects.getProjectManagers(project.id); + + const userIds = sails.helpers.utils.mapRecords(projectManagers, 'userId'); + const users = await sails.helpers.users.getMany(userIds); + + return { + item: project, + included: { + users, + projectManagers, + boards, + boardMemberships, + }, + }; + }, +}; diff --git a/server/api/controllers/projects/update-background-image.js b/server/api/controllers/projects/update-background-image.js index ed8be0aa..372b5c06 100755 --- a/server/api/controllers/projects/update-background-image.js +++ b/server/api/controllers/projects/update-background-image.js @@ -23,15 +23,23 @@ module.exports = { }, async fn(inputs, exits) { + const { currentUser } = this.req; + let project = await Project.findOne(inputs.id); if (!project) { throw Errors.PROJECT_NOT_FOUND; } + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); + + if (!isProjectManager) { + throw Errors.PROJECT_NOT_FOUND; // Forbidden + } + this.req .file('file') - .upload(sails.helpers.createProjectBackgroundImageReceiver(), async (error, files) => { + .upload(sails.helpers.utils.createProjectBackgroundImageReceiver(), async (error, files) => { if (error) { return exits.uploadError(error.message); } @@ -40,7 +48,7 @@ module.exports = { return exits.uploadError('No file was uploaded'); } - project = await sails.helpers.updateProject( + project = await sails.helpers.projects.updateOne( project, { backgroundImageDirname: files[0].extra.dirname, diff --git a/server/api/controllers/projects/update.js b/server/api/controllers/projects/update.js index 9a8ae228..9ca9b368 100755 --- a/server/api/controllers/projects/update.js +++ b/server/api/controllers/projects/update.js @@ -26,19 +26,19 @@ module.exports = { return false; } - if (!Project.BACKGROUND_TYPES.includes(value.type)) { + if (!Object.values(Project.BackgroundTypes).includes(value.type)) { return false; } if ( - value.type === 'gradient' && + value.type === Project.BackgroundTypes.GRADIENT && _.size(value) === 2 && Project.BACKGROUND_GRADIENTS.includes(value.name) ) { return true; } - if (value.type === 'image' && _.size(value) === 1) { + if (value.type === Project.BackgroundTypes.IMAGE && _.size(value) === 1) { return true; } @@ -57,22 +57,30 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { + const { currentUser } = this.req; + let project = await Project.findOne(inputs.id); if (!project) { throw Errors.PROJECT_NOT_FOUND; } + const isProjectManager = await sails.helpers.users.isProjectManager(currentUser.id, project.id); + + if (!isProjectManager) { + throw Errors.PROJECT_NOT_FOUND; // Forbidden + } + const values = _.pick(inputs, ['name', 'background', 'backgroundImage']); - project = await sails.helpers.updateProject(project, values, this.req); + project = await sails.helpers.projects.updateOne(project, values, this.req); if (!project) { throw Errors.PROJECT_NOT_FOUND; } - return exits.success({ + return { item: project, - }); + }; }, }; diff --git a/server/api/controllers/tasks/create.js b/server/api/controllers/tasks/create.js index cbc2b83b..b3a68802 100755 --- a/server/api/controllers/tasks/create.js +++ b/server/api/controllers/tasks/create.js @@ -26,27 +26,24 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const { card, project } = await sails.helpers - .getCardToProjectPath(inputs.cardId) + const { card } = await sails.helpers.cards + .getProjectPath(inputs.cardId) .intercept('pathNotFound', () => Errors.CARD_NOT_FOUND); - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, card.boardId); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.CARD_NOT_FOUND; // Forbidden } const values = _.pick(inputs, ['name', 'isCompleted']); - const task = await sails.helpers.createTask(card, values, this.req); + const task = await sails.helpers.tasks.createOne(values, card, this.req); - return exits.success({ + return { item: task, - }); + }; }, }; diff --git a/server/api/controllers/tasks/delete.js b/server/api/controllers/tasks/delete.js index 3e1b726f..c3124d24 100755 --- a/server/api/controllers/tasks/delete.js +++ b/server/api/controllers/tasks/delete.js @@ -19,33 +19,30 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const taskToProjectPath = await sails.helpers - .getTaskToProjectPath(inputs.id) + const path = await sails.helpers.tasks + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.TASK_NOT_FOUND); - let { task } = taskToProjectPath; - const { board, project } = taskToProjectPath; + let { task } = path; + const { board } = path; - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.TASK_NOT_FOUND; // Forbidden } - task = await sails.helpers.deleteTask(task, board, this.req); + task = await sails.helpers.tasks.deleteOne(task, board, this.req); if (!task) { throw Errors.TASK_NOT_FOUND; } - return exits.success({ + return { item: task, - }); + }; }, }; diff --git a/server/api/controllers/tasks/update.js b/server/api/controllers/tasks/update.js index 888a8c3d..c27ff981 100755 --- a/server/api/controllers/tasks/update.js +++ b/server/api/controllers/tasks/update.js @@ -26,34 +26,31 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; - const taskToProjectPath = await sails.helpers - .getTaskToProjectPath(inputs.id) + const path = await sails.helpers.tasks + .getProjectPath(inputs.id) .intercept('pathNotFound', () => Errors.TASK_NOT_FOUND); - let { task } = taskToProjectPath; - const { board, project } = taskToProjectPath; + let { task } = path; + const { board } = path; - const isUserMemberForProject = await sails.helpers.isUserMemberForProject( - project.id, - currentUser.id, - ); + const isBoardMember = await sails.helpers.users.isBoardMember(currentUser.id, board.id); - if (!isUserMemberForProject) { + if (!isBoardMember) { throw Errors.TASK_NOT_FOUND; // Forbidden } const values = _.pick(inputs, ['name', 'isCompleted']); - task = await sails.helpers.updateTask(task, values, board, this.req); + task = await sails.helpers.tasks.updateOne(task, values, board, this.req); if (!task) { throw Errors.TASK_NOT_FOUND; } - return exits.success({ + return { item: task, - }); + }; }, }; diff --git a/server/api/controllers/users/create.js b/server/api/controllers/users/create.js index c26c2f1a..5b495814 100755 --- a/server/api/controllers/users/create.js +++ b/server/api/controllers/users/create.js @@ -54,7 +54,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const values = _.pick(inputs, [ 'email', 'password', @@ -65,13 +65,13 @@ module.exports = { 'subscribeToOwnCards', ]); - const user = await sails.helpers - .createUser(values, this.req) + const user = await sails.helpers.users + .createOne(values, this.req) .intercept('emailAlreadyInUse', () => Errors.EMAIL_ALREADY_IN_USE) .intercept('usernameAlreadyInUse', () => Errors.USERNAME_ALREADY_IN_USE); - return exits.success({ + return { item: user, - }); + }; }, }; diff --git a/server/api/controllers/users/delete.js b/server/api/controllers/users/delete.js index 9171f407..1353b2df 100755 --- a/server/api/controllers/users/delete.js +++ b/server/api/controllers/users/delete.js @@ -19,21 +19,21 @@ module.exports = { }, }, - async fn(inputs, exits) { - let user = await sails.helpers.getUser(inputs.id); + async fn(inputs) { + let user = await sails.helpers.users.getOne(inputs.id); if (!user) { throw Errors.USER_NOT_FOUND; } - user = await sails.helpers.deleteUser(user, this.req); + user = await sails.helpers.users.deleteOne(user, this.req); if (!user) { throw Errors.USER_NOT_FOUND; } - return exits.success({ + return { item: user, - }); + }; }, }; diff --git a/server/api/controllers/users/index.js b/server/api/controllers/users/index.js index f2612c39..ac747fe9 100755 --- a/server/api/controllers/users/index.js +++ b/server/api/controllers/users/index.js @@ -1,9 +1,9 @@ module.exports = { - async fn(inputs, exits) { - const users = await sails.helpers.getUsers(); + async fn() { + const users = await sails.helpers.users.getMany(); - return exits.success({ + return { items: users, - }); + }; }, }; diff --git a/server/api/controllers/users/show.js b/server/api/controllers/users/show.js index 44815391..972dc580 100755 --- a/server/api/controllers/users/show.js +++ b/server/api/controllers/users/show.js @@ -1,16 +1,44 @@ -module.exports = { - async fn(inputs, exits) { - // TODO: allow over HTTP without subscription - if (!this.req.isSocket) { - return this.res.badRequest(); - } - - const { currentUser } = this.req; - - sails.sockets.join(this.req, `user:${currentUser.id}`); // TODO: only when subscription needed - - return exits.success({ - item: currentUser, - }); +const Errors = { + USER_NOT_FOUND: { + userNotFound: 'User not found', + }, +}; + +const CURRENT_USER_ID = 'me'; + +module.exports = { + inputs: { + id: { + type: 'string', + regex: /^[0-9]+|me$/, + required: true, + }, + }, + + exits: { + boardNotFound: { + responseType: 'notFound', + }, + }, + + async fn(inputs) { + let user; + if (inputs.id === CURRENT_USER_ID) { + ({ currentUser: user } = this.req); + + if (this.req.isSocket) { + sails.sockets.join(this.req, `user:${user.id}`); // TODO: only when subscription needed + } + } else { + user = await sails.helpers.users.getOne(inputs.id); + + if (!user) { + throw Errors.USER_NOT_FOUND; + } + } + + return { + item: user, + }; }, }; diff --git a/server/api/controllers/users/update-avatar.js b/server/api/controllers/users/update-avatar.js index 69276451..455ed178 100755 --- a/server/api/controllers/users/update-avatar.js +++ b/server/api/controllers/users/update-avatar.js @@ -27,7 +27,7 @@ module.exports = { let user; if (currentUser.isAdmin) { - user = await sails.helpers.getUser(inputs.id); + user = await sails.helpers.users.getOne(inputs.id); if (!user) { throw Errors.USER_NOT_FOUND; @@ -38,30 +38,32 @@ module.exports = { user = currentUser; } - this.req.file('file').upload(sails.helpers.createUserAvatarReceiver(), async (error, files) => { - if (error) { - return exits.uploadError(error.message); - } + this.req + .file('file') + .upload(sails.helpers.utils.createUserAvatarReceiver(), async (error, files) => { + if (error) { + return exits.uploadError(error.message); + } - if (files.length === 0) { - return exits.uploadError('No file was uploaded'); - } + if (files.length === 0) { + return exits.uploadError('No file was uploaded'); + } - user = await sails.helpers.updateUser( - user, - { - avatarDirname: files[0].extra.dirname, - }, - this.req, - ); + user = await sails.helpers.users.updateOne( + user, + { + avatarDirname: files[0].extra.dirname, + }, + this.req, + ); - if (!user) { - throw Errors.USER_NOT_FOUND; - } + if (!user) { + throw Errors.USER_NOT_FOUND; + } - return exits.success({ - item: user.toJSON(), + return exits.success({ + item: user.toJSON(), + }); }); - }); }, }; diff --git a/server/api/controllers/users/update-email.js b/server/api/controllers/users/update-email.js index c19e122f..c32726e3 100644 --- a/server/api/controllers/users/update-email.js +++ b/server/api/controllers/users/update-email.js @@ -42,7 +42,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; if (inputs.id === currentUser.id) { @@ -53,7 +53,7 @@ module.exports = { throw Errors.USER_NOT_FOUND; // Forbidden } - let user = await sails.helpers.getUser(inputs.id); + let user = await sails.helpers.users.getOne(inputs.id); if (!user) { throw Errors.USER_NOT_FOUND; @@ -68,16 +68,16 @@ module.exports = { const values = _.pick(inputs, ['email']); - user = await sails.helpers - .updateUser(user, values, this.req) + user = await sails.helpers.users + .update(user, values, this.req) .intercept('emailAlreadyInUse', () => Errors.EMAIL_ALREADY_IN_USE); if (!user) { throw Errors.USER_NOT_FOUND; } - return exits.success({ + return { item: user, - }); + }; }, }; diff --git a/server/api/controllers/users/update-password.js b/server/api/controllers/users/update-password.js index decbf1b9..699af366 100644 --- a/server/api/controllers/users/update-password.js +++ b/server/api/controllers/users/update-password.js @@ -35,7 +35,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; if (inputs.id === currentUser.id) { @@ -46,7 +46,7 @@ module.exports = { throw Errors.USER_NOT_FOUND; // Forbidden } - let user = await sails.helpers.getUser(inputs.id); + let user = await sails.helpers.users.getOne(inputs.id); if (!user) { throw Errors.USER_NOT_FOUND; @@ -60,14 +60,14 @@ module.exports = { } const values = _.pick(inputs, ['password']); - user = await sails.helpers.updateUser(user, values, this.req); + user = await sails.helpers.users.updateOne(user, values, this.req); if (!user) { throw Errors.USER_NOT_FOUND; } - return exits.success({ + return { item: user, - }); + }; }, }; diff --git a/server/api/controllers/users/update-username.js b/server/api/controllers/users/update-username.js index ef82faaa..5a2fd171 100644 --- a/server/api/controllers/users/update-username.js +++ b/server/api/controllers/users/update-username.js @@ -44,7 +44,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; if (inputs.id === currentUser.id) { @@ -55,7 +55,7 @@ module.exports = { throw Errors.USER_NOT_FOUND; // Forbidden } - let user = await sails.helpers.getUser(inputs.id); + let user = await sails.helpers.users.getOne(inputs.id); if (!user) { throw Errors.USER_NOT_FOUND; @@ -70,16 +70,16 @@ module.exports = { const values = _.pick(inputs, ['username']); - user = await sails.helpers - .updateUser(user, values, this.req) + user = await sails.helpers.users + .update(user, values, this.req) .intercept('usernameAlreadyInUse', () => Errors.USERNAME_ALREADY_IN_USE); if (!user) { throw Errors.USER_NOT_FOUND; } - return exits.success({ + return { item: user, - }); + }; }, }; diff --git a/server/api/controllers/users/update.js b/server/api/controllers/users/update.js index 87db1d8c..f3e998a7 100755 --- a/server/api/controllers/users/update.js +++ b/server/api/controllers/users/update.js @@ -43,7 +43,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const { currentUser } = this.req; if (!currentUser.isAdmin) { @@ -54,7 +54,7 @@ module.exports = { delete inputs.isAdmin; // eslint-disable-line no-param-reassign } - let user = await sails.helpers.getUser(inputs.id); + let user = await sails.helpers.users.getOne(inputs.id); if (!user) { throw Errors.USER_NOT_FOUND; @@ -69,14 +69,14 @@ module.exports = { 'subscribeToOwnCards', ]); - user = await sails.helpers.updateUser(user, values, this.req); + user = await sails.helpers.users.updateOne(user, values, this.req); if (!user) { throw Errors.USER_NOT_FOUND; } - return exits.success({ + return { item: user, - }); + }; }, }; diff --git a/server/api/helpers/actions/create-one.js b/server/api/helpers/actions/create-one.js new file mode 100644 index 00000000..66e4547f --- /dev/null +++ b/server/api/helpers/actions/create-one.js @@ -0,0 +1,47 @@ +module.exports = { + inputs: { + values: { + type: 'json', + required: true, + }, + user: { + type: 'ref', + required: true, + }, + card: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + async fn(inputs) { + const action = await Action.create({ + ...inputs.values, + cardId: inputs.card.id, + userId: inputs.user.id, + }).fetch(); + + sails.sockets.broadcast( + `board:${inputs.card.boardId}`, + 'actionCreate', + { + item: action, + }, + inputs.request, + ); + + const subscriptionUserIds = await sails.helpers.cards.getSubscriptionUserIds( + action.cardId, + action.userId, + ); + + subscriptionUserIds.forEach(async (userId) => { + await sails.helpers.notifications.createOne(userId, action); + }); + + return action; + }, +}; diff --git a/server/api/helpers/delete-action.js b/server/api/helpers/actions/delete-one.js similarity index 88% rename from server/api/helpers/delete-action.js rename to server/api/helpers/actions/delete-one.js index 136e6e1a..6b935973 100644 --- a/server/api/helpers/delete-action.js +++ b/server/api/helpers/actions/delete-one.js @@ -13,7 +13,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const action = await Action.archiveOne(inputs.record.id); if (action) { @@ -27,6 +27,6 @@ module.exports = { ); } - return exits.success(action); + return action; }, }; diff --git a/server/api/helpers/get-actions.js b/server/api/helpers/actions/get-many.js similarity index 56% rename from server/api/helpers/get-actions.js rename to server/api/helpers/actions/get-many.js index 1d05a0b6..fe9d5c09 100644 --- a/server/api/helpers/get-actions.js +++ b/server/api/helpers/actions/get-many.js @@ -9,9 +9,7 @@ module.exports = { }, }, - async fn(inputs, exits) { - const actions = await Action.find(inputs.criteria).sort('id DESC').limit(inputs.limit); - - return exits.success(actions); + async fn(inputs) { + return Action.find(inputs.criteria).sort('id DESC').limit(inputs.limit); }, }; diff --git a/server/api/helpers/get-action-to-project-path.js b/server/api/helpers/actions/get-project-path.js old mode 100755 new mode 100644 similarity index 74% rename from server/api/helpers/get-action-to-project-path.js rename to server/api/helpers/actions/get-project-path.js index d9a8bdfb..fe97fd6a --- a/server/api/helpers/get-action-to-project-path.js +++ b/server/api/helpers/actions/get-project-path.js @@ -10,15 +10,15 @@ module.exports = { pathNotFound: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const action = await Action.findOne(inputs.criteria); if (!action) { throw 'pathNotFound'; } - const path = await sails.helpers - .getCardToProjectPath(action.cardId) + const path = await sails.helpers.cards + .getProjectPath(action.cardId) .intercept('pathNotFound', (nodes) => ({ pathNotFound: { action, @@ -26,9 +26,9 @@ module.exports = { }, })); - return exits.success({ + return { action, ...path, - }); + }; }, }; diff --git a/server/api/helpers/update-action.js b/server/api/helpers/actions/update-one.js similarity index 89% rename from server/api/helpers/update-action.js rename to server/api/helpers/actions/update-one.js index 2ebe1fa3..39e3a876 100644 --- a/server/api/helpers/update-action.js +++ b/server/api/helpers/actions/update-one.js @@ -17,7 +17,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const action = await Action.updateOne(inputs.record.id).set(inputs.values); if (action) { @@ -31,6 +31,6 @@ module.exports = { ); } - return exits.success(action); + return action; }, }; diff --git a/server/api/helpers/create-attachment.js b/server/api/helpers/attachments/create-one.js similarity index 72% rename from server/api/helpers/create-attachment.js rename to server/api/helpers/attachments/create-one.js index b9c328ae..23e879a5 100644 --- a/server/api/helpers/create-attachment.js +++ b/server/api/helpers/attachments/create-one.js @@ -1,33 +1,31 @@ module.exports = { inputs: { - card: { - type: 'ref', + values: { + type: 'json', required: true, }, user: { type: 'ref', required: true, }, - values: { - type: 'json', + card: { + type: 'ref', required: true, }, requestId: { type: 'string', isNotEmptyString: true, - allowNull: true, - defaultsTo: null, }, request: { type: 'ref', }, }, - async fn(inputs, exits) { + async fn(inputs) { const attachment = await Attachment.create({ ...inputs.values, cardId: inputs.card.id, - userId: inputs.user.id, + creatorUserId: inputs.user.id, }).fetch(); sails.sockets.broadcast( @@ -41,14 +39,11 @@ module.exports = { ); if (!inputs.card.coverAttachmentId && attachment.isImage) { - await sails.helpers.updateCard.with({ - record: inputs.card, - values: { - coverAttachmentId: attachment.id, - }, + await sails.helpers.cards.updateOne(inputs.card, { + coverAttachmentId: attachment.id, }); } - return exits.success(attachment); + return attachment; }, }; diff --git a/server/api/helpers/delete-attachment.js b/server/api/helpers/attachments/delete-one.js similarity index 90% rename from server/api/helpers/delete-attachment.js rename to server/api/helpers/attachments/delete-one.js index 281ef96e..2f199b45 100644 --- a/server/api/helpers/delete-attachment.js +++ b/server/api/helpers/attachments/delete-one.js @@ -7,11 +7,11 @@ module.exports = { type: 'ref', required: true, }, - card: { + board: { type: 'ref', required: true, }, - board: { + card: { type: 'ref', required: true, }, @@ -20,9 +20,9 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { if (inputs.record.id === inputs.card.coverAttachmentId) { - await sails.helpers.updateCard.with({ + await sails.helpers.cards.updateOne.with({ record: inputs.card, values: { coverAttachmentId: null, @@ -50,6 +50,6 @@ module.exports = { ); } - return exits.success(attachment); + return attachment; }, }; diff --git a/server/api/helpers/get-tasks.js b/server/api/helpers/attachments/get-many.js similarity index 55% rename from server/api/helpers/get-tasks.js rename to server/api/helpers/attachments/get-many.js index 50ea0605..8360fbe8 100644 --- a/server/api/helpers/get-tasks.js +++ b/server/api/helpers/attachments/get-many.js @@ -6,9 +6,7 @@ module.exports = { }, }, - async fn(inputs, exits) { - const tasks = await Task.find(inputs.criteria).sort('id'); - - return exits.success(tasks); + async fn(inputs) { + return Attachment.find(inputs.criteria).sort('id'); }, }; diff --git a/server/api/helpers/get-attachment-to-project-path.js b/server/api/helpers/attachments/get-project-path.js old mode 100755 new mode 100644 similarity index 75% rename from server/api/helpers/get-attachment-to-project-path.js rename to server/api/helpers/attachments/get-project-path.js index f66c0609..3b071b43 --- a/server/api/helpers/get-attachment-to-project-path.js +++ b/server/api/helpers/attachments/get-project-path.js @@ -10,15 +10,15 @@ module.exports = { pathNotFound: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const attachment = await Attachment.findOne(inputs.criteria); if (!attachment) { throw 'pathNotFound'; } - const path = await sails.helpers - .getCardToProjectPath(attachment.cardId) + const path = await sails.helpers.cards + .getProjectPath(attachment.cardId) .intercept('pathNotFound', (nodes) => ({ pathNotFound: { attachment, @@ -26,9 +26,9 @@ module.exports = { }, })); - return exits.success({ + return { attachment, ...path, - }); + }; }, }; diff --git a/server/api/helpers/update-attachment.js b/server/api/helpers/attachments/update-one.js similarity index 89% rename from server/api/helpers/update-attachment.js rename to server/api/helpers/attachments/update-one.js index e10703c5..c8b7131f 100644 --- a/server/api/helpers/update-attachment.js +++ b/server/api/helpers/attachments/update-one.js @@ -17,7 +17,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const attachment = await Attachment.updateOne(inputs.record.id).set(inputs.values); if (attachment) { @@ -31,6 +31,6 @@ module.exports = { ); } - return exits.success(attachment); + return attachment; }, }; diff --git a/server/api/helpers/board-memberships/create-one.js b/server/api/helpers/board-memberships/create-one.js new file mode 100644 index 00000000..1376de87 --- /dev/null +++ b/server/api/helpers/board-memberships/create-one.js @@ -0,0 +1,48 @@ +module.exports = { + inputs: { + user: { + type: 'ref', + required: true, + }, + board: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + exits: { + userAlreadyBoardMember: {}, + }, + + async fn(inputs) { + const boardMembership = await BoardMembership.create({ + boardId: inputs.board.id, + userId: inputs.user.id, + }) + .intercept('E_UNIQUE', 'userAlreadyBoardMember') + .fetch(); + + sails.sockets.broadcast( + `user:${boardMembership.userId}`, + 'boardMembershipCreate', + { + item: boardMembership, + }, + inputs.request, + ); + + sails.sockets.broadcast( + `board:${boardMembership.boardId}`, + 'boardMembershipCreate', + { + item: boardMembership, + }, + inputs.request, + ); + + return boardMembership; + }, +}; diff --git a/server/api/helpers/board-memberships/delete-one.js b/server/api/helpers/board-memberships/delete-one.js new file mode 100644 index 00000000..dd1d051a --- /dev/null +++ b/server/api/helpers/board-memberships/delete-one.js @@ -0,0 +1,71 @@ +module.exports = { + inputs: { + record: { + type: 'ref', + required: true, + }, + project: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + async fn(inputs) { + const cardIds = await sails.helpers.boards.getCardIds(inputs.record.boardId); + + await CardSubscription.destroy({ + cardId: cardIds, + userId: inputs.record.userId, + }); + + await CardMembership.destroy({ + cardId: cardIds, + userId: inputs.record.userId, + }); + + const boardMembership = await BoardMembership.destroyOne(inputs.record.id); + + if (boardMembership) { + sails.sockets.broadcast( + `user:${boardMembership.userId}`, + 'boardMembershipDelete', + { + item: boardMembership, + }, + inputs.request, + ); + + const notifyBoard = () => { + sails.sockets.broadcast( + `board:${boardMembership.boardId}`, + 'boardMembershipDelete', + { + item: boardMembership, + }, + inputs.request, + ); + }; + + const isProjectManager = await sails.helpers.users.isProjectManager( + inputs.record.userId, + inputs.project.id, + ); + + if (isProjectManager) { + notifyBoard(); + } else { + // TODO: also remove if unsubscribed to user + sails.sockets.removeRoomMembersFromRooms( + `user:${boardMembership.userId}`, + `board:${boardMembership.boardId}`, + notifyBoard, + ); + } + } + + return boardMembership; + }, +}; diff --git a/server/api/helpers/get-labels.js b/server/api/helpers/board-memberships/get-many.js similarity index 55% rename from server/api/helpers/get-labels.js rename to server/api/helpers/board-memberships/get-many.js index 8b2ecb37..62194971 100644 --- a/server/api/helpers/get-labels.js +++ b/server/api/helpers/board-memberships/get-many.js @@ -6,9 +6,7 @@ module.exports = { }, }, - async fn(inputs, exits) { - const labels = await Label.find(inputs.criteria).sort('id'); - - return exits.success(labels); + async fn(inputs) { + return BoardMembership.find(inputs.criteria).sort('id'); }, }; diff --git a/server/api/helpers/board-memberships/get-project-path.js b/server/api/helpers/board-memberships/get-project-path.js new file mode 100644 index 00000000..19272416 --- /dev/null +++ b/server/api/helpers/board-memberships/get-project-path.js @@ -0,0 +1,34 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + required: true, + }, + }, + + exits: { + pathNotFound: {}, + }, + + async fn(inputs) { + const boardMembership = await BoardMembership.findOne(inputs.criteria); + + if (!boardMembership) { + throw 'pathNotFound'; + } + + const path = await sails.helpers.boards + .getProjectPath(boardMembership.boardId) + .intercept('pathNotFound', (nodes) => ({ + pathNotFound: { + boardMembership, + ...nodes, + }, + })); + + return { + boardMembership, + ...path, + }; + }, +}; diff --git a/server/api/helpers/create-board.js b/server/api/helpers/boards/create-one.js similarity index 60% rename from server/api/helpers/create-board.js rename to server/api/helpers/boards/create-one.js index 78702453..d388b3d4 100644 --- a/server/api/helpers/create-board.js +++ b/server/api/helpers/boards/create-one.js @@ -1,29 +1,32 @@ module.exports = { inputs: { - project: { - type: 'ref', - required: true, - }, values: { type: 'json', custom: (value) => _.isPlainObject(value) && _.isFinite(value.position), required: true, }, + user: { + type: 'ref', + required: true, + }, + project: { + type: 'ref', + required: true, + }, request: { type: 'ref', }, }, - async fn(inputs, exits) { - const boards = await sails.helpers.getBoardsForProject(inputs.project.id); + async fn(inputs) { + const managerUserIds = await sails.helpers.projects.getManagerUserIds(inputs.project.id); + const boards = await sails.helpers.projects.getBoards(inputs.project.id); - const { position, repositions } = sails.helpers.insertToPositionables( + const { position, repositions } = sails.helpers.utils.insertToPositionables( inputs.values.position, boards, ); - const userIds = await sails.helpers.getMembershipUserIdsForProject(inputs.project.id); - repositions.forEach(async ({ id, position: nextPosition }) => { await Board.update({ id, @@ -32,6 +35,9 @@ module.exports = { position: nextPosition, }); + const memberUserIds = await sails.helpers.boards.getMemberUserIds(id); + const userIds = _.union(managerUserIds, memberUserIds); + userIds.forEach((userId) => { sails.sockets.broadcast(`user:${userId}`, 'boardUpdate', { item: { @@ -48,21 +54,25 @@ module.exports = { projectId: inputs.project.id, }).fetch(); - userIds.forEach((userId) => { + const boardMembership = await BoardMembership.create({ + boardId: board.id, + userId: inputs.user.id, + }).fetch(); + + managerUserIds.forEach((userId) => { sails.sockets.broadcast( `user:${userId}`, 'boardCreate', { item: board, - included: { - lists: [], - labels: [], - }, }, inputs.request, ); }); - return exits.success(board); + return { + board, + boardMembership, + }; }, }; diff --git a/server/api/helpers/boards/delete-one.js b/server/api/helpers/boards/delete-one.js new file mode 100644 index 00000000..64a81722 --- /dev/null +++ b/server/api/helpers/boards/delete-one.js @@ -0,0 +1,30 @@ +module.exports = { + inputs: { + record: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + async fn(inputs) { + const board = await Board.archiveOne(inputs.record.id); + + if (board) { + sails.sockets.leaveAll(`board:${board.id}`); + + sails.sockets.broadcast( + `project:${board.projectId}`, + 'boardDelete', + { + item: board, + }, + inputs.request, + ); + } + + return board; + }, +}; diff --git a/server/api/helpers/boards/get-board-memberships.js b/server/api/helpers/boards/get-board-memberships.js new file mode 100644 index 00000000..e57169c7 --- /dev/null +++ b/server/api/helpers/boards/get-board-memberships.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.boardMemberships.getMany({ + boardId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/boards/get-card-ids.js b/server/api/helpers/boards/get-card-ids.js new file mode 100644 index 00000000..27a6eaaa --- /dev/null +++ b/server/api/helpers/boards/get-card-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const cards = await sails.helpers.boards.getCards(inputs.idOrIds); + + return sails.helpers.utils.mapRecords(cards); + }, +}; diff --git a/server/api/helpers/get-cards-for-board.js b/server/api/helpers/boards/get-cards.js similarity index 56% rename from server/api/helpers/get-cards-for-board.js rename to server/api/helpers/boards/get-cards.js index abd7d5f4..6d9c77f4 100644 --- a/server/api/helpers/get-cards-for-board.js +++ b/server/api/helpers/boards/get-cards.js @@ -2,7 +2,7 @@ const LIMIT = 10; module.exports = { inputs: { - recordOrId: { + recordOrIdOrIds: { type: 'ref', custom: (value) => _.isObjectLike(value) || _.isString(value) || _.every(value, _.isString), required: true, @@ -12,18 +12,18 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const criteria = {}; let sort; let limit; - if (_.isObjectLike(inputs.recordOrId)) { - criteria.boardId = inputs.recordOrId.id; + if (_.isObjectLike(inputs.recordOrIdOrIds)) { + criteria.boardId = inputs.recordOrIdOrIds.id; - if (inputs.recordOrId.type === 'kanban') { + if (inputs.recordOrIdOrIds.type === Board.Types.KANBAN) { sort = 'position'; - } else if (inputs.recordOrId.type === 'collection') { + } else if (inputs.recordOrIdOrIds.type === Board.Types.COLLECTION) { if (inputs.beforeId) { criteria.id = { '<': inputs.beforeId, @@ -33,11 +33,9 @@ module.exports = { limit = LIMIT; } } else { - criteria.boardId = inputs.recordOrId; + criteria.boardId = inputs.recordOrIdOrIds; } - const cards = await sails.helpers.getCards(criteria, sort, limit); - - return exits.success(cards); + return sails.helpers.cards.getMany(criteria, sort, limit); }, }; diff --git a/server/api/helpers/boards/get-labels.js b/server/api/helpers/boards/get-labels.js new file mode 100644 index 00000000..03f97d9e --- /dev/null +++ b/server/api/helpers/boards/get-labels.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.labels.getMany({ + boardId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/boards/get-lists.js b/server/api/helpers/boards/get-lists.js new file mode 100644 index 00000000..bc74b391 --- /dev/null +++ b/server/api/helpers/boards/get-lists.js @@ -0,0 +1,27 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + exceptListIdOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + }, + }, + + async fn(inputs) { + const criteria = { + boardId: inputs.idOrIds, + }; + + if (!_.isUndefined(inputs.exceptListIdOrIds)) { + criteria.id = { + '!=': inputs.exceptListIdOrIds, + }; + } + + return sails.helpers.lists.getMany(criteria); + }, +}; diff --git a/server/api/helpers/get-boards.js b/server/api/helpers/boards/get-many.js similarity index 53% rename from server/api/helpers/get-boards.js rename to server/api/helpers/boards/get-many.js index d7b4ff95..251dbb49 100644 --- a/server/api/helpers/get-boards.js +++ b/server/api/helpers/boards/get-many.js @@ -6,9 +6,7 @@ module.exports = { }, }, - async fn(inputs, exits) { - const boards = await Board.find(inputs.criteria).sort('position'); - - return exits.success(boards); + async fn(inputs) { + return Board.find(inputs.criteria).sort('position'); }, }; diff --git a/server/api/helpers/boards/get-member-user-ids.js b/server/api/helpers/boards/get-member-user-ids.js new file mode 100644 index 00000000..3fa41516 --- /dev/null +++ b/server/api/helpers/boards/get-member-user-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const boardMemberships = await sails.helpers.boards.getBoardMemberships(inputs.idOrIds); + + return sails.helpers.utils.mapRecords(boardMemberships, 'userId', _.isArray(inputs.idOrIds)); + }, +}; diff --git a/server/api/helpers/get-board-to-project-path.js b/server/api/helpers/boards/get-project-path.js old mode 100755 new mode 100644 similarity index 87% rename from server/api/helpers/get-board-to-project-path.js rename to server/api/helpers/boards/get-project-path.js index a98e44be..58a0fdd1 --- a/server/api/helpers/get-board-to-project-path.js +++ b/server/api/helpers/boards/get-project-path.js @@ -10,7 +10,7 @@ module.exports = { pathNotFound: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const board = await Board.findOne(inputs.criteria); if (!board) { @@ -27,9 +27,9 @@ module.exports = { }; } - return exits.success({ + return { board, project, - }); + }; }, }; diff --git a/server/api/helpers/update-board.js b/server/api/helpers/boards/update-one.js similarity index 83% rename from server/api/helpers/update-board.js rename to server/api/helpers/boards/update-one.js index c99eafb2..47418178 100644 --- a/server/api/helpers/update-board.js +++ b/server/api/helpers/boards/update-one.js @@ -24,16 +24,18 @@ module.exports = { }, }, - async fn(inputs, exits) { - const userIds = await sails.helpers.getMembershipUserIdsForProject(inputs.record.projectId); + async fn(inputs) { + const userIds = await sails.helpers.projects.getManagerAndBoardMemberUserIds( + inputs.record.projectId, + ); if (!_.isUndefined(inputs.values.position)) { - const boards = await sails.helpers.getBoardsForProject( + const boards = await sails.helpers.projects.getBoards( inputs.record.projectId, inputs.record.id, ); - const { position, repositions } = sails.helpers.insertToPositionables( + const { position, repositions } = sails.helpers.utils.insertToPositionables( inputs.values.position, boards, ); @@ -74,6 +76,6 @@ module.exports = { }); } - return exits.success(board); + return board; }, }; diff --git a/server/api/helpers/create-card-label.js b/server/api/helpers/card-labels/create-one.js similarity index 90% rename from server/api/helpers/create-card-label.js rename to server/api/helpers/card-labels/create-one.js index 7be9058e..a90be460 100644 --- a/server/api/helpers/create-card-label.js +++ b/server/api/helpers/card-labels/create-one.js @@ -1,10 +1,10 @@ module.exports = { inputs: { - card: { + label: { type: 'ref', required: true, }, - label: { + card: { type: 'ref', required: true, }, @@ -17,7 +17,7 @@ module.exports = { labelAlreadyInCard: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const cardLabel = await CardLabel.create({ cardId: inputs.card.id, labelId: inputs.label.id, @@ -34,6 +34,6 @@ module.exports = { inputs.request, ); - return exits.success(cardLabel); + return cardLabel; }, }; diff --git a/server/api/helpers/delete-card-label.js b/server/api/helpers/card-labels/delete-one.js similarity index 88% rename from server/api/helpers/delete-card-label.js rename to server/api/helpers/card-labels/delete-one.js index 8be44998..3dc30ddc 100644 --- a/server/api/helpers/delete-card-label.js +++ b/server/api/helpers/card-labels/delete-one.js @@ -13,7 +13,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const cardLabel = await CardLabel.destroyOne(inputs.record.id); if (cardLabel) { @@ -27,6 +27,6 @@ module.exports = { ); } - return exits.success(cardLabel); + return cardLabel; }, }; diff --git a/server/api/helpers/get-projects.js b/server/api/helpers/card-labels/get-many.js similarity index 53% rename from server/api/helpers/get-projects.js rename to server/api/helpers/card-labels/get-many.js index 6218e1b7..a63ce708 100644 --- a/server/api/helpers/get-projects.js +++ b/server/api/helpers/card-labels/get-many.js @@ -6,9 +6,7 @@ module.exports = { }, }, - async fn(inputs, exits) { - const projects = await Project.find(inputs.criteria).sort('id'); - - return exits.success(projects); + async fn(inputs) { + return CardLabel.find(inputs.criteria).sort('id'); }, }; diff --git a/server/api/helpers/create-card-membership.js b/server/api/helpers/card-memberships/create-one.js similarity index 88% rename from server/api/helpers/create-card-membership.js rename to server/api/helpers/card-memberships/create-one.js index df59e651..75371fc8 100644 --- a/server/api/helpers/create-card-membership.js +++ b/server/api/helpers/card-memberships/create-one.js @@ -1,14 +1,14 @@ module.exports = { inputs: { - card: { - type: 'ref', - required: true, - }, - userOrUserId: { + userOrId: { type: 'ref', custom: (value) => _.isObjectLike(value) || _.isString(value), required: true, }, + card: { + type: 'ref', + required: true, + }, request: { type: 'ref', }, @@ -18,8 +18,8 @@ module.exports = { userAlreadyCardMember: {}, }, - async fn(inputs, exits) { - const { userId = inputs.userOrUserId } = inputs.userOrUserId; + async fn(inputs) { + const { userId = inputs.userOrId } = inputs.userOrId; const cardMembership = await CardMembership.create({ userId, @@ -59,6 +59,6 @@ module.exports = { ); } - return exits.success(cardMembership); + return cardMembership; }, }; diff --git a/server/api/helpers/delete-card-membership.js b/server/api/helpers/card-memberships/delete-one.js similarity index 92% rename from server/api/helpers/delete-card-membership.js rename to server/api/helpers/card-memberships/delete-one.js index 6371c65a..5ff6254b 100644 --- a/server/api/helpers/delete-card-membership.js +++ b/server/api/helpers/card-memberships/delete-one.js @@ -13,7 +13,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const cardMembership = await CardMembership.destroyOne(inputs.record.id); if (cardMembership) { @@ -42,6 +42,6 @@ module.exports = { } } - return exits.success(cardMembership); + return cardMembership; }, }; diff --git a/server/api/helpers/card-memberships/get-many.js b/server/api/helpers/card-memberships/get-many.js new file mode 100644 index 00000000..8faf648a --- /dev/null +++ b/server/api/helpers/card-memberships/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return CardMembership.find(inputs.criteria).sort('id'); + }, +}; diff --git a/server/api/helpers/card-subscriptions/get-many.js b/server/api/helpers/card-subscriptions/get-many.js new file mode 100644 index 00000000..8272bad4 --- /dev/null +++ b/server/api/helpers/card-subscriptions/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return CardSubscription.find(inputs.criteria).sort('id'); + }, +}; diff --git a/server/api/helpers/create-card.js b/server/api/helpers/cards/create-one.js similarity index 69% rename from server/api/helpers/create-card.js rename to server/api/helpers/cards/create-one.js index 8c68e48f..141da13f 100644 --- a/server/api/helpers/create-card.js +++ b/server/api/helpers/cards/create-one.js @@ -1,12 +1,5 @@ module.exports = { inputs: { - board: { - type: 'ref', - required: true, - }, - list: { - type: 'ref', - }, values: { type: 'json', custom: (value) => { @@ -26,6 +19,13 @@ module.exports = { type: 'ref', required: true, }, + board: { + type: 'ref', + required: true, + }, + list: { + type: 'ref', + }, request: { type: 'ref', }, @@ -37,12 +37,10 @@ module.exports = { positionMustBeInValues: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const { values } = inputs; - values.boardId = inputs.board.id; - - if (inputs.board.type === 'kanban') { + if (inputs.board.type === Board.Types.KANBAN) { if (!inputs.list) { throw 'listMustBePresent'; } @@ -57,9 +55,9 @@ module.exports = { throw 'positionMustBeInValues'; } - const cards = await sails.helpers.getCardsForList(inputs.list.id); + const cards = await sails.helpers.lists.getCards(inputs.list.id); - const { position, repositions } = sails.helpers.insertToPositionables( + const { position, repositions } = sails.helpers.utils.insertToPositionables( inputs.values.position, cards, ); @@ -81,11 +79,24 @@ module.exports = { }); values.position = position; - } else if (inputs.board.type === 'collection') { + } else if (inputs.board.type === Board.Types.COLLECTION) { delete values.position; } - const card = await Card.create(values).fetch(); + const card = await Card.create({ + ...values, + boardId: inputs.board.id, + creatorUserId: inputs.user.id, + }).fetch(); + + sails.sockets.broadcast( + `board:${card.boardId}`, + 'cardCreate', + { + item: card, + }, + inputs.request, + ); if (inputs.user.subscribeToOwnCards) { await CardSubscription.create({ @@ -93,34 +104,25 @@ module.exports = { userId: inputs.user.id, }).tolerate('E_UNIQUE'); - card.isSubscribed = true; - } else { - card.isSubscribed = false; + sails.sockets.broadcast(`user:${inputs.user.id}`, 'cardUpdate', { + item: { + id: card.id, + isSubscribed: true, + }, + }); } - // FIXME: broadcast subscription separately - sails.sockets.broadcast( - `board:${card.boardId}`, - 'cardCreate', + await sails.helpers.actions.createOne( { - item: card, - included: { - cardMemberships: [], - cardLabels: [], - tasks: [], - attachments: [], + type: Action.Types.CREATE_CARD, + data: { + list: _.pick(inputs.list, ['id', 'name']), }, }, - inputs.request, + inputs.user, + card, ); - await sails.helpers.createAction(card, inputs.user, { - type: 'createCard', - data: { - list: _.pick(inputs.list, ['id', 'name']), - }, - }); - - return exits.success(card); + return card; }, }; diff --git a/server/api/helpers/delete-card.js b/server/api/helpers/cards/delete-one.js similarity index 86% rename from server/api/helpers/delete-card.js rename to server/api/helpers/cards/delete-one.js index cb0e711c..fb72787f 100644 --- a/server/api/helpers/delete-card.js +++ b/server/api/helpers/cards/delete-one.js @@ -9,7 +9,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const card = await Card.archiveOne(inputs.record.id); if (card) { @@ -23,6 +23,6 @@ module.exports = { ); } - return exits.success(card); + return card; }, }; diff --git a/server/api/helpers/get-actions-for-card.js b/server/api/helpers/cards/get-actions.js similarity index 56% rename from server/api/helpers/get-actions-for-card.js rename to server/api/helpers/cards/get-actions.js index 4044a4b1..d2a7b56b 100644 --- a/server/api/helpers/get-actions-for-card.js +++ b/server/api/helpers/cards/get-actions.js @@ -2,9 +2,9 @@ const LIMIT = 10; module.exports = { inputs: { - id: { + idOrIds: { type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), + custom: (value) => _.isString(value) || _.every(value, _.isString), required: true, }, beforeId: { @@ -12,9 +12,9 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const criteria = { - cardId: inputs.id, + cardId: inputs.idOrIds, }; if (!_.isUndefined(inputs.beforeId)) { @@ -23,8 +23,6 @@ module.exports = { }; } - const actions = await sails.helpers.getActions(criteria, LIMIT); - - return exits.success(actions); + return sails.helpers.actions.getMany(criteria, LIMIT); }, }; diff --git a/server/api/helpers/cards/get-attachments.js b/server/api/helpers/cards/get-attachments.js new file mode 100644 index 00000000..6ddbd471 --- /dev/null +++ b/server/api/helpers/cards/get-attachments.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.attachments.getMany({ + cardId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/cards/get-card-labels.js b/server/api/helpers/cards/get-card-labels.js new file mode 100644 index 00000000..7fe7aab6 --- /dev/null +++ b/server/api/helpers/cards/get-card-labels.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.cardLabels.getMany({ + cardId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/cards/get-card-memberships.js b/server/api/helpers/cards/get-card-memberships.js new file mode 100644 index 00000000..dd3e98bd --- /dev/null +++ b/server/api/helpers/cards/get-card-memberships.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.cardMemberships.getMany({ + cardId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/cards/get-card-subscriptions.js b/server/api/helpers/cards/get-card-subscriptions.js new file mode 100644 index 00000000..3ba8960d --- /dev/null +++ b/server/api/helpers/cards/get-card-subscriptions.js @@ -0,0 +1,27 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + exceptUserIdOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + }, + }, + + async fn(inputs) { + const criteria = { + cardId: inputs.idOrIds, + }; + + if (!_.isUndefined(inputs.exceptUserIdOrIds)) { + criteria.userId = { + '!=': inputs.exceptUserIdOrIds, + }; + } + + return sails.helpers.cardSubscriptions.getMany(criteria); + }, +}; diff --git a/server/api/helpers/cards/get-label-ids.js b/server/api/helpers/cards/get-label-ids.js new file mode 100644 index 00000000..492ec031 --- /dev/null +++ b/server/api/helpers/cards/get-label-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const cardLabels = await sails.helpers.cards.getCardLabels(inputs.idOrIds); + + return sails.helpers.utils.mapRecords(cardLabels, 'labelId', _.isArray(inputs.idOrIds)); + }, +}; diff --git a/server/api/helpers/cards/get-labels.js b/server/api/helpers/cards/get-labels.js new file mode 100644 index 00000000..517e629a --- /dev/null +++ b/server/api/helpers/cards/get-labels.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const labelIds = await sails.helpers.cards.getLabelIds(inputs.idOrIds); + + return sails.helpers.labels.getMany(labelIds); + }, +}; diff --git a/server/api/helpers/get-cards.js b/server/api/helpers/cards/get-many.js similarity index 63% rename from server/api/helpers/get-cards.js rename to server/api/helpers/cards/get-many.js index 764caef7..76884f36 100644 --- a/server/api/helpers/get-cards.js +++ b/server/api/helpers/cards/get-many.js @@ -13,9 +13,7 @@ module.exports = { }, }, - async fn(inputs, exits) { - const cards = await Card.find(inputs.criteria).sort(inputs.sort).limit(inputs.limit); - - return exits.success(cards); + async fn(inputs) { + return Card.find(inputs.criteria).sort(inputs.sort).limit(inputs.limit); }, }; diff --git a/server/api/helpers/get-card-to-project-path.js b/server/api/helpers/cards/get-project-path.js old mode 100755 new mode 100644 similarity index 74% rename from server/api/helpers/get-card-to-project-path.js rename to server/api/helpers/cards/get-project-path.js index cfc548a4..b1652166 --- a/server/api/helpers/get-card-to-project-path.js +++ b/server/api/helpers/cards/get-project-path.js @@ -10,7 +10,7 @@ module.exports = { pathNotFound: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const card = await Card.findOne(inputs.criteria); if (!card) { @@ -19,8 +19,8 @@ module.exports = { let path; if (card.listId) { - path = await sails.helpers - .getListToProjectPath(card.listId) + path = await sails.helpers.lists + .getProjectPath(card.listId) .intercept('pathNotFound', (nodes) => ({ pathNotFound: { card, @@ -28,8 +28,8 @@ module.exports = { }, })); } else { - path = await sails.helpers - .getBoardToProjectPath(card.boardId) + path = await sails.helpers.boards + .getProjectPath(card.boardId) .intercept('pathNotFound', (nodes) => ({ pathNotFound: { card, @@ -38,9 +38,9 @@ module.exports = { })); } - return exits.success({ + return { card, ...path, - }); + }; }, }; diff --git a/server/api/helpers/cards/get-subscription-user-ids.js b/server/api/helpers/cards/get-subscription-user-ids.js new file mode 100644 index 00000000..493ca1a0 --- /dev/null +++ b/server/api/helpers/cards/get-subscription-user-ids.js @@ -0,0 +1,22 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + exceptUserIdOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + }, + }, + + async fn(inputs) { + const cardSubscriptions = await sails.helpers.cards.getCardSubscriptions( + inputs.idOrIds, + inputs.exceptUserIdOrIds, + ); + + return sails.helpers.utils.mapRecords(cardSubscriptions, 'userId', _.isArray(inputs.idOrIds)); + }, +}; diff --git a/server/api/helpers/cards/get-tasks.js b/server/api/helpers/cards/get-tasks.js new file mode 100644 index 00000000..97550d17 --- /dev/null +++ b/server/api/helpers/cards/get-tasks.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.tasks.getMany({ + cardId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/update-card.js b/server/api/helpers/cards/update-one.js similarity index 57% rename from server/api/helpers/update-card.js rename to server/api/helpers/cards/update-one.js index 04e39e06..42e1b182 100644 --- a/server/api/helpers/update-card.js +++ b/server/api/helpers/cards/update-one.js @@ -4,12 +4,6 @@ module.exports = { type: 'ref', required: true, }, - toBoard: { - type: 'ref', - }, - toList: { - type: 'ref', - }, values: { type: 'json', custom: (value) => { @@ -23,7 +17,16 @@ module.exports = { return true; }, - required: true, + defaultsTo: {}, + }, + nextBoard: { + type: 'ref', + }, + nextList: { + type: 'ref', + }, + user: { + type: 'ref', }, board: { type: 'ref', @@ -31,9 +34,6 @@ module.exports = { list: { type: 'ref', }, - user: { - type: 'ref', - }, request: { type: 'ref', }, @@ -42,66 +42,66 @@ module.exports = { exits: { boardMustBePresent: {}, listMustBePresent: {}, - toListMustBelongToBoard: {}, - toListMustBePresent: {}, + nextListMustBelongToBoard: {}, + nextListMustBePresent: {}, positionMustBeInValues: {}, userMustBePresent: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const { isSubscribed, ...values } = inputs.values; - if (inputs.toBoard || inputs.toList || !_.isUndefined(values.position)) { + if (inputs.nextBoard || inputs.nextList || !_.isUndefined(values.position)) { if (!inputs.board) { throw 'boardMustBePresent'; } - if (inputs.toBoard) { - if (inputs.toBoard.id === inputs.board.id) { - delete inputs.toBoard; // eslint-disable-line no-param-reassign + if (inputs.nextBoard) { + if (inputs.nextBoard.id === inputs.board.id) { + delete inputs.nextBoard; // eslint-disable-line no-param-reassign } else { - values.boardId = inputs.toBoard.id; + values.boardId = inputs.nextBoard.id; } } - const board = inputs.toBoard || inputs.board; + const board = inputs.nextBoard || inputs.board; - if (inputs.toList) { - if (inputs.board.type === 'kanban' && !inputs.list) { + if (inputs.nextList) { + if (inputs.board.type === Board.Types.KANBAN && !inputs.list) { throw 'listMustBePresent'; } - if (inputs.toList.boardId !== board.id) { - throw 'toListMustBelongToBoard'; + if (inputs.nextList.boardId !== board.id) { + throw 'nextListMustBelongToBoard'; } if ( - board.type === 'collection' || - (inputs.board.type === 'kanban' && inputs.toList.id === inputs.list.id) + board.type === Board.Types.COLLECTION || + (inputs.board.type === Board.Types.KANBAN && inputs.nextList.id === inputs.list.id) ) { - delete inputs.toList; // eslint-disable-line no-param-reassign + delete inputs.nextList; // eslint-disable-line no-param-reassign } else { - values.listId = inputs.toList.id; + values.listId = inputs.nextList.id; } } - if (inputs.toList) { + if (inputs.nextList) { if (_.isUndefined(values.position)) { throw 'positionMustBeInValues'; } - } else if (inputs.toBoard) { - if (inputs.toBoard.type === 'kanban') { - throw 'toListMustBePresent'; + } else if (inputs.nextBoard) { + if (inputs.nextBoard.type === Board.Types.KANBAN) { + throw 'nextListMustBePresent'; } - if (inputs.board.type === 'kanban') { + if (inputs.board.type === Board.Types.KANBAN) { values.listId = null; values.position = null; } } } - if ((!_.isUndefined(isSubscribed) || inputs.toBoard || inputs.toList) && !inputs.user) { + if ((!_.isUndefined(isSubscribed) || inputs.nextBoard || inputs.nextList) && !inputs.user) { throw 'userMustBePresent'; } @@ -109,8 +109,12 @@ module.exports = { const boardId = values.boardId || inputs.record.boardId; const listId = values.listId || inputs.record.listId; - const cards = await sails.helpers.getCardsForList(listId, inputs.record.id); - const { position, repositions } = sails.helpers.insertToPositionables(values.position, cards); + const cards = await sails.helpers.lists.getCards(listId, inputs.record.id); + + const { position, repositions } = sails.helpers.utils.insertToPositionables( + values.position, + cards, + ); repositions.forEach(async ({ id, position: nextPosition }) => { await Card.update({ @@ -134,28 +138,26 @@ module.exports = { let card; if (!_.isEmpty(values)) { let prevLabels; - if (inputs.toBoard) { - if (inputs.toBoard.projectId !== inputs.board.projectId) { - const userIds = await sails.helpers.getMembershipUserIdsForProject( - inputs.toBoard.projectId, - ); + if (inputs.nextBoard) { + if (inputs.nextBoard.projectId !== inputs.board.projectId) { + const memberUserIds = await sails.helpers.boards.getMemberUserIds(inputs.nextBoard.id); await CardSubscription.destroy({ cardId: inputs.record.id, userId: { - '!=': userIds, + '!=': memberUserIds, }, }); await CardMembership.destroy({ cardId: inputs.record.id, userId: { - '!=': userIds, + '!=': memberUserIds, }, }); } - prevLabels = await sails.helpers.getLabelsForCard(inputs.record.id); + prevLabels = await sails.helpers.cards.getLabels(inputs.record.id); await CardLabel.destroy({ cardId: inputs.record.id, @@ -165,20 +167,11 @@ module.exports = { card = await Card.updateOne(inputs.record.id).set(values); if (!card) { - return exits.success(card); + return card; } - if (inputs.toBoard) { - sails.sockets.broadcast( - `board:${inputs.board.id}`, - 'cardDelete', - { - item: inputs.record, - }, - inputs.request, - ); - - const labels = await sails.helpers.getLabelsForBoard(card.boardId); + if (inputs.nextBoard) { + const labels = await sails.helpers.boards.getLabels(card.boardId); const labelByNameMap = _.keyBy(labels, 'name'); const labelIds = await Promise.all( @@ -187,9 +180,9 @@ module.exports = { return labelByNameMap[prevLabel.name].id; } - const { id } = await sails.helpers.createLabel( - inputs.toBoard, + const { id } = await sails.helpers.labels.createOne( _.omit(prevLabel, ['id', 'boardId']), + inputs.nextBoard, ); return id; @@ -197,34 +190,23 @@ module.exports = { ); await Promise.all( - labelIds.map(async (labelId) => { - await CardLabel.create({ + labelIds.map(async (labelId) => + CardLabel.create({ labelId, cardId: card.id, }) .tolerate('E_UNIQUE') - .fetch(); - }), + .fetch(), + ), ); - const cardMemberships = await sails.helpers.getMembershipsForCard(card.id); - const cardLabels = await sails.helpers.getCardLabelsForCard(card.id); - const tasks = await sails.helpers.getTasksForCard(card.id); - const attachments = await sails.helpers.getAttachmentsForCard(card.id); - - sails.sockets.broadcast(`board:${card.boardId}`, 'cardCreate', { + sails.sockets.broadcast(`board:${card.boardId}`, 'cardUpdate', { item: card, - included: { - cardMemberships, - cardLabels, - tasks, - attachments, - }, }); - const userIds = await sails.helpers.getSubscriptionUserIdsForCard(card.id); + const subscriptionUserIds = await sails.helpers.cards.getSubscriptionUserIds(card.id); - userIds.forEach((userId) => { + subscriptionUserIds.forEach((userId) => { sails.sockets.broadcast(`user:${userId}`, 'cardUpdate', { item: { id: card.id, @@ -243,15 +225,19 @@ module.exports = { ); } - if (!inputs.toBoard && inputs.toList) { + if (!inputs.nextBoard && inputs.nextList) { // TODO: add transfer action - await sails.helpers.createAction(card, inputs.user, { - type: 'moveCard', - data: { - fromList: _.pick(inputs.list, ['id', 'name']), - toList: _.pick(inputs.toList, ['id', 'name']), + await sails.helpers.actions.createOne( + { + type: Action.Types.MOVE_CARD, + data: { + fromList: _.pick(inputs.list, ['id', 'name']), + toList: _.pick(inputs.nextList, ['id', 'name']), + }, }, - }); + inputs.user, + card, + ); } } else { card = inputs.record; @@ -290,6 +276,6 @@ module.exports = { } } - return exits.success(card); + return card; }, }; diff --git a/server/api/helpers/create-action.js b/server/api/helpers/create-action.js deleted file mode 100644 index ca9cef70..00000000 --- a/server/api/helpers/create-action.js +++ /dev/null @@ -1,57 +0,0 @@ -module.exports = { - inputs: { - card: { - type: 'ref', - required: true, - }, - user: { - type: 'ref', - required: true, - }, - values: { - type: 'json', - required: true, - }, - request: { - type: 'ref', - }, - }, - - async fn(inputs, exits) { - const action = await Action.create({ - ...inputs.values, - cardId: inputs.card.id, - userId: inputs.user.id, - }).fetch(); - - sails.sockets.broadcast( - `board:${inputs.card.boardId}`, - 'actionCreate', - { - item: action, - }, - inputs.request, - ); - - const userIds = await sails.helpers.getSubscriptionUserIdsForCard(action.cardId, action.userId); - - userIds.forEach(async (userId) => { - const notification = await Notification.create({ - userId, - actionId: action.id, - cardId: action.cardId, - }).fetch(); - - sails.sockets.broadcast(`user:${userId}`, 'notificationCreate', { - item: notification, - included: { - users: [inputs.user], - cards: [inputs.card], - actions: [action], - }, - }); - }); - - return exits.success(action); - }, -}; diff --git a/server/api/helpers/create-project-membership.js b/server/api/helpers/create-project-membership.js deleted file mode 100644 index 207aabfa..00000000 --- a/server/api/helpers/create-project-membership.js +++ /dev/null @@ -1,63 +0,0 @@ -module.exports = { - inputs: { - project: { - type: 'ref', - required: true, - }, - user: { - type: 'ref', - required: true, - }, - request: { - type: 'ref', - }, - }, - - exits: { - userAlreadyProjectMember: {}, - }, - - async fn(inputs, exits) { - const projectMembership = await ProjectMembership.create({ - projectId: inputs.project.id, - userId: inputs.user.id, - }) - .intercept('E_UNIQUE', 'userAlreadyProjectMember') - .fetch(); - - const { userIds, projectMemberships } = await sails.helpers.getMembershipUserIdsForProject( - projectMembership.projectId, - true, - ); - - userIds.forEach((userId) => { - if (userId !== projectMembership.userId) { - sails.sockets.broadcast( - `user:${userId}`, - 'projectMembershipCreate', - { - item: projectMembership, - included: { - users: [inputs.user], - }, - }, - inputs.request, - ); - } - }); - - const users = await sails.helpers.getUsers(userIds); - const boards = await sails.helpers.getBoardsForProject(projectMembership.projectId); - - sails.sockets.broadcast(`user:${projectMembership.userId}`, 'projectCreate', { - item: inputs.project, - included: { - users, - projectMemberships, - boards, - }, - }); - - return exits.success(projectMembership); - }, -}; diff --git a/server/api/helpers/create-project.js b/server/api/helpers/create-project.js deleted file mode 100644 index 96f20d22..00000000 --- a/server/api/helpers/create-project.js +++ /dev/null @@ -1,51 +0,0 @@ -module.exports = { - inputs: { - user: { - type: 'ref', - required: true, - }, - values: { - type: 'json', - required: true, - }, - request: { - type: 'ref', - }, - withProjectMembership: { - type: 'boolean', - defaultsTo: false, - }, - }, - - async fn(inputs, exits) { - const project = await Project.create(inputs.values).fetch(); - - const projectMembership = await ProjectMembership.create({ - projectId: project.id, - userId: inputs.user.id, - }).fetch(); - - sails.sockets.broadcast( - `user:${projectMembership.userId}`, - 'projectCreate', - { - item: project, - included: { - users: [inputs.user], - projectMemberships: [projectMembership], - boards: [], - }, - }, - inputs.request, - ); - - return exits.success( - inputs.withProjectMembership - ? { - project, - projectMembership, - } - : project, - ); - }, -}; diff --git a/server/api/helpers/delete-board.js b/server/api/helpers/delete-board.js deleted file mode 100644 index 027c26a7..00000000 --- a/server/api/helpers/delete-board.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = { - inputs: { - record: { - type: 'ref', - required: true, - }, - request: { - type: 'ref', - }, - }, - - async fn(inputs, exits) { - const board = await Board.archiveOne(inputs.record.id); - - if (board) { - sails.sockets.leaveAll(`board:${board.id}`); - - const userIds = await sails.helpers.getMembershipUserIdsForProject(board.projectId); - - userIds.forEach((userId) => { - sails.sockets.broadcast( - `user:${userId}`, - 'boardDelete', - { - item: board, - }, - inputs.request, - ); - }); - } - - return exits.success(board); - }, -}; diff --git a/server/api/helpers/delete-list.js b/server/api/helpers/delete-list.js deleted file mode 100644 index 67ec245a..00000000 --- a/server/api/helpers/delete-list.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - inputs: { - record: { - type: 'ref', - required: true, - }, - request: { - type: 'ref', - }, - }, - - async fn(inputs, exits) { - const list = await List.archiveOne(inputs.record.id); - - sails.sockets.broadcast( - `board:${list.boardId}`, - 'listDelete', - { - item: list, - }, - inputs.request, - ); - - return exits.success(list); - }, -}; diff --git a/server/api/helpers/delete-project-membership.js b/server/api/helpers/delete-project-membership.js deleted file mode 100644 index 29ebbed2..00000000 --- a/server/api/helpers/delete-project-membership.js +++ /dev/null @@ -1,61 +0,0 @@ -module.exports = { - inputs: { - record: { - type: 'ref', - required: true, - }, - request: { - type: 'ref', - }, - }, - - async fn(inputs, exits) { - const boards = await sails.helpers.getBoardsForProject(inputs.record.projectId); - const boardIds = sails.helpers.mapRecords(boards); - - const cards = await sails.helpers.getCardsForBoard(boardIds); - const cardIds = sails.helpers.mapRecords(cards); - - await CardSubscription.destroy({ - cardId: cardIds, - userId: inputs.record.userId, - }); - - await CardMembership.destroy({ - cardId: cardIds, - userId: inputs.record.userId, - }); - - const projectMembership = await ProjectMembership.destroyOne(inputs.record.id); - - if (projectMembership) { - const userIds = await sails.helpers.getMembershipUserIdsForProject( - projectMembership.projectId, - ); - - userIds.forEach((userId) => { - sails.sockets.broadcast( - `user:${userId}`, - 'projectMembershipDelete', - { - item: projectMembership, - }, - inputs.request, - ); - }); - - sails.sockets.removeRoomMembersFromRooms( - `user:${projectMembership.userId}`, - boardIds.map((boardId) => `board:${boardId}`), - ); - - const project = await Project.findOne(projectMembership.projectId); - - sails.sockets.broadcast(`user:${projectMembership.userId}`, 'projectDelete', { - item: project, - }); - } - - return exits.success(projectMembership); - }, -}; diff --git a/server/api/helpers/get-admin-user-ids.js b/server/api/helpers/get-admin-user-ids.js deleted file mode 100755 index e1c5fbb4..00000000 --- a/server/api/helpers/get-admin-user-ids.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - async fn(inputs, exits) { - const users = await sails.helpers.getUsers({ - isAdmin: true, - }); - - const userIds = sails.helpers.mapRecords(users); - - return exits.success(userIds); - }, -}; diff --git a/server/api/helpers/get-attachments-for-card.js b/server/api/helpers/get-attachments-for-card.js deleted file mode 100644 index bee193ec..00000000 --- a/server/api/helpers/get-attachments-for-card.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const attachments = await sails.helpers.getAttachments({ - cardId: inputs.id, - }); - - return exits.success(attachments); - }, -}; diff --git a/server/api/helpers/get-attachments.js b/server/api/helpers/get-attachments.js deleted file mode 100644 index 2b63c67d..00000000 --- a/server/api/helpers/get-attachments.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - inputs: { - criteria: { - type: 'json', - custom: (value) => _.isArray(value) || _.isPlainObject(value), - }, - }, - - async fn(inputs, exits) { - const attachments = await Attachment.find(inputs.criteria).sort('id'); - - return exits.success(attachments); - }, -}; diff --git a/server/api/helpers/get-boards-for-project.js b/server/api/helpers/get-boards-for-project.js deleted file mode 100644 index 9e8aebb2..00000000 --- a/server/api/helpers/get-boards-for-project.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - exceptBoardId: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - }, - }, - - async fn(inputs, exits) { - const criteria = { - projectId: inputs.id, - }; - - if (!_.isUndefined(inputs.exceptBoardId)) { - criteria.id = { - '!=': inputs.exceptBoardId, - }; - } - - const boards = await sails.helpers.getBoards(criteria); - - return exits.success(boards); - }, -}; diff --git a/server/api/helpers/get-card-labels-for-card.js b/server/api/helpers/get-card-labels-for-card.js deleted file mode 100644 index 62fbcced..00000000 --- a/server/api/helpers/get-card-labels-for-card.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const cardLabels = await sails.helpers.getCardLabels({ - cardId: inputs.id, - }); - - return exits.success(cardLabels); - }, -}; diff --git a/server/api/helpers/get-card-labels.js b/server/api/helpers/get-card-labels.js deleted file mode 100644 index 82622e6c..00000000 --- a/server/api/helpers/get-card-labels.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - inputs: { - criteria: { - type: 'json', - custom: (value) => _.isArray(value) || _.isPlainObject(value), - }, - }, - - async fn(inputs, exits) { - const cardLabels = await CardLabel.find(inputs.criteria).sort('id'); - - return exits.success(cardLabels); - }, -}; diff --git a/server/api/helpers/get-card-memberships.js b/server/api/helpers/get-card-memberships.js deleted file mode 100644 index a5ac2ac4..00000000 --- a/server/api/helpers/get-card-memberships.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - inputs: { - criteria: { - type: 'json', - custom: (value) => _.isArray(value) || _.isPlainObject(value), - }, - }, - - async fn(inputs, exits) { - const cardMemberships = await CardMembership.find(inputs.criteria).sort('id'); - - return exits.success(cardMemberships); - }, -}; diff --git a/server/api/helpers/get-card-subscriptions.js b/server/api/helpers/get-card-subscriptions.js deleted file mode 100644 index d46cc1e6..00000000 --- a/server/api/helpers/get-card-subscriptions.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - inputs: { - criteria: { - type: 'json', - custom: (value) => _.isArray(value) || _.isPlainObject(value), - }, - }, - - async fn(inputs, exits) { - const cardSubscriptions = await CardSubscription.find(inputs.criteria).sort('id'); - - return exits.success(cardSubscriptions); - }, -}; diff --git a/server/api/helpers/get-cards-for-list.js b/server/api/helpers/get-cards-for-list.js deleted file mode 100644 index 7668d9cd..00000000 --- a/server/api/helpers/get-cards-for-list.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - exceptCardId: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - }, - }, - - async fn(inputs, exits) { - const criteria = { - listId: inputs.id, - }; - - if (!_.isUndefined(inputs.exceptCardId)) { - criteria.id = { - '!=': inputs.exceptCardId, - }; - } - - const cards = await sails.helpers.getCards(criteria); - - return exits.success(cards); - }, -}; diff --git a/server/api/helpers/get-label-ids-for-card.js b/server/api/helpers/get-label-ids-for-card.js deleted file mode 100644 index c09440a0..00000000 --- a/server/api/helpers/get-label-ids-for-card.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const cardLabels = await sails.helpers.getCardLabelsForCard(inputs.id); - const labelIds = sails.helpers.mapRecords(cardLabels, 'labelId', _.isArray(inputs.id)); - - return exits.success(labelIds); - }, -}; diff --git a/server/api/helpers/get-labels-for-board.js b/server/api/helpers/get-labels-for-board.js deleted file mode 100644 index 7b54df9b..00000000 --- a/server/api/helpers/get-labels-for-board.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const labels = await sails.helpers.getLabels({ - boardId: inputs.id, - }); - - return exits.success(labels); - }, -}; diff --git a/server/api/helpers/get-labels-for-card.js b/server/api/helpers/get-labels-for-card.js deleted file mode 100644 index 83c05bcd..00000000 --- a/server/api/helpers/get-labels-for-card.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const labelIds = await sails.helpers.getLabelIdsForCard(inputs.id); - const labels = await sails.helpers.getLabels(labelIds); - - return exits.success(labels); - }, -}; diff --git a/server/api/helpers/get-lists-for-board.js b/server/api/helpers/get-lists-for-board.js deleted file mode 100644 index 49d1d354..00000000 --- a/server/api/helpers/get-lists-for-board.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - exceptListId: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - }, - }, - - async fn(inputs, exits) { - const criteria = { - boardId: inputs.id, - }; - - if (!_.isUndefined(inputs.exceptListId)) { - criteria.id = { - '!=': inputs.exceptListId, - }; - } - - const lists = await List.find(criteria).sort('position'); - - return exits.success(lists); - }, -}; diff --git a/server/api/helpers/get-membership-project-ids-for-user.js b/server/api/helpers/get-membership-project-ids-for-user.js deleted file mode 100755 index e11b68d5..00000000 --- a/server/api/helpers/get-membership-project-ids-for-user.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const projectMemberships = await sails.helpers.getProjectMembershipsForUser(inputs.id); - - const projectIds = sails.helpers.mapRecords( - projectMemberships, - 'projectId', - _.isArray(inputs.id), - ); - - return exits.success(projectIds); - }, -}; diff --git a/server/api/helpers/get-membership-user-ids-for-project.js b/server/api/helpers/get-membership-user-ids-for-project.js deleted file mode 100755 index fa07e712..00000000 --- a/server/api/helpers/get-membership-user-ids-for-project.js +++ /dev/null @@ -1,27 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - withProjectMemberships: { - type: 'boolean', - defaultsTo: false, - }, - }, - - async fn(inputs, exits) { - const projectMemberships = await sails.helpers.getMembershipsForProject(inputs.id); - const userIds = sails.helpers.mapRecords(projectMemberships, 'userId', _.isArray(inputs.id)); - - return exits.success( - inputs.withProjectMemberships - ? { - userIds, - projectMemberships, - } - : userIds, - ); - }, -}; diff --git a/server/api/helpers/get-memberships-for-card.js b/server/api/helpers/get-memberships-for-card.js deleted file mode 100644 index 86c26a4b..00000000 --- a/server/api/helpers/get-memberships-for-card.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - exceptUserId: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - }, - }, - - async fn(inputs, exits) { - const criteria = { - cardId: inputs.id, - }; - - if (!_.isUndefined(inputs.exceptUserId)) { - criteria.userId = { - '!=': inputs.exceptUserId, - }; - } - - const cardMemberships = await sails.helpers.getCardMemberships(criteria); - - return exits.success(cardMemberships); - }, -}; diff --git a/server/api/helpers/get-memberships-for-project.js b/server/api/helpers/get-memberships-for-project.js deleted file mode 100644 index 9f294ca8..00000000 --- a/server/api/helpers/get-memberships-for-project.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const projectMemberships = await sails.helpers.getProjectMemberships({ - projectId: inputs.id, - }); - - return exits.success(projectMemberships); - }, -}; diff --git a/server/api/helpers/get-notifications-for-user.js b/server/api/helpers/get-notifications-for-user.js deleted file mode 100644 index 6138e5c8..00000000 --- a/server/api/helpers/get-notifications-for-user.js +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const notifications = await sails.helpers.getNotifications({ - isRead: false, - userId: inputs.id, - }); - - return exits.success(notifications); - }, -}; diff --git a/server/api/helpers/get-notifications.js b/server/api/helpers/get-notifications.js deleted file mode 100644 index a08e6356..00000000 --- a/server/api/helpers/get-notifications.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - inputs: { - criteria: { - type: 'json', - custom: (value) => _.isArray(value) || _.isPlainObject(value), - }, - }, - - async fn(inputs, exits) { - const notifications = await Notification.find(inputs.criteria).sort('id DESC'); - - return exits.success(notifications); - }, -}; diff --git a/server/api/helpers/get-project-memberships-for-user.js b/server/api/helpers/get-project-memberships-for-user.js deleted file mode 100644 index 02999055..00000000 --- a/server/api/helpers/get-project-memberships-for-user.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const projectMemberships = await sails.helpers.getProjectMemberships({ - userId: inputs.id, - }); - - return exits.success(projectMemberships); - }, -}; diff --git a/server/api/helpers/get-project-memberships.js b/server/api/helpers/get-project-memberships.js deleted file mode 100644 index 20b17c6e..00000000 --- a/server/api/helpers/get-project-memberships.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - inputs: { - criteria: { - type: 'json', - custom: (value) => _.isArray(value) || _.isPlainObject(value), - }, - }, - - async fn(inputs, exits) { - const projectMemberships = await ProjectMembership.find(inputs.criteria).sort('id'); - - return exits.success(projectMemberships); - }, -}; diff --git a/server/api/helpers/get-subscription-user-ids-for-card.js b/server/api/helpers/get-subscription-user-ids-for-card.js deleted file mode 100644 index e6fa0cd8..00000000 --- a/server/api/helpers/get-subscription-user-ids-for-card.js +++ /dev/null @@ -1,35 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - exceptUserId: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - }, - withCardSubscriptions: { - type: 'boolean', - defaultsTo: false, - }, - }, - - async fn(inputs, exits) { - const cardSubscriptions = await sails.helpers.getSubscriptionsForCard( - inputs.id, - inputs.exceptUserId, - ); - - const userIds = sails.helpers.mapRecords(cardSubscriptions, 'userId', _.isArray(inputs.id)); - - return exits.success( - inputs.withCardSubscriptions - ? { - userIds, - cardSubscriptions, - } - : userIds, - ); - }, -}; diff --git a/server/api/helpers/get-subscriptions-by-user-for-card.js b/server/api/helpers/get-subscriptions-by-user-for-card.js deleted file mode 100644 index 632733de..00000000 --- a/server/api/helpers/get-subscriptions-by-user-for-card.js +++ /dev/null @@ -1,22 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - userId: { - type: 'json', - required: true, - }, - }, - - async fn(inputs, exits) { - const cardSubscriptions = await sails.helpers.getCardSubscriptions({ - cardId: inputs.id, - userId: inputs.userId, - }); - - return exits.success(cardSubscriptions); - }, -}; diff --git a/server/api/helpers/get-subscriptions-for-card.js b/server/api/helpers/get-subscriptions-for-card.js deleted file mode 100644 index 7874b602..00000000 --- a/server/api/helpers/get-subscriptions-for-card.js +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - exceptUserId: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - }, - }, - - async fn(inputs, exits) { - const criteria = { - cardId: inputs.id, - }; - - if (!_.isUndefined(inputs.exceptUserId)) { - criteria.userId = { - '!=': inputs.exceptUserId, - }; - } - - const cardSubscriptions = await sails.helpers.getCardSubscriptions(criteria); - - return exits.success(cardSubscriptions); - }, -}; diff --git a/server/api/helpers/get-tasks-for-card.js b/server/api/helpers/get-tasks-for-card.js deleted file mode 100644 index 29a8ac5b..00000000 --- a/server/api/helpers/get-tasks-for-card.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'json', - custom: (value) => _.isString(value) || _.isArray(value), - required: true, - }, - }, - - async fn(inputs, exits) { - const tasks = await sails.helpers.getTasks({ - cardId: inputs.id, - }); - - return exits.success(tasks); - }, -}; diff --git a/server/api/helpers/is-user-member-for-project.js b/server/api/helpers/is-user-member-for-project.js deleted file mode 100755 index 34549fcf..00000000 --- a/server/api/helpers/is-user-member-for-project.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - inputs: { - id: { - type: 'string', - required: true, - }, - userId: { - type: 'string', - required: true, - }, - }, - - async fn(inputs, exits) { - const projectMembership = await ProjectMembership.findOne({ - projectId: inputs.id, - userId: inputs.userId, - }); - - return exits.success(!!projectMembership); - }, -}; diff --git a/server/api/helpers/create-label.js b/server/api/helpers/labels/create-one.js similarity index 88% rename from server/api/helpers/create-label.js rename to server/api/helpers/labels/create-one.js index 97f3094c..f6fd6414 100644 --- a/server/api/helpers/create-label.js +++ b/server/api/helpers/labels/create-one.js @@ -1,19 +1,19 @@ module.exports = { inputs: { - board: { - type: 'ref', - required: true, - }, values: { type: 'json', required: true, }, + board: { + type: 'ref', + required: true, + }, request: { type: 'ref', }, }, - async fn(inputs, exits) { + async fn(inputs) { const label = await Label.create({ ...inputs.values, boardId: inputs.board.id, @@ -28,6 +28,6 @@ module.exports = { inputs.request, ); - return exits.success(label); + return label; }, }; diff --git a/server/api/helpers/delete-label.js b/server/api/helpers/labels/delete-one.js similarity index 88% rename from server/api/helpers/delete-label.js rename to server/api/helpers/labels/delete-one.js index 2e900413..654d97c7 100644 --- a/server/api/helpers/delete-label.js +++ b/server/api/helpers/labels/delete-one.js @@ -9,7 +9,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { await CardLabel.destroy({ labelId: inputs.record.id, }); @@ -27,6 +27,6 @@ module.exports = { ); } - return exits.success(label); + return label; }, }; diff --git a/server/api/helpers/labels/get-many.js b/server/api/helpers/labels/get-many.js new file mode 100644 index 00000000..9dd16454 --- /dev/null +++ b/server/api/helpers/labels/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return Label.find(inputs.criteria).sort('id'); + }, +}; diff --git a/server/api/helpers/get-label-to-project-path.js b/server/api/helpers/labels/get-project-path.js old mode 100755 new mode 100644 similarity index 74% rename from server/api/helpers/get-label-to-project-path.js rename to server/api/helpers/labels/get-project-path.js index 7e9f031d..b6570ce3 --- a/server/api/helpers/get-label-to-project-path.js +++ b/server/api/helpers/labels/get-project-path.js @@ -10,15 +10,15 @@ module.exports = { pathNotFound: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const label = await Label.findOne(inputs.criteria); if (!label) { throw 'pathNotFound'; } - const path = await sails.helpers - .getBoardToProjectPath(label.boardId) + const path = await sails.helpers.boards + .getProjectPath(label.boardId) .intercept('pathNotFound', (nodes) => ({ pathNotFound: { label, @@ -26,9 +26,9 @@ module.exports = { }, })); - return exits.success({ + return { label, ...path, - }); + }; }, }; diff --git a/server/api/helpers/update-label.js b/server/api/helpers/labels/update-one.js similarity index 88% rename from server/api/helpers/update-label.js rename to server/api/helpers/labels/update-one.js index a10add25..9eb7a143 100644 --- a/server/api/helpers/update-label.js +++ b/server/api/helpers/labels/update-one.js @@ -13,7 +13,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const label = await Label.updateOne(inputs.record.id).set(inputs.values); if (label) { @@ -27,6 +27,6 @@ module.exports = { ); } - return exits.success(label); + return label; }, }; diff --git a/server/api/helpers/create-list.js b/server/api/helpers/lists/create-one.js similarity index 82% rename from server/api/helpers/create-list.js rename to server/api/helpers/lists/create-one.js index e76ae135..bec9dcea 100644 --- a/server/api/helpers/create-list.js +++ b/server/api/helpers/lists/create-one.js @@ -1,23 +1,23 @@ module.exports = { inputs: { - board: { - type: 'ref', - required: true, - }, values: { type: 'json', custom: (value) => _.isPlainObject(value) && _.isFinite(value.position), required: true, }, + board: { + type: 'ref', + required: true, + }, request: { type: 'ref', }, }, - async fn(inputs, exits) { - const lists = await sails.helpers.getListsForBoard(inputs.board.id); + async fn(inputs) { + const lists = await sails.helpers.boards.getLists(inputs.board.id); - const { position, repositions } = sails.helpers.insertToPositionables( + const { position, repositions } = sails.helpers.utils.insertToPositionables( inputs.values.position, lists, ); @@ -53,6 +53,6 @@ module.exports = { inputs.request, ); - return exits.success(list); + return list; }, }; diff --git a/server/api/helpers/lists/delete-one.js b/server/api/helpers/lists/delete-one.js new file mode 100644 index 00000000..47eb7647 --- /dev/null +++ b/server/api/helpers/lists/delete-one.js @@ -0,0 +1,28 @@ +module.exports = { + inputs: { + record: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + async fn(inputs) { + const list = await List.archiveOne(inputs.record.id); + + if (list) { + sails.sockets.broadcast( + `board:${list.boardId}`, + 'listDelete', + { + item: list, + }, + inputs.request, + ); + } + + return list; + }, +}; diff --git a/server/api/helpers/lists/get-cards.js b/server/api/helpers/lists/get-cards.js new file mode 100644 index 00000000..da4a479e --- /dev/null +++ b/server/api/helpers/lists/get-cards.js @@ -0,0 +1,27 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + exceptCardIdOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + }, + }, + + async fn(inputs) { + const criteria = { + listId: inputs.idOrIds, + }; + + if (!_.isUndefined(inputs.exceptCardIdOrIds)) { + criteria.id = { + '!=': inputs.exceptCardIdOrIds, + }; + } + + return sails.helpers.cards.getMany(criteria); + }, +}; diff --git a/server/api/helpers/lists/get-many.js b/server/api/helpers/lists/get-many.js new file mode 100644 index 00000000..be8161a7 --- /dev/null +++ b/server/api/helpers/lists/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return List.find(inputs.criteria).sort('position'); + }, +}; diff --git a/server/api/helpers/get-list-to-project-path.js b/server/api/helpers/lists/get-project-path.js old mode 100755 new mode 100644 similarity index 74% rename from server/api/helpers/get-list-to-project-path.js rename to server/api/helpers/lists/get-project-path.js index 955bf341..9b6a86cb --- a/server/api/helpers/get-list-to-project-path.js +++ b/server/api/helpers/lists/get-project-path.js @@ -10,15 +10,15 @@ module.exports = { pathNotFound: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const list = await List.findOne(inputs.criteria); if (!list) { throw 'pathNotFound'; } - const path = await sails.helpers - .getBoardToProjectPath(list.boardId) + const path = await sails.helpers.boards + .getProjectPath(list.boardId) .intercept('pathNotFound', (nodes) => ({ pathNotFound: { list, @@ -26,9 +26,9 @@ module.exports = { }, })); - return exits.success({ + return { list, ...path, - }); + }; }, }; diff --git a/server/api/helpers/update-list.js b/server/api/helpers/lists/update-one.js similarity index 84% rename from server/api/helpers/update-list.js rename to server/api/helpers/lists/update-one.js index 818516cc..f55fabda 100644 --- a/server/api/helpers/update-list.js +++ b/server/api/helpers/lists/update-one.js @@ -24,11 +24,11 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { if (!_.isUndefined(inputs.values.position)) { - const lists = await sails.helpers.getListsForBoard(inputs.record.boardId, inputs.record.id); + const lists = await sails.helpers.boards.getLists(inputs.record.boardId, inputs.record.id); - const { position, repositions } = sails.helpers.insertToPositionables( + const { position, repositions } = sails.helpers.utils.insertToPositionables( inputs.values.position, lists, ); @@ -65,6 +65,6 @@ module.exports = { ); } - return exits.success(list); + return list; }, }; diff --git a/server/api/helpers/notifications/create-one.js b/server/api/helpers/notifications/create-one.js new file mode 100644 index 00000000..d86b5c50 --- /dev/null +++ b/server/api/helpers/notifications/create-one.js @@ -0,0 +1,29 @@ +module.exports = { + inputs: { + userOrId: { + type: 'ref', + custom: (value) => _.isObjectLike(value) || _.isString(value), + required: true, + }, + action: { + type: 'ref', + required: true, + }, + }, + + async fn(inputs) { + const { userId = inputs.userOrId } = inputs.userOrId; + + const notification = await Notification.create({ + userId, + actionId: inputs.action.id, + cardId: inputs.action.cardId, + }).fetch(); + + sails.sockets.broadcast(`user:${userId}`, 'notificationCreate', { + item: notification, + }); + + return notification; + }, +}; diff --git a/server/api/helpers/notifications/get-many.js b/server/api/helpers/notifications/get-many.js new file mode 100644 index 00000000..5dd24dc1 --- /dev/null +++ b/server/api/helpers/notifications/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return Notification.find(inputs.criteria).sort('id DESC'); + }, +}; diff --git a/server/api/helpers/notifications/update-many.js b/server/api/helpers/notifications/update-many.js new file mode 100644 index 00000000..30b8bd7f --- /dev/null +++ b/server/api/helpers/notifications/update-many.js @@ -0,0 +1,48 @@ +module.exports = { + inputs: { + recordsOrIds: { + type: 'json', + custom: (value) => _.every(value, _.isObjectLike) || _.every(value, _.isString), + required: true, + }, + values: { + type: 'json', + required: true, + }, + user: { + type: 'ref', + }, + request: { + type: 'ref', + }, + }, + + async fn(inputs) { + const criteria = {}; + + if (_.every(inputs.recordsOrIds, _.isObjectLike)) { + criteria.id = sails.helpers.utils.mapRecords(inputs.recordsOrIds); + } else if (_.every(inputs.recordsOrIds, _.isString)) { + criteria.id = inputs.recordsOrIds; + } + + if (inputs.user) { + criteria.userId = inputs.user.id; + } + + const notifications = await Notification.update(criteria).set(inputs.values).fetch(); + + notifications.forEach((notification) => { + sails.sockets.broadcast( + `user:${notification.userId}`, + 'notificationUpdate', + { + item: notification, + }, + inputs.request, + ); + }); + + return notifications; + }, +}; diff --git a/server/api/helpers/project-managers/create-one.js b/server/api/helpers/project-managers/create-one.js new file mode 100644 index 00000000..40a12833 --- /dev/null +++ b/server/api/helpers/project-managers/create-one.js @@ -0,0 +1,45 @@ +module.exports = { + inputs: { + user: { + type: 'ref', + required: true, + }, + project: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + exits: { + userAlreadyProjectManager: {}, + }, + + async fn(inputs) { + const projectManager = await ProjectManager.create({ + projectId: inputs.project.id, + userId: inputs.user.id, + }) + .intercept('E_UNIQUE', 'userAlreadyProjectManager') + .fetch(); + + const userIds = await sails.helpers.projects.getManagerAndBoardMemberUserIds( + projectManager.projectId, + ); + + userIds.forEach((userId) => { + sails.sockets.broadcast( + `user:${userId}`, + 'projectManagerCreate', + { + item: projectManager, + }, + inputs.request, + ); + }); + + return projectManager; + }, +}; diff --git a/server/api/helpers/project-managers/delete-one.js b/server/api/helpers/project-managers/delete-one.js new file mode 100644 index 00000000..1bfda99c --- /dev/null +++ b/server/api/helpers/project-managers/delete-one.js @@ -0,0 +1,34 @@ +module.exports = { + inputs: { + record: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + async fn(inputs) { + const userIds = await sails.helpers.projects.getManagerAndBoardMemberUserIds( + inputs.record.projectId, + ); + + const projectManager = await ProjectManager.destroyOne(inputs.record.id); + + if (projectManager) { + userIds.forEach((userId) => { + sails.sockets.broadcast( + `user:${userId}`, + 'projectManagerDelete', + { + item: projectManager, + }, + inputs.request, + ); + }); + } + + return projectManager; + }, +}; diff --git a/server/api/helpers/project-managers/get-many.js b/server/api/helpers/project-managers/get-many.js new file mode 100644 index 00000000..0f9b6f04 --- /dev/null +++ b/server/api/helpers/project-managers/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return ProjectManager.find(inputs.criteria).sort('id'); + }, +}; diff --git a/server/api/helpers/projects/create-one.js b/server/api/helpers/projects/create-one.js new file mode 100644 index 00000000..3887225a --- /dev/null +++ b/server/api/helpers/projects/create-one.js @@ -0,0 +1,38 @@ +module.exports = { + inputs: { + values: { + type: 'json', + required: true, + }, + user: { + type: 'ref', + required: true, + }, + request: { + type: 'ref', + }, + }, + + async fn(inputs) { + const project = await Project.create(inputs.values).fetch(); + + const projectManager = await ProjectManager.create({ + projectId: project.id, + userId: inputs.user.id, + }).fetch(); + + sails.sockets.broadcast( + `user:${projectManager.userId}`, + 'projectCreate', + { + item: project, + }, + inputs.request, + ); + + return { + project, + projectManager, + }; + }, +}; diff --git a/server/api/helpers/delete-project.js b/server/api/helpers/projects/delete-one.js similarity index 55% rename from server/api/helpers/delete-project.js rename to server/api/helpers/projects/delete-one.js index 5b236c95..39c832df 100644 --- a/server/api/helpers/delete-project.js +++ b/server/api/helpers/projects/delete-one.js @@ -9,18 +9,21 @@ module.exports = { }, }, - async fn(inputs, exits) { - const projectMemberships = await ProjectMembership.destroy({ + async fn(inputs) { + const projectManagers = await ProjectManager.destroy({ projectId: inputs.record.id, }).fetch(); const project = await Project.archiveOne(inputs.record.id); if (project) { - const userIds = sails.helpers.mapRecords(projectMemberships, 'userId'); + const managerUserIds = sails.helpers.utils.mapRecords(projectManagers, 'userId'); - const boards = await sails.helpers.getBoardsForProject(project.id); - const boardRooms = boards.map((board) => `board:${board.id}`); + const boardIds = await sails.helpers.projects.getBoardIds(project.id); + const boardRooms = boardIds.map((boardId) => `board:${boardId}`); + + const memberUserIds = await sails.helpers.boards.getMemberUserIds(boardIds); + const userIds = _.union(managerUserIds, memberUserIds); userIds.forEach((userId) => { sails.sockets.removeRoomMembersFromRooms(`user:${userId}`, boardRooms); @@ -36,6 +39,6 @@ module.exports = { }); } - return exits.success(project); + return project; }, }; diff --git a/server/api/helpers/projects/get-board-ids.js b/server/api/helpers/projects/get-board-ids.js new file mode 100644 index 00000000..70de411b --- /dev/null +++ b/server/api/helpers/projects/get-board-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const boards = await sails.helpers.projects.getBoards(inputs.idOrIds); + + return sails.helpers.utils.mapRecords(boards); + }, +}; diff --git a/server/api/helpers/projects/get-board-member-user-ids.js b/server/api/helpers/projects/get-board-member-user-ids.js new file mode 100644 index 00000000..3be02071 --- /dev/null +++ b/server/api/helpers/projects/get-board-member-user-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const boardIds = await sails.helpers.projects.getBoardIds(inputs.idOrIds); + + return sails.helpers.boards.getMemberUserIds(boardIds); + }, +}; diff --git a/server/api/helpers/projects/get-boards.js b/server/api/helpers/projects/get-boards.js new file mode 100644 index 00000000..641dfe87 --- /dev/null +++ b/server/api/helpers/projects/get-boards.js @@ -0,0 +1,27 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + exceptBoardIdOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + }, + }, + + async fn(inputs) { + const criteria = { + projectId: inputs.idOrIds, + }; + + if (!_.isUndefined(inputs.exceptBoardIdOrIds)) { + criteria.id = { + '!=': inputs.exceptBoardIdOrIds, + }; + } + + return sails.helpers.boards.getMany(criteria); + }, +}; diff --git a/server/api/helpers/projects/get-manager-and-board-member-user-ids.js b/server/api/helpers/projects/get-manager-and-board-member-user-ids.js new file mode 100644 index 00000000..86b207dd --- /dev/null +++ b/server/api/helpers/projects/get-manager-and-board-member-user-ids.js @@ -0,0 +1,16 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const managerUserIds = await sails.helpers.projects.getManagerUserIds(inputs.idOrIds); + const memberUserIds = await sails.helpers.projects.getBoardMemberUserIds(inputs.idOrIds); + + return _.union(managerUserIds, memberUserIds); + }, +}; diff --git a/server/api/helpers/projects/get-manager-user-ids.js b/server/api/helpers/projects/get-manager-user-ids.js new file mode 100644 index 00000000..46d7a3e8 --- /dev/null +++ b/server/api/helpers/projects/get-manager-user-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const projectManagers = await sails.helpers.projects.getProjectManagers(inputs.idOrIds); + + return sails.helpers.utils.mapRecords(projectManagers, 'userId', _.isArray(inputs.idOrIds)); + }, +}; diff --git a/server/api/helpers/projects/get-many.js b/server/api/helpers/projects/get-many.js new file mode 100644 index 00000000..be28e289 --- /dev/null +++ b/server/api/helpers/projects/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return Project.find(inputs.criteria).sort('id'); + }, +}; diff --git a/server/api/helpers/projects/get-project-managers.js b/server/api/helpers/projects/get-project-managers.js new file mode 100644 index 00000000..75cf93b1 --- /dev/null +++ b/server/api/helpers/projects/get-project-managers.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.projectManagers.getMany({ + projectId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/update-project.js b/server/api/helpers/projects/update-one.js similarity index 95% rename from server/api/helpers/update-project.js rename to server/api/helpers/projects/update-one.js index e34ffd93..9284a06f 100644 --- a/server/api/helpers/update-project.js +++ b/server/api/helpers/projects/update-one.js @@ -39,7 +39,7 @@ module.exports = { backgroundImageDirnameMustBeNotNullInValues: {}, }, - async fn(inputs, exits) { + async fn(inputs) { if (!_.isUndefined(inputs.values.backgroundImage)) { /* eslint-disable no-param-reassign */ inputs.values.backgroundImageDirname = null; @@ -101,7 +101,7 @@ module.exports = { } } - const userIds = await sails.helpers.getMembershipUserIdsForProject(project.id); + const userIds = await sails.helpers.projects.getManagerAndBoardMemberUserIds(project.id); userIds.forEach((userId) => { sails.sockets.broadcast( @@ -115,6 +115,6 @@ module.exports = { }); } - return exits.success(project); + return project; }, }; diff --git a/server/api/helpers/create-task.js b/server/api/helpers/tasks/create-one.js similarity index 88% rename from server/api/helpers/create-task.js rename to server/api/helpers/tasks/create-one.js index c50e08d3..9e3dcf35 100644 --- a/server/api/helpers/create-task.js +++ b/server/api/helpers/tasks/create-one.js @@ -1,19 +1,19 @@ module.exports = { inputs: { - card: { - type: 'ref', - required: true, - }, values: { type: 'json', required: true, }, + card: { + type: 'ref', + required: true, + }, request: { type: 'ref', }, }, - async fn(inputs, exits) { + async fn(inputs) { const task = await Task.create({ ...inputs.values, cardId: inputs.card.id, @@ -28,6 +28,6 @@ module.exports = { inputs.request, ); - return exits.success(task); + return task; }, }; diff --git a/server/api/helpers/delete-task.js b/server/api/helpers/tasks/delete-one.js similarity index 88% rename from server/api/helpers/delete-task.js rename to server/api/helpers/tasks/delete-one.js index 1b374013..f32e5a90 100644 --- a/server/api/helpers/delete-task.js +++ b/server/api/helpers/tasks/delete-one.js @@ -13,7 +13,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const task = await Task.archiveOne(inputs.record.id); if (task) { @@ -27,6 +27,6 @@ module.exports = { ); } - return exits.success(task); + return task; }, }; diff --git a/server/api/helpers/tasks/get-many.js b/server/api/helpers/tasks/get-many.js new file mode 100644 index 00000000..f7bcce0a --- /dev/null +++ b/server/api/helpers/tasks/get-many.js @@ -0,0 +1,12 @@ +module.exports = { + inputs: { + criteria: { + type: 'json', + custom: (value) => _.isArray(value) || _.isPlainObject(value), + }, + }, + + async fn(inputs) { + return Task.find(inputs.criteria).sort('id'); + }, +}; diff --git a/server/api/helpers/get-task-to-project-path.js b/server/api/helpers/tasks/get-project-path.js old mode 100755 new mode 100644 similarity index 74% rename from server/api/helpers/get-task-to-project-path.js rename to server/api/helpers/tasks/get-project-path.js index b3416bf3..5572ccdd --- a/server/api/helpers/get-task-to-project-path.js +++ b/server/api/helpers/tasks/get-project-path.js @@ -10,15 +10,15 @@ module.exports = { pathNotFound: {}, }, - async fn(inputs, exits) { + async fn(inputs) { const task = await Task.findOne(inputs.criteria); if (!task) { throw 'pathNotFound'; } - const path = await sails.helpers - .getCardToProjectPath(task.cardId) + const path = await sails.helpers.cards + .getProjectPath(task.cardId) .intercept('pathNotFound', (nodes) => ({ pathNotFound: { task, @@ -26,9 +26,9 @@ module.exports = { }, })); - return exits.success({ + return { task, ...path, - }); + }; }, }; diff --git a/server/api/helpers/update-task.js b/server/api/helpers/tasks/update-one.js similarity index 89% rename from server/api/helpers/update-task.js rename to server/api/helpers/tasks/update-one.js index d7cf653f..1c2bf27b 100644 --- a/server/api/helpers/update-task.js +++ b/server/api/helpers/tasks/update-one.js @@ -17,7 +17,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const task = await Task.updateOne(inputs.record.id).set(inputs.values); if (task) { @@ -31,6 +31,6 @@ module.exports = { ); } - return exits.success(task); + return task; }, }; diff --git a/server/api/helpers/update-notifications-for-user.js b/server/api/helpers/update-notifications-for-user.js deleted file mode 100644 index 8945824b..00000000 --- a/server/api/helpers/update-notifications-for-user.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = { - inputs: { - ids: { - type: 'json', - custom: (value) => _.isArray(value), - required: true, - }, - user: { - type: 'ref', - required: true, - }, - values: { - type: 'json', - required: true, - }, - request: { - type: 'ref', - }, - }, - - async fn(inputs, exits) { - const notifications = await Notification.update({ - id: inputs.ids, - userId: inputs.user.id, - }) - .set(inputs.values) - .fetch(); - - notifications.forEach((notification) => { - sails.sockets.broadcast( - `user:${notification.userId}`, - 'notificationUpdate', - { - item: notification, - }, - inputs.request, - ); - }); - - return exits.success(notifications); - }, -}; diff --git a/server/api/helpers/create-user.js b/server/api/helpers/users/create-one.js similarity index 88% rename from server/api/helpers/create-user.js rename to server/api/helpers/users/create-one.js index 364024fc..3094c705 100644 --- a/server/api/helpers/create-user.js +++ b/server/api/helpers/users/create-one.js @@ -35,7 +35,7 @@ module.exports = { usernameAlreadyInUse: {}, }, - async fn(inputs, exits) { + async fn(inputs) { if (inputs.values.username) { // eslint-disable-next-line no-param-reassign inputs.values.username = inputs.values.username.toLowerCase(); @@ -62,7 +62,10 @@ module.exports = { ) .fetch(); - const userIds = await sails.helpers.getAdminUserIds(); + // const userIds = await sails.helpers.users.getAdminIds(); + + const users = await sails.helpers.users.getMany(); + const userIds = sails.helpers.utils.mapRecords(users); userIds.forEach((userId) => { sails.sockets.broadcast( @@ -75,6 +78,6 @@ module.exports = { ); }); - return exits.success(user); + return user; }, }; diff --git a/server/api/helpers/delete-user.js b/server/api/helpers/users/delete-one.js similarity index 56% rename from server/api/helpers/delete-user.js rename to server/api/helpers/users/delete-one.js index 7113ebe6..3d855f98 100644 --- a/server/api/helpers/delete-user.js +++ b/server/api/helpers/users/delete-one.js @@ -9,8 +9,12 @@ module.exports = { }, }, - async fn(inputs, exits) { - await ProjectMembership.destroy({ + async fn(inputs) { + await ProjectManager.destroy({ + userId: inputs.record.id, + }); + + await BoardMembership.destroy({ userId: inputs.record.id, }); @@ -30,10 +34,16 @@ module.exports = { }); if (user) { - const adminUserIds = await sails.helpers.getAdminUserIds(); - const projectIds = await sails.helpers.getMembershipProjectIdsForUser(user.id); - const userIdsForProject = await sails.helpers.getMembershipUserIdsForProject(projectIds); - const userIds = _.union([user.id], adminUserIds, userIdsForProject); + /* const projectIds = await sails.helpers.users.getManagerProjectIds(user.id); + + const userIds = _.union( + [user.id], + await sails.helpers.users.getAdminIds(), + await sails.helpers.projects.getManagerAndBoardMemberUserIds(projectIds), + ); */ + + const users = await sails.helpers.users.getMany(); + const userIds = [inputs.record.id, ...sails.helpers.utils.mapRecords(users)]; userIds.forEach((userId) => { sails.sockets.broadcast( @@ -47,6 +57,6 @@ module.exports = { }); } - return exits.success(user); + return user; }, }; diff --git a/server/api/helpers/users/get-admin-ids.js b/server/api/helpers/users/get-admin-ids.js new file mode 100644 index 00000000..8070ea60 --- /dev/null +++ b/server/api/helpers/users/get-admin-ids.js @@ -0,0 +1,9 @@ +module.exports = { + async fn() { + const users = await sails.helpers.users.getMany({ + isAdmin: true, + }); + + return sails.helpers.utils.mapRecords(users); + }, +}; diff --git a/server/api/helpers/users/get-board-memberships.js b/server/api/helpers/users/get-board-memberships.js new file mode 100644 index 00000000..4cb23ff5 --- /dev/null +++ b/server/api/helpers/users/get-board-memberships.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.boardMemberships.getMany({ + userId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/users/get-manager-project-ids.js b/server/api/helpers/users/get-manager-project-ids.js new file mode 100644 index 00000000..efe62e57 --- /dev/null +++ b/server/api/helpers/users/get-manager-project-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const projectManagers = await sails.helpers.users.getProjectManagers(inputs.idOrIds); + + return sails.helpers.utils.mapRecords(projectManagers, 'projectId', _.isArray(inputs.idOrIds)); + }, +}; diff --git a/server/api/helpers/get-users.js b/server/api/helpers/users/get-many.js similarity index 81% rename from server/api/helpers/get-users.js rename to server/api/helpers/users/get-many.js index a9df777f..2afb12f6 100644 --- a/server/api/helpers/get-users.js +++ b/server/api/helpers/users/get-many.js @@ -10,7 +10,7 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const criteria = {}; if (_.isArray(inputs.criteria)) { @@ -23,8 +23,6 @@ module.exports = { criteria.deletedAt = null; } - const users = await User.find(criteria).sort('id'); - - return exits.success(users); + return User.find(criteria).sort('id'); }, }; diff --git a/server/api/helpers/users/get-membership-board-ids.js b/server/api/helpers/users/get-membership-board-ids.js new file mode 100644 index 00000000..46a30420 --- /dev/null +++ b/server/api/helpers/users/get-membership-board-ids.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + const boardMemberships = await sails.helpers.users.getBoardMemberships(inputs.idOrIds); + + return sails.helpers.utils.mapRecords(boardMemberships, 'boardId', _.isArray(inputs.idOrIds)); + }, +}; diff --git a/server/api/helpers/users/get-notifications.js b/server/api/helpers/users/get-notifications.js new file mode 100644 index 00000000..2ea49f48 --- /dev/null +++ b/server/api/helpers/users/get-notifications.js @@ -0,0 +1,16 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.notifications.getMany({ + isRead: false, + userId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/get-user-by-email-or-username.js b/server/api/helpers/users/get-one-by-email-or-username.js similarity index 71% rename from server/api/helpers/get-user-by-email-or-username.js rename to server/api/helpers/users/get-one-by-email-or-username.js index ef423f6e..824065d1 100644 --- a/server/api/helpers/get-user-by-email-or-username.js +++ b/server/api/helpers/users/get-one-by-email-or-username.js @@ -6,13 +6,11 @@ module.exports = { }, }, - async fn(inputs, exits) { + async fn(inputs) { const fieldName = inputs.emailOrUsername.includes('@') ? 'email' : 'username'; - const user = await sails.helpers.getUser({ + return sails.helpers.users.getOne({ [fieldName]: inputs.emailOrUsername.toLowerCase(), }); - - return exits.success(user); }, }; diff --git a/server/api/helpers/get-user.js b/server/api/helpers/users/get-one.js similarity index 61% rename from server/api/helpers/get-user.js rename to server/api/helpers/users/get-one.js index 1a0320e2..2287a4e4 100644 --- a/server/api/helpers/get-user.js +++ b/server/api/helpers/users/get-one.js @@ -5,12 +5,14 @@ module.exports = { custom: (value) => _.isString(value) || _.isPlainObject(value), required: true, }, + withDeleted: { + type: 'boolean', + defaultsTo: false, + }, }, - async fn(inputs, exits) { - const criteria = { - deletedAt: null, - }; + async fn(inputs) { + const criteria = {}; if (_.isString(inputs.criteria)) { criteria.id = inputs.criteria; @@ -18,8 +20,10 @@ module.exports = { Object.assign(criteria, inputs.criteria); } - const user = await User.findOne(criteria); + if (!inputs.withDeleted) { + criteria.deletedAt = null; + } - return exits.success(user); + return User.findOne(criteria); }, }; diff --git a/server/api/helpers/users/get-project-managers.js b/server/api/helpers/users/get-project-managers.js new file mode 100644 index 00000000..7e7f258f --- /dev/null +++ b/server/api/helpers/users/get-project-managers.js @@ -0,0 +1,15 @@ +module.exports = { + inputs: { + idOrIds: { + type: 'json', + custom: (value) => _.isString(value) || _.every(value, _.isString), + required: true, + }, + }, + + async fn(inputs) { + return sails.helpers.projectManagers.getMany({ + userId: inputs.idOrIds, + }); + }, +}; diff --git a/server/api/helpers/users/is-board-member.js b/server/api/helpers/users/is-board-member.js new file mode 100644 index 00000000..d720b9cc --- /dev/null +++ b/server/api/helpers/users/is-board-member.js @@ -0,0 +1,21 @@ +module.exports = { + inputs: { + id: { + type: 'string', + required: true, + }, + boardId: { + type: 'string', + required: true, + }, + }, + + async fn(inputs) { + const boardMembership = await BoardMembership.findOne({ + boardId: inputs.boardId, + userId: inputs.id, + }); + + return !!boardMembership; + }, +}; diff --git a/server/api/helpers/users/is-card-subscriber.js b/server/api/helpers/users/is-card-subscriber.js new file mode 100644 index 00000000..53c9f222 --- /dev/null +++ b/server/api/helpers/users/is-card-subscriber.js @@ -0,0 +1,21 @@ +module.exports = { + inputs: { + id: { + type: 'string', + required: true, + }, + cardId: { + type: 'string', + required: true, + }, + }, + + async fn(inputs) { + const cardSubscription = await CardSubscription.findOne({ + cardId: inputs.cardId, + userId: inputs.id, + }); + + return !!cardSubscription; + }, +}; diff --git a/server/api/helpers/users/is-project-manager.js b/server/api/helpers/users/is-project-manager.js new file mode 100644 index 00000000..2193a024 --- /dev/null +++ b/server/api/helpers/users/is-project-manager.js @@ -0,0 +1,21 @@ +module.exports = { + inputs: { + id: { + type: 'string', + required: true, + }, + projectId: { + type: 'string', + required: true, + }, + }, + + async fn(inputs) { + const projectManager = await ProjectManager.findOne({ + projectId: inputs.projectId, + userId: inputs.id, + }); + + return !!projectManager; + }, +}; diff --git a/server/api/helpers/update-user.js b/server/api/helpers/users/update-one.js similarity index 87% rename from server/api/helpers/update-user.js rename to server/api/helpers/users/update-one.js index 6e2eb83a..8ceb2d14 100644 --- a/server/api/helpers/update-user.js +++ b/server/api/helpers/users/update-one.js @@ -45,7 +45,7 @@ module.exports = { usernameAlreadyInUse: {}, }, - async fn(inputs, exits) { + async fn(inputs) { if (!_.isUndefined(inputs.values.email)) { // eslint-disable-next-line no-param-reassign inputs.values.email = inputs.values.email.toLowerCase(); @@ -104,10 +104,16 @@ module.exports = { } if (!isOnlyPasswordChange) { - const adminUserIds = await sails.helpers.getAdminUserIds(); - const projectIds = await sails.helpers.getMembershipProjectIdsForUser(user.id); - const userIdsForProject = await sails.helpers.getMembershipUserIdsForProject(projectIds); - const userIds = _.union([user.id], adminUserIds, userIdsForProject); + /* const projectIds = await sails.helpers.users.getManagerProjectIds(user.id); + + const userIds = _.union( + [user.id], + await sails.helpers.users.getAdminIds(), + await sails.helpers.projects.getManagerAndBoardMemberUserIds(projectIds), + ); */ + + const users = await sails.helpers.users.getMany(); + const userIds = sails.helpers.utils.mapRecords(users); userIds.forEach((userId) => { sails.sockets.broadcast( @@ -122,6 +128,6 @@ module.exports = { } } - return exits.success(user); + return user; }, }; diff --git a/server/api/helpers/create-attachment-receiver.js b/server/api/helpers/utils/create-attachment-receiver.js similarity index 97% rename from server/api/helpers/create-attachment-receiver.js rename to server/api/helpers/utils/create-attachment-receiver.js index 1bbb7d11..9420c1be 100644 --- a/server/api/helpers/create-attachment-receiver.js +++ b/server/api/helpers/utils/create-attachment-receiver.js @@ -12,7 +12,7 @@ const writeFile = util.promisify(fs.writeFile); module.exports = { sync: true, - fn(inputs, exits) { + fn() { const receiver = stream.Writable({ objectMode: true, }); @@ -93,6 +93,6 @@ module.exports = { } }; - return exits.success(receiver); + return receiver; }, }; diff --git a/server/api/helpers/create-project-background-image-receiver.js b/server/api/helpers/utils/create-project-background-image-receiver.js similarity index 87% rename from server/api/helpers/create-project-background-image-receiver.js rename to server/api/helpers/utils/create-project-background-image-receiver.js index 3549f6af..9535c443 100644 --- a/server/api/helpers/create-project-background-image-receiver.js +++ b/server/api/helpers/utils/create-project-background-image-receiver.js @@ -11,7 +11,7 @@ const writeFile = util.promisify(fs.writeFile); module.exports = { sync: true, - fn(inputs, exits) { + fn() { const receiver = stream.Writable({ objectMode: true, }); @@ -31,12 +31,7 @@ module.exports = { ); try { - const originalBuffer = await sharp(buffer) - .jpeg({ - quality: 100, - chromaSubsampling: '4:4:4', - }) - .toBuffer(); + const originalBuffer = await sharp(buffer).jpeg().toBuffer(); const cover336Buffer = await sharp(buffer) .resize(336, 200) @@ -65,6 +60,6 @@ module.exports = { } }; - return exits.success(receiver); + return receiver; }, }; diff --git a/server/api/helpers/create-user-avatar-receiver.js b/server/api/helpers/utils/create-user-avatar-receiver.js similarity index 96% rename from server/api/helpers/create-user-avatar-receiver.js rename to server/api/helpers/utils/create-user-avatar-receiver.js index 52647198..82a4968c 100644 --- a/server/api/helpers/create-user-avatar-receiver.js +++ b/server/api/helpers/utils/create-user-avatar-receiver.js @@ -11,7 +11,7 @@ const writeFile = util.promisify(fs.writeFile); module.exports = { sync: true, - fn(inputs, exits) { + fn() { const receiver = stream.Writable({ objectMode: true, }); @@ -65,6 +65,6 @@ module.exports = { } }; - return exits.success(receiver); + return receiver; }, }; diff --git a/server/api/helpers/insert-to-positionables.js b/server/api/helpers/utils/insert-to-positionables.js similarity index 97% rename from server/api/helpers/insert-to-positionables.js rename to server/api/helpers/utils/insert-to-positionables.js index 581dd1f0..dfa9c3ce 100755 --- a/server/api/helpers/insert-to-positionables.js +++ b/server/api/helpers/utils/insert-to-positionables.js @@ -86,7 +86,7 @@ module.exports = { }, }, - fn(inputs, exits) { + fn(inputs) { const lowers = []; const uppers = []; @@ -117,9 +117,9 @@ module.exports = { }); }); - return exits.success({ + return { position, repositions, - }); + }; }, }; diff --git a/server/api/helpers/map-records.js b/server/api/helpers/utils/map-records.js similarity index 88% rename from server/api/helpers/map-records.js rename to server/api/helpers/utils/map-records.js index 25aea0e0..5a96605d 100644 --- a/server/api/helpers/map-records.js +++ b/server/api/helpers/utils/map-records.js @@ -17,12 +17,12 @@ module.exports = { }, }, - fn(inputs, exits) { + fn(inputs) { let result = _.map(inputs.records, inputs.attribute); if (inputs.unique) { result = _.uniq(result); } - return exits.success(result); + return result; }, }; diff --git a/server/api/helpers/sign-token.js b/server/api/helpers/utils/sign-token.js old mode 100755 new mode 100644 similarity index 55% rename from server/api/helpers/sign-token.js rename to server/api/helpers/utils/sign-token.js index 456fd071..90fc792d --- a/server/api/helpers/sign-token.js +++ b/server/api/helpers/utils/sign-token.js @@ -10,9 +10,7 @@ module.exports = { }, }, - fn(inputs, exits) { - const token = jwt.sign(inputs.payload, sails.config.session.secret); - - return exits.success(token); + fn(inputs) { + return jwt.sign(inputs.payload, sails.config.session.secret); }, }; diff --git a/server/api/helpers/verify-token.js b/server/api/helpers/utils/verify-token.js old mode 100755 new mode 100644 similarity index 64% rename from server/api/helpers/verify-token.js rename to server/api/helpers/utils/verify-token.js index 61285fb4..a7d71bb9 --- a/server/api/helpers/verify-token.js +++ b/server/api/helpers/utils/verify-token.js @@ -14,15 +14,11 @@ module.exports = { invalidToken: {}, }, - fn(inputs, exits) { - let payload; - + fn(inputs) { try { - payload = jwt.verify(inputs.token, sails.config.session.secret); + return jwt.verify(inputs.token, sails.config.session.secret); } catch (error) { throw 'invalidToken'; } - - return exits.success(payload); }, }; diff --git a/server/api/hooks/current-user/index.js b/server/api/hooks/current-user/index.js index 4fca82b9..a0913a66 100644 --- a/server/api/hooks/current-user/index.js +++ b/server/api/hooks/current-user/index.js @@ -13,12 +13,12 @@ module.exports = function defineCurrentUserHook(sails) { let id; try { - id = sails.helpers.verifyToken(accessToken); + id = sails.helpers.utils.verifyToken(accessToken); } catch (error) { return null; } - return sails.helpers.getUser(id); + return sails.helpers.users.getOne(id); }; return { diff --git a/server/api/models/Action.js b/server/api/models/Action.js index fac25cd3..9aedbd18 100755 --- a/server/api/models/Action.js +++ b/server/api/models/Action.js @@ -5,10 +5,14 @@ * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models */ -const TYPES = ['createCard', 'moveCard', 'commentCard']; +const Types = { + CREATE_CARD: 'createCard', + MOVE_CARD: 'moveCard', + COMMENT_CARD: 'commentCard', +}; module.exports = { - TYPES, + Types, attributes: { // ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗ @@ -17,7 +21,7 @@ module.exports = { type: { type: 'string', - isIn: TYPES, + isIn: Object.values(Types), required: true, }, data: { diff --git a/server/api/models/Attachment.js b/server/api/models/Attachment.js index b7f39677..dd1b649a 100644 --- a/server/api/models/Attachment.js +++ b/server/api/models/Attachment.js @@ -42,10 +42,10 @@ module.exports = { required: true, columnName: 'card_id', }, - userId: { + creatorUserId: { model: 'User', required: true, - columnName: 'user_id', + columnName: 'creator_user_id', }, }, diff --git a/server/api/models/Board.js b/server/api/models/Board.js index e48edccc..9ad16c50 100755 --- a/server/api/models/Board.js +++ b/server/api/models/Board.js @@ -5,10 +5,13 @@ * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models */ -const TYPES = ['kanban', 'collection']; +const Types = { + KANBAN: 'kanban', + COLLECTION: 'collection', +}; module.exports = { - TYPES, + Types, attributes: { // ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗ @@ -17,7 +20,7 @@ module.exports = { type: { type: 'string', - isIn: TYPES, + isIn: Object.values(Types), required: true, }, position: { @@ -42,6 +45,11 @@ module.exports = { required: true, columnName: 'project_id', }, + memberUsers: { + collection: 'User', + via: 'boardId', + through: 'BoardMembership', + }, lists: { collection: 'List', via: 'boardId', diff --git a/server/api/models/BoardMembership.js b/server/api/models/BoardMembership.js new file mode 100644 index 00000000..733ffb26 --- /dev/null +++ b/server/api/models/BoardMembership.js @@ -0,0 +1,35 @@ +/** + * BoardMembership.js + * + * @description :: A model definition represents a database table/collection. + * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models + */ + +module.exports = { + attributes: { + // ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗ + // ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗ + // ╩ ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝ + + // ╔═╗╔╦╗╔╗ ╔═╗╔╦╗╔═╗ + // ║╣ ║║║╠╩╗║╣ ║║╚═╗ + // ╚═╝╩ ╩╚═╝╚═╝═╩╝╚═╝ + + // ╔═╗╔═╗╔═╗╔═╗╔═╗╦╔═╗╔╦╗╦╔═╗╔╗╔╔═╗ + // ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗ + // ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝ + + boardId: { + model: 'Board', + required: true, + columnName: 'board_id', + }, + userId: { + model: 'User', + required: true, + columnName: 'user_id', + }, + }, + + tableName: 'board_membership', +}; diff --git a/server/api/models/Card.js b/server/api/models/Card.js index 6ec9ba3a..d32516b8 100755 --- a/server/api/models/Card.js +++ b/server/api/models/Card.js @@ -49,6 +49,10 @@ module.exports = { model: 'List', columnName: 'list_id', }, + creatorUserId: { + model: 'User', + columnName: 'creator_user_id', + }, coverAttachmentId: { model: 'Attachment', columnName: 'cover_attachment_id', @@ -58,7 +62,7 @@ module.exports = { via: 'cardId', through: 'CardSubscription', }, - membershipUsers: { + memberUsers: { collection: 'User', via: 'cardId', through: 'CardMembership', diff --git a/server/api/models/Project.js b/server/api/models/Project.js index ff12e0a1..107c7955 100755 --- a/server/api/models/Project.js +++ b/server/api/models/Project.js @@ -5,7 +5,10 @@ * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models */ -const BACKGROUND_TYPES = ['gradient', 'image']; +const BackgroundTypes = { + GRADIENT: 'gradient', + IMAGE: 'image', +}; const BACKGROUND_GRADIENTS = [ 'old-lime', @@ -36,7 +39,7 @@ const BACKGROUND_GRADIENTS = [ ]; module.exports = { - BACKGROUND_TYPES, + BackgroundTypes, BACKGROUND_GRADIENTS, attributes: { @@ -66,10 +69,10 @@ module.exports = { // ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗ // ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝ - membershipUsers: { + managerUsers: { collection: 'User', via: 'projectId', - through: 'ProjectMembership', + through: 'ProjectManager', }, boards: { collection: 'Board', diff --git a/server/api/models/ProjectMembership.js b/server/api/models/ProjectManager.js old mode 100755 new mode 100644 similarity index 94% rename from server/api/models/ProjectMembership.js rename to server/api/models/ProjectManager.js index 5bd1b647..ad4770fd --- a/server/api/models/ProjectMembership.js +++ b/server/api/models/ProjectManager.js @@ -1,5 +1,5 @@ /** - * ProjectMembership.js + * ProjectManager.js * * @description :: A model definition represents a database table/collection. * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models @@ -31,5 +31,5 @@ module.exports = { }, }, - tableName: 'project_membership', + tableName: 'project_manager', }; diff --git a/server/api/models/User.js b/server/api/models/User.js index 45213ec8..3d235e65 100755 --- a/server/api/models/User.js +++ b/server/api/models/User.js @@ -71,10 +71,15 @@ module.exports = { // ╠═╣╚═╗╚═╗║ ║║ ║╠═╣ ║ ║║ ║║║║╚═╗ // ╩ ╩╚═╝╚═╝╚═╝╚═╝╩╩ ╩ ╩ ╩╚═╝╝╚╝╚═╝ - membershipProjects: { + managerProjects: { collection: 'Project', via: 'userId', - through: 'ProjectMembership', + through: 'ProjectManager', + }, + membershipBoards: { + collection: 'Board', + via: 'userId', + through: 'BoardMembership', }, subscriptionCards: { collection: 'Card', diff --git a/server/config/policies.js b/server/config/policies.js index 95e983b1..9a329aa4 100644 --- a/server/config/policies.js +++ b/server/config/policies.js @@ -18,21 +18,21 @@ module.exports.policies = { '*': 'is-authenticated', - 'users/index': ['is-authenticated', 'is-admin'], + // 'users/index': ['is-authenticated', 'is-admin'], 'users/create': ['is-authenticated', 'is-admin'], 'users/delete': ['is-authenticated', 'is-admin'], 'projects/create': ['is-authenticated', 'is-admin'], - 'projects/update': ['is-authenticated', 'is-admin'], - 'projects/update-background-image': ['is-authenticated', 'is-admin'], - 'projects/delete': ['is-authenticated', 'is-admin'], + // 'projects/update': ['is-authenticated', 'is-admin'], + // 'projects/update-background-image': ['is-authenticated', 'is-admin'], + // 'projects/delete': ['is-authenticated', 'is-admin'], - 'project-memberships/create': ['is-authenticated', 'is-admin'], - 'project-memberships/delete': ['is-authenticated', 'is-admin'], + // 'project-memberships/create': ['is-authenticated', 'is-admin'], + // 'project-memberships/delete': ['is-authenticated', 'is-admin'], - 'boards/create': ['is-authenticated', 'is-admin'], - 'boards/update': ['is-authenticated', 'is-admin'], - 'boards/delete': ['is-authenticated', 'is-admin'], + // 'boards/create': ['is-authenticated', 'is-admin'], + // 'boards/update': ['is-authenticated', 'is-admin'], + // 'boards/delete': ['is-authenticated', 'is-admin'], 'access-tokens/create': true, }; diff --git a/server/config/routes.js b/server/config/routes.js index 807ff5a2..922251f8 100644 --- a/server/config/routes.js +++ b/server/config/routes.js @@ -13,7 +13,7 @@ module.exports.routes = { 'GET /api/users': 'users/index', 'POST /api/users': 'users/create', - 'GET /api/users/me': 'users/show', + 'GET /api/users/:id': 'users/show', 'PATCH /api/users/:id': 'users/update', 'PATCH /api/users/:id/email': 'users/update-email', 'PATCH /api/users/:id/password': 'users/update-password', @@ -23,18 +23,22 @@ module.exports.routes = { 'GET /api/projects': 'projects/index', 'POST /api/projects': 'projects/create', + 'GET /api/projects/:id': 'projects/show', 'PATCH /api/projects/:id': 'projects/update', 'POST /api/projects/:id/background-image': 'projects/update-background-image', 'DELETE /api/projects/:id': 'projects/delete', - 'POST /api/projects/:projectId/memberships': 'project-memberships/create', - 'DELETE /api/project-memberships/:id': 'project-memberships/delete', + 'POST /api/projects/:projectId/managers': 'project-managers/create', + 'DELETE /api/project-managers/:id': 'project-managers/delete', 'POST /api/projects/:projectId/boards': 'boards/create', 'GET /api/boards/:id': 'boards/show', 'PATCH /api/boards/:id': 'boards/update', 'DELETE /api/boards/:id': 'boards/delete', + 'POST /api/boards/:boardId/memberships': 'board-memberships/create', + 'DELETE /api/board-memberships/:id': 'board-memberships/delete', + 'POST /api/boards/:boardId/labels': 'labels/create', 'PATCH /api/labels/:id': 'labels/update', 'DELETE /api/labels/:id': 'labels/delete', @@ -68,6 +72,7 @@ module.exports.routes = { 'DELETE /api/comment-actions/:id': 'comment-actions/delete', 'GET /api/notifications': 'notifications/index', + 'GET /api/notifications/:id': 'notifications/show', 'PATCH /api/notifications/:ids': 'notifications/update', 'GET /*': { diff --git a/server/db/migrations/20180721020022_create_next_id_function.js b/server/db/migrations/20180721020022_create_next_id_function.js index 649663d2..fe0319fb 100644 --- a/server/db/migrations/20180721020022_create_next_id_function.js +++ b/server/db/migrations/20180721020022_create_next_id_function.js @@ -1,18 +1,15 @@ module.exports.up = (knex) => knex.raw(` CREATE SEQUENCE next_id_seq; - CREATE FUNCTION next_id(OUT id BIGINT) AS $$ DECLARE shard INT := 1; epoch BIGINT := 1567191600000; - sequence BIGINT; milliseconds BIGINT; BEGIN SELECT nextval('next_id_seq') % 1024 INTO sequence; SELECT FLOOR(EXTRACT(EPOCH FROM clock_timestamp()) * 1000) INTO milliseconds; - id := (milliseconds - epoch) << 23; id := id | (shard << 10); id := id | (sequence); diff --git a/server/db/migrations/20180721234154_create_project_membership_table.js b/server/db/migrations/20180721234154_create_project_manager_table.js similarity index 88% rename from server/db/migrations/20180721234154_create_project_membership_table.js rename to server/db/migrations/20180721234154_create_project_manager_table.js index 23278319..b975742a 100755 --- a/server/db/migrations/20180721234154_create_project_membership_table.js +++ b/server/db/migrations/20180721234154_create_project_manager_table.js @@ -1,5 +1,5 @@ module.exports.up = (knex) => - knex.schema.createTable('project_membership', (table) => { + knex.schema.createTable('project_manager', (table) => { /* Columns */ table.bigInteger('id').primary().defaultTo(knex.raw('next_id()')); diff --git a/server/db/migrations/20180722001747_create_board_membership_table.js b/server/db/migrations/20180722001747_create_board_membership_table.js new file mode 100755 index 00000000..dcc928b2 --- /dev/null +++ b/server/db/migrations/20180722001747_create_board_membership_table.js @@ -0,0 +1,19 @@ +module.exports.up = (knex) => + knex.schema.createTable('board_membership', (table) => { + /* Columns */ + + table.bigInteger('id').primary().defaultTo(knex.raw('next_id()')); + + table.bigInteger('board_id').notNullable(); + table.bigInteger('user_id').notNullable(); + + table.timestamp('created_at', true); + table.timestamp('updated_at', true); + + /* Indexes */ + + table.unique(['board_id', 'user_id']); + table.index('user_id'); + }); + +module.exports.down = (knex) => knex.schema.dropTable('board_membership'); diff --git a/server/db/migrations/20180722003614_create_card_table.js b/server/db/migrations/20180722003614_create_card_table.js index 68601852..8baf61fd 100755 --- a/server/db/migrations/20180722003614_create_card_table.js +++ b/server/db/migrations/20180722003614_create_card_table.js @@ -6,6 +6,7 @@ module.exports.up = (knex) => table.bigInteger('board_id').notNullable(); table.bigInteger('list_id'); + table.bigInteger('creator_user_id').notNullable(); table.bigInteger('cover_attachment_id'); table.specificType('position', 'double precision'); diff --git a/server/db/migrations/20180722006688_create_attachment_table.js b/server/db/migrations/20180722006688_create_attachment_table.js index 301ca0b9..f6b6a99d 100755 --- a/server/db/migrations/20180722006688_create_attachment_table.js +++ b/server/db/migrations/20180722006688_create_attachment_table.js @@ -5,7 +5,7 @@ module.exports.up = (knex) => table.bigInteger('id').primary().defaultTo(knex.raw('next_id()')); table.bigInteger('card_id').notNullable(); - table.bigInteger('user_id').notNullable(); + table.bigInteger('creator_user_id').notNullable(); table.text('dirname').notNullable(); table.text('filename').notNullable(); diff --git a/server/package-lock.json b/server/package-lock.json index 22faeccc..5c1e01d3 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -6,34 +6,34 @@ "": { "name": "planka-server", "dependencies": { - "bcrypt": "^5.0.0", - "dotenv": "^8.2.0", + "bcrypt": "^5.0.1", + "dotenv": "^10.0.0", "dotenv-cli": "^4.0.0", - "filenamify": "^4.2.0", + "filenamify": "^4.3.0", "jsonwebtoken": "^8.5.1", - "knex": "^0.21.17", - "lodash": "^4.17.20", + "knex": "^0.95.6", + "lodash": "^4.17.21", "moment": "^2.29.1", "rimraf": "^3.0.2", - "sails": "^1.4.0", - "sails-hook-orm": "^3.0.1", - "sails-hook-sockets": "^2.0.0", + "sails": "^1.4.3", + "sails-hook-orm": "^3.0.2", + "sails-hook-sockets": "^2.0.1", "sails-postgresql-redacted": "^1.0.2-9", - "sharp": "^0.26.3", + "sharp": "^0.28.3", "stream-to-array": "^2.3.0", "uuid": "^8.3.2", - "validator": "^13.5.2" + "validator": "^13.6.0" }, "devDependencies": { - "chai": "^4.3.0", - "eslint": "^7.19.0", - "eslint-config-airbnb-base": "^14.2.1", - "eslint-config-prettier": "^7.2.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-prettier": "^3.3.1", - "mocha": "^8.2.1", - "nodemon": "^2.0.7", - "prettier": "2.2.1", + "chai": "^4.3.4", + "eslint": "^7.29.0", + "eslint-config-airbnb-base": "^14.2.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-prettier": "^3.4.0", + "mocha": "^9.0.1", + "nodemon": "^2.0.4", + "prettier": "2.3.1", "supertest": "^6.1.3" }, "engines": { @@ -50,20 +50,26 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/highlight/node_modules/ansi-styles": { @@ -138,15 +144,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -157,37 +163,13 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz", - "integrity": "sha512-CUBdThIZMoLEQQxACwhLsPg/puxBca0abTH3ixuvBQkhjJ80Hdp99jmVjxFCOa52/tZqN9d70IbGUf+OuKDHGA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", + "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==", "dependencies": { "detect-libc": "^1.0.3", - "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", "make-dir": "^3.1.0", "node-fetch": "^2.6.1", "nopt": "^5.0.0", @@ -226,14 +208,6 @@ "node": ">=6" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "engines": { - "node": ">= 6" - } - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -425,9 +399,9 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { "normalize-path": "^3.0.0", @@ -461,9 +435,12 @@ } }, "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dependencies": { + "arr-flatten": "^1.0.1" + }, "engines": { "node": ">=0.10.0" } @@ -476,22 +453,6 @@ "node": ">=0.10.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -516,18 +477,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "engines": { "node": ">=0.10.0" } @@ -563,14 +516,6 @@ "node": "*" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -588,28 +533,12 @@ "lodash": "^4.14.0" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -625,42 +554,14 @@ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", "engines": { "node": ">= 0.6.0" } @@ -685,11 +586,11 @@ ] }, "node_modules/base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "engines": { - "node": ">= 0.4.0" + "node": "^4.5.0 || >= 5.9" } }, "node_modules/bcrypt": { @@ -705,17 +606,6 @@ "node": ">= 10.0.0" } }, - "node_modules/better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dependencies": { - "callsite": "1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -910,42 +800,15 @@ } }, "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/browser-stdout": { @@ -998,25 +861,6 @@ "node": ">= 0.8" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -1072,14 +916,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "engines": { - "node": "*" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1193,9 +1029,9 @@ } }, "node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -1238,51 +1074,6 @@ "fsevents": "~2.3.1" } }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -1297,96 +1088,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -1465,18 +1166,6 @@ "node": ">=0.10.0" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", @@ -1551,11 +1240,11 @@ } }, "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "engines": { - "node": ">= 6" + "node": ">= 10" } }, "node_modules/common-js-file-extensions": { @@ -1684,15 +1373,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -1764,19 +1444,11 @@ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", "hasInstallScript": true }, "node_modules/core-util-is": { @@ -1882,26 +1554,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "dependencies": { - "mimic-response": "^3.1.0" + "mimic-response": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/deep-eql": { @@ -1953,18 +1614,6 @@ "node": ">= 0.4" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1993,9 +1642,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "dependencies": { + "fs-exists-sync": "^0.1.0" + }, "engines": { "node": ">=0.10.0" } @@ -2045,11 +1697,11 @@ } }, "node_modules/dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/dotenv-cli": { @@ -2066,6 +1718,14 @@ "dotenv": "cli.js" } }, + "node_modules/dotenv-cli/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, "node_modules/dotenv-expand": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", @@ -2137,41 +1797,39 @@ } }, "node_modules/engine.io": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", - "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz", + "integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==", "dependencies": { "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~6.1.0" + "base64id": "2.0.0", + "cookie": "~0.4.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "~7.4.2" + }, + "engines": { + "node": ">=8.0.0" } }, "node_modules/engine.io-client": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", - "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", "dependencies": { - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "component-inherit": "0.0.3", "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "engine.io-parser": "~2.2.0", "has-cors": "1.1.0", "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" } }, - "node_modules/engine.io-client/node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, "node_modules/engine.io-client/node_modules/debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -2186,38 +1844,34 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", "dependencies": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", + "base64-arraybuffer": "0.1.4", "blob": "0.0.5", "has-binary2": "~1.0.2" } }, "node_modules/engine.io/node_modules/cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", "engines": { "node": ">= 0.6" } }, "node_modules/engine.io/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "node_modules/engine.io/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -2240,9 +1894,9 @@ } }, "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -2253,14 +1907,14 @@ "has-symbols": "^1.0.2", "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -2290,7 +1944,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, "engines": { "node": ">=6" } @@ -2322,28 +1975,30 @@ } }, "node_modules/eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "dev": true, "dependencies": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", + "@eslint/eslintrc": "^0.4.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -2352,7 +2007,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -2361,7 +2016,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -2394,9 +2049,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -2431,12 +2086,12 @@ "dev": true }, "node_modules/eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", + "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", "dev": true, "dependencies": { - "debug": "^2.6.9", + "debug": "^3.2.7", "pkg-dir": "^2.0.0" }, "engines": { @@ -2444,38 +2099,34 @@ } }, "node_modules/eslint-module-utils/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "node_modules/eslint-module-utils/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "node_modules/eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "version": "2.23.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", + "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", "dev": true, "dependencies": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", "debug": "^2.6.9", - "doctrine": "1.5.0", + "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", + "eslint-module-utils": "^2.6.1", + "find-up": "^2.0.0", "has": "^1.0.3", + "is-core-module": "^2.4.0", "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", + "object.values": "^1.1.3", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", "tsconfig-paths": "^3.9.0" }, "engines": { @@ -2495,13 +2146,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" @@ -2514,9 +2164,9 @@ "dev": true }, "node_modules/eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" @@ -2572,9 +2222,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { "node": ">=10" @@ -2693,130 +2343,16 @@ } }, "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "is-posix-bracket": "^0.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", @@ -2854,28 +2390,6 @@ "node": ">=0.10.0" } }, - "node_modules/expand-range/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -2885,11 +2399,11 @@ } }, "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "dependencies": { - "homedir-polyfill": "^1.0.1" + "os-homedir": "^1.0.1" }, "engines": { "node": ">=0.10.0" @@ -3064,62 +2578,21 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "is-extglob": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/define-property": { + "node_modules/extglob/node_modules/is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "engines": { "node": ">=0.10.0" } @@ -3199,9 +2672,9 @@ } }, "node_modules/filenamify": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.2.0.tgz", - "integrity": "sha512-pkgE+4p7N1n7QieOopmn3TqJaefjdWXwEkj2XLZJLKfOgcQKkn11ahvGNgTD8mLggexLiDFQxeTs14xVU22XPA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dependencies": { "filename-reserved-regex": "^2.0.0", "strip-outer": "^1.0.1", @@ -3215,36 +2688,15 @@ } }, "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/finalhandler": { @@ -3286,56 +2738,56 @@ } }, "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "locate-path": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" + "detect-file": "^0.1.0", + "is-glob": "^2.0.1", + "micromatch": "^2.3.7", + "resolve-dir": "^0.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8.0" } }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "node_modules/findup-sync/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/findup-sync/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "is-extglob": "^1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=0.10.0" } }, "node_modules/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", "engines": { - "node": ">= 0.10" + "node": ">= 0.8.0" } }, "node_modules/flat": { @@ -3383,9 +2835,9 @@ } }, "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dependencies": { "for-in": "^1.0.1" }, @@ -3417,24 +2869,13 @@ } }, "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { "node": ">= 0.6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -3606,14 +3047,6 @@ "node": ">=6" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/getopts": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", @@ -3625,9 +3058,9 @@ "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" }, "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3716,28 +3149,26 @@ "dev": true }, "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", + "homedir-polyfill": "^1.0.0", "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "is-windows": "^0.2.0", + "which": "^1.2.12" }, "engines": { "node": ">=0.10.0" @@ -3755,9 +3186,9 @@ } }, "node_modules/globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3914,42 +3345,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -3980,9 +3375,9 @@ } }, "node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "node_modules/http-cache-semantics": { @@ -4006,12 +3401,11 @@ "node": ">= 0.6" } }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "dependencies": { - "@tootallnate/once": "1", "agent-base": "6", "debug": "4" }, @@ -4193,29 +3587,6 @@ "node": ">= 0.10" } }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4223,9 +3594,9 @@ "dev": true }, "node_modules/is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4244,12 +3615,12 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", "dev": true, "dependencies": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4288,9 +3659,9 @@ } }, "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dependencies": { "has": "^1.0.3" }, @@ -4298,21 +3669,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true, "engines": { "node": ">= 0.4" @@ -4321,19 +3681,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -4354,12 +3701,9 @@ } }, "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dependencies": { - "is-plain-object": "^2.0.4" - }, + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "engines": { "node": ">=0.10.0" } @@ -4368,6 +3712,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -4387,6 +3732,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -4432,20 +3778,18 @@ } }, "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dependencies": { - "kind-of": "^3.0.2" - }, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", "dev": true, "engines": { "node": ">= 0.4" @@ -4454,17 +3798,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -4492,17 +3825,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -4520,13 +3842,13 @@ } }, "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4535,21 +3857,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", "dev": true, "engines": { "node": ">= 0.4" @@ -4559,12 +3870,12 @@ } }, "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -4579,21 +3890,22 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", "engines": { "node": ">=0.10.0" } @@ -4623,9 +3935,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dependencies": { + "isarray": "1.0.0" + }, "engines": { "node": ">=0.10.0" } @@ -4660,6 +3975,12 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -4750,9 +4071,12 @@ } }, "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { "node": ">=0.10.0" } @@ -4766,22 +4090,23 @@ } }, "node_modules/knex": { - "version": "0.21.19", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.21.19.tgz", - "integrity": "sha512-6etvrq9XI1Ck6mEc/XiXFGVpD1Lmj6v9XWojqZgEbOvyMbW7XRvgZ99yIhN/kaBH+43FEy3xv/AcbRaH+1pJtw==", + "version": "0.95.6", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.6.tgz", + "integrity": "sha512-noRcmkJl1MdicUbezrcr8OtVLcqQ/cfLIwgAx5EaxNxQOIJff88rBeyLywUScGhQNd/b78DIKKXZzLMrm6h/cw==", "dependencies": { "colorette": "1.2.1", - "commander": "^6.2.0", + "commander": "^7.1.0", "debug": "4.3.1", + "escalade": "^3.1.1", "esm": "^3.2.25", "getopts": "2.2.5", "interpret": "^2.2.0", - "liftoff": "3.1.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "pg-connection-string": "2.4.0", + "rechoir": "^0.7.0", + "resolve-from": "^5.0.0", "tarn": "^3.0.1", - "tildify": "2.0.0", - "v8flags": "^3.2.0" + "tildify": "2.0.0" }, "bin": { "knex": "bin/cli.js" @@ -4789,17 +4114,7 @@ "engines": { "node": ">=10" }, - "peerDependencies": { - "mssql": "^6.2.1", - "mysql": "^2.18.1", - "mysql2": "^2.1.0", - "pg": "^8.3.0", - "sqlite3": "^5.0.0" - }, "peerDependenciesMeta": { - "mssql": { - "optional": true - }, "mysql": { "optional": true }, @@ -4811,9 +4126,20 @@ }, "sqlite3": { "optional": true + }, + "tedious": { + "optional": true } } }, + "node_modules/knex/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, "node_modules/latest-version": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", @@ -4848,16 +4174,13 @@ } }, "node_modules/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.5.tgz", + "integrity": "sha1-mYwods/0hLED5EI7k9NW2kRzTJE=", "dependencies": { "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", + "findup-sync": "^0.4.2", + "flagged-respawn": "^0.3.2", "rechoir": "^0.6.2", "resolve": "^1.1.7" }, @@ -4865,15 +4188,26 @@ "node": ">= 0.8" } }, + "node_modules/liftoff/node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" }, "engines": { @@ -4889,18 +4223,16 @@ } }, "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/lodash": { @@ -4908,6 +4240,12 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -4943,21 +4281,37 @@ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, "node_modules/log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "dependencies": { - "chalk": "^4.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lowercase-keys": { @@ -5040,9 +4394,9 @@ } }, "node_modules/machinepack-redis": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/machinepack-redis/-/machinepack-redis-2.0.5.tgz", - "integrity": "sha512-K+5j93jaeFKKhtGc0VDVaW/42luxbVnN/XueLfXdJhFam+dMm+06iNzVC0xexZwx+MRfnpWiMOT2TncC+Vi07g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/machinepack-redis/-/machinepack-redis-2.0.6.tgz", + "integrity": "sha512-Vb5B7o04Z/C+TdS78nBnJH+mMtSAZYDjsIIYXoIUINGLo006qxlYLr4+4SbpJSHY6SVZ+Yzxyfwlxp5/SxWVtQ==", "dependencies": { "@sailshq/lodash": "^3.10.2", "async": "2.0.1", @@ -5093,17 +4447,6 @@ "semver": "bin/semver.js" } }, - "node_modules/make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -5112,25 +4455,6 @@ "tmpl": "1.0.x" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/math-random": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", @@ -5174,23 +4498,66 @@ } }, "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dependencies": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dependencies": { + "remove-trailing-separator": "^1.0.1" }, "engines": { "node": ">=0.10.0" @@ -5208,30 +4575,30 @@ } }, "node_modules/mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", "dependencies": { - "mime-db": "1.46.0" + "mime-db": "1.48.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5276,18 +4643,6 @@ "node": ">= 8" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -5305,9 +4660,9 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "node_modules/mocha": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", - "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.0.1.tgz", + "integrity": "sha512-9zwsavlRO+5csZu6iRtl3GHImAbhERoDsZwdRkdJ/bE+eVplmoxNKE901ZJ9LdSchYBjSCPbjKc5XvcAri2ylw==", "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", @@ -5318,20 +4673,20 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.6", + "glob": "7.1.7", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.1.20", + "nanoid": "3.1.23", "serialize-javascript": "5.0.1", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.1.0", + "workerpool": "6.1.4", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -5341,7 +4696,7 @@ "mocha": "bin/mocha" }, "engines": { - "node": ">= 10.12.0" + "node": ">= 12.0.0" }, "funding": { "type": "opencollective", @@ -5354,10 +4709,26 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mocha/node_modules/js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { "argparse": "^2.0.1" @@ -5366,12 +4737,66 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -5417,9 +4842,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -5428,27 +4853,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -5494,9 +4898,9 @@ } }, "node_modules/node-abi": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.21.0.tgz", - "integrity": "sha512-smhrivuPqEM3H5LmnY3KU6HfYv0u4QklgAxfFyRNujKUzbUcYZ+Jc2EhukB9SRcD2VpqhxM7n/MIcp1Ua1/JMg==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz", + "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==", "dependencies": { "semver": "^5.4.1" } @@ -5510,9 +4914,9 @@ } }, "node_modules/node-addon-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", - "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node_modules/node-fetch": { "version": "2.6.1", @@ -5590,11 +4994,6 @@ "node": ">=4" } }, - "node_modules/noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" - }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -5640,9 +5039,9 @@ } }, "node_modules/normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true, "engines": { "node": ">=8" @@ -5675,93 +5074,10 @@ "node": ">=0.10.0" } }, - "node_modules/object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5776,17 +5092,6 @@ "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -5805,47 +5110,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.entries": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", + "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" + "es-abstract": "^1.18.2" }, "engines": { "node": ">= 0.4" } }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -5858,46 +5136,15 @@ "node": ">=0.10.0" } }, - "node_modules/object.omit/node_modules/for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.omit/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.18.2" }, "engines": { "node": ">= 0.4" @@ -5979,33 +5226,27 @@ } }, "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "p-try": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "p-limit": "^1.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/p-try": { @@ -6073,19 +5314,6 @@ "flaverr": "^1.5.1" } }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -6120,15 +5348,16 @@ } }, "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "dependencies": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/parse-passwd": { @@ -6140,20 +5369,14 @@ } }, "node_modules/parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "dependencies": { - "better-assert": "~1.0.0" - } + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" }, "node_modules/parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "dependencies": { - "better-assert": "~1.0.0" - } + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" }, "node_modules/parseurl": { "version": "1.3.2", @@ -6163,21 +5386,13 @@ "node": ">= 0.8" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/path-is-absolute": { @@ -6197,28 +5412,9 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "engines": { - "node": ">=0.10.0" - } + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { "version": "1.5.3", @@ -6234,12 +5430,12 @@ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, "node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "dependencies": { - "pify": "^2.0.0" + "pify": "^3.0.0" }, "engines": { "node": ">=4" @@ -6260,15 +5456,15 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, "node_modules/pg": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.5.1.tgz", - "integrity": "sha512-9wm3yX9lCfjvA98ybCyw2pADUivyNWT/yIP4ZcDVpMN0og70BUWYEGXPCTAQdGTAqnytfRADb7NERrY1qxhIqw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.6.0.tgz", + "integrity": "sha512-qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ==", "dependencies": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", - "pg-connection-string": "^2.4.0", - "pg-pool": "^3.2.2", - "pg-protocol": "^1.4.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.3.0", + "pg-protocol": "^1.5.0", "pg-types": "^2.1.0", "pgpass": "1.x" }, @@ -6298,17 +5494,17 @@ } }, "node_modules/pg-pool": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.2.tgz", - "integrity": "sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.3.0.tgz", + "integrity": "sha512-0O5huCql8/D6PIRFAlmccjphLYWC+JIzvUhSzXSpGaf+tjTZc4nn+Lr7mLXBbFJfvwbP0ywDv73EiaBsxn7zdg==", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.4.0.tgz", - "integrity": "sha512-El+aXWcwG/8wuFICMQjM5ZSAm6OWiJicFdNYo+VY3QP+8vI4SvLIWVe51PppTzMhikUJR+PsyIFKqfdXPz/yxA==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", + "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" }, "node_modules/pg-types": { "version": "2.2.0", @@ -6325,6 +5521,11 @@ "node": ">=4" } }, + "node_modules/pg/node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, "node_modules/pgpass": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.4.tgz", @@ -6334,9 +5535,9 @@ } }, "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, "engines": { "node": ">=8.6" @@ -6346,12 +5547,12 @@ } }, "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/pkg-dir": { @@ -6366,77 +5567,23 @@ "node": ">=4" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { + "node_modules/pkg-up": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "find-up": "^2.1.0" }, "engines": { "node": ">=4" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/pluralize": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=" }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -6473,9 +5620,9 @@ } }, "node_modules/prebuild-install": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.0.1.tgz", - "integrity": "sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.3.tgz", + "integrity": "sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q==", "dependencies": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", @@ -6483,15 +5630,13 @@ "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", - "node-abi": "^2.7.0", - "noop-logger": "^0.1.1", + "node-abi": "^2.21.0", "npmlog": "^4.0.1", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^3.0.3", "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" + "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" @@ -6500,38 +5645,6 @@ "node": ">=6" } }, - "node_modules/prebuild-install/node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prebuild-install/node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prebuild-install/node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6559,9 +5672,9 @@ } }, "node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -6612,11 +5725,11 @@ } }, "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" }, "engines": { @@ -6701,6 +5814,14 @@ "node": ">=0.10.0" } }, + "node_modules/randomatic/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -6794,90 +5915,32 @@ } }, "node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "dependencies": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" }, "engines": { "node": ">=4" } }, "node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "dependencies": { "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "read-pkg": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -6910,11 +5973,11 @@ } }, "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dependencies": { - "resolve": "^1.1.6" + "resolve": "^1.9.0" }, "engines": { "node": ">= 0.10" @@ -6962,22 +6025,10 @@ "node": ">=0.10.0" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { "node": ">=8" @@ -7016,9 +6067,9 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "node_modules/repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "engines": { "node": ">=0.10.0" } @@ -7071,12 +6122,12 @@ } }, "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" }, "engines": { "node": ">=0.10.0" @@ -7091,12 +6142,6 @@ "node": ">=4" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated" - }, "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -7106,14 +6151,6 @@ "lowercase-keys": "^1.0.0" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "engines": { - "node": ">=0.12" - } - }, "node_modules/revalidator": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", @@ -7217,23 +6254,15 @@ } ] }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sails": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/sails/-/sails-1.4.2.tgz", - "integrity": "sha512-3aJDXms3/PSw+igSu3T2FHQ8q2j0lYHugT+FDnyX8ui6lusylYt6Q1kVYP8yi/kpcqI61Cci7s/EMd/MJ5y8Tg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sails/-/sails-1.4.3.tgz", + "integrity": "sha512-X0mS5HpCJfffA9xIDjdm1c0844ZLPbvcIoYT8eJOrbW239+4ZtxsGYmPr2kkkpxRRKvh2FKlMaQNWI6f2IV8nQ==", "dependencies": { "@sailshq/lodash": "^3.10.2", "async": "2.5.0", @@ -7509,9 +6538,9 @@ } }, "node_modules/sails-hook-sockets": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-2.0.0.tgz", - "integrity": "sha512-Y/HG2iYD8n2ljUYdtKrcu756SAhs0qI9SX9pfO6oWOHbS/OWQYh7I0iMGmbMX+qo67OVDnLdwMP4brIHt9kuLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-2.0.1.tgz", + "integrity": "sha512-I8p8xxHTvWhyoIYy4JmkUHVIucyG5sBNCHRT2LpHkgt1q/XeqQZ6q2jnrxr+tpGg6ASF+v6QyUt6ivAhJeHqdQ==", "dependencies": { "@sailshq/lodash": "^3.10.2", "async": "2.0.1", @@ -7520,7 +6549,7 @@ "machinepack-urls": "^6.0.2-0", "proxy-addr": "1.1.5", "semver": "4.3.6", - "socket.io": "2.2.0", + "socket.io": "2.4.1", "uid2": "0.0.3" } }, @@ -7532,6 +6561,14 @@ "lodash": "^4.8.0" } }, + "node_modules/sails-hook-sockets/node_modules/forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/sails-hook-sockets/node_modules/ipaddr.js": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", @@ -7686,9 +6723,9 @@ } }, "node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -7890,58 +6927,23 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "node_modules/sharp": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.26.3.tgz", - "integrity": "sha512-NdEJ9S6AMr8Px0zgtFo1TJjMK/ROMU92MkDtYn2BBrDjIx3YfH9TUyGdzPC+I/L619GeYQc690Vbaxc5FPCCWg==", + "version": "0.28.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.28.3.tgz", + "integrity": "sha512-21GEP45Rmr7q2qcmdnjDkNP04Ooh5v0laGS5FDpojOO84D1DJwUijLiSq8XNNM6e8aGXYtoYRh3sVNdm8NodMA==", "hasInstallScript": true, "dependencies": { - "array-flatten": "^3.0.0", "color": "^3.1.3", "detect-libc": "^1.0.3", - "node-addon-api": "^3.0.2", - "npmlog": "^4.1.2", - "prebuild-install": "^6.0.0", - "semver": "^7.3.2", - "simple-get": "^4.0.0", + "node-addon-api": "^3.2.0", + "prebuild-install": "^6.1.2", + "semver": "^7.3.5", + "simple-get": "^3.1.0", "tar-fs": "^2.1.1", "tunnel-agent": "^0.6.0" }, @@ -7952,11 +6954,6 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/sharp/node_modules/array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8015,25 +7012,11 @@ ] }, "node_modules/simple-get": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.0.tgz", - "integrity": "sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", "dependencies": { - "decompress-response": "^6.0.0", + "decompress-response": "^4.2.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } @@ -8240,6 +7223,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { "uuid": "bin/uuid" } @@ -8270,189 +7254,17 @@ "node": ">=8" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/socket.io": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", - "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.1.tgz", + "integrity": "sha512-Si18v0mMXGAqLqCVpTxBa8MGqriHGQh8ccEOhmsmNS3thNCGBwO8WGrwMibANsWtQQ5NStdZwHqZR3naJVFc3w==", "dependencies": { "debug": "~4.1.0", - "engine.io": "~3.3.1", + "engine.io": "~3.5.0", "has-binary2": "~1.0.2", "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.2.0", - "socket.io-parser": "~3.3.0" + "socket.io-client": "2.4.0", + "socket.io-parser": "~3.4.0" } }, "node_modules/socket.io-adapter": { @@ -8461,31 +7273,23 @@ "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" }, "node_modules/socket.io-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", - "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", "dependencies": { "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "debug": "~3.1.0", - "engine.io-client": "~3.3.1", + "engine.io-client": "~3.5.0", "has-binary2": "~1.0.2", - "has-cors": "1.1.0", "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", + "parseqs": "0.0.6", + "parseuri": "0.0.6", "socket.io-parser": "~3.3.0", "to-array": "0.1.4" } }, - "node_modules/socket.io-client/node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, "node_modules/socket.io-client/node_modules/debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -8494,12 +7298,17 @@ "ms": "2.0.0" } }, + "node_modules/socket.io-client/node_modules/isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + }, "node_modules/socket.io-client/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "node_modules/socket.io-parser": { + "node_modules/socket.io-client/node_modules/socket.io-parser": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", @@ -8509,12 +7318,28 @@ "isarray": "2.0.1" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "node_modules/socket.io-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", "dependencies": { - "ms": "2.0.0" + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + } + }, + "node_modules/socket.io-parser/node_modules/component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dependencies": { + "ms": "^2.1.1" } }, "node_modules/socket.io-parser/node_modules/isarray": { @@ -8522,11 +7347,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, - "node_modules/socket.io-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/socket.io/node_modules/debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -8544,31 +7364,6 @@ "@sailshq/lodash": "^3.10.2" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "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" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -8596,22 +7391,11 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", "dev": true }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", @@ -8647,94 +7431,6 @@ "node": "*" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -8917,9 +7613,9 @@ } }, "node_modules/superagent/node_modules/qs": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.0.tgz", - "integrity": "sha512-yjACOWijC6L/kmPZZAsVBNY2zfHSIbpdpL977quseu56/8BZ2LoF5axK2bGhbzhVKt7V9xgWTtpyLbxwIoER0Q==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -8979,24 +7675,26 @@ } }, "node_modules/table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/table/node_modules/ajv": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", - "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -9159,28 +7857,6 @@ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", @@ -9190,30 +7866,16 @@ "node": ">=6" } }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, "node_modules/toidentifier": { @@ -9372,23 +8034,18 @@ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" }, "node_modules/unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "dependencies": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "engines": { - "node": ">=0.10.0" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/undefsafe": { @@ -9420,28 +8077,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -9462,50 +8097,6 @@ "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/update-notifier": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", @@ -9555,12 +8146,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated" - }, "node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -9573,14 +8158,6 @@ "node": ">=4" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -9652,14 +8229,14 @@ "dev": true }, "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "dependencies": { - "homedir-polyfill": "^1.0.1" + "user-home": "^1.1.1" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.10.0" } }, "node_modules/validate-npm-package-license": { @@ -9673,9 +8250,9 @@ } }, "node_modules/validator": { - "version": "13.5.2", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz", - "integrity": "sha512-mD45p0rvHVBlY2Zuy3F3ESIe1h5X58GPfAtslBjY7EtTqGquZTj+VX/J4RnHWN8FKq0C9WRVt1oWAcytWRuYLQ==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==", "engines": { "node": ">= 0.10" } @@ -9752,43 +8329,11 @@ "node": ">=0.10.0" } }, - "node_modules/waterline-sql-builder/node_modules/arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dependencies": { - "arr-flatten": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "node_modules/waterline-sql-builder/node_modules/braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dependencies": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -9817,17 +8362,6 @@ "ms": "2.0.0" } }, - "node_modules/waterline-sql-builder/node_modules/detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", - "dependencies": { - "fs-exists-sync": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -9836,135 +8370,16 @@ "node": ">=0.8.0" } }, - "node_modules/waterline-sql-builder/node_modules/expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dependencies": { - "is-posix-bracket": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "dependencies": { - "os-homedir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/findup-sync": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", - "dependencies": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/flagged-respawn": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "dependencies": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "dependencies": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/interpret": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=" }, - "node_modules/waterline-sql-builder/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "node_modules/waterline-sql-builder/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/knex": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/knex/-/knex-0.12.7.tgz", @@ -9993,44 +8408,6 @@ "knex": "bin/cli.js" } }, - "node_modules/waterline-sql-builder/node_modules/liftoff": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.5.tgz", - "integrity": "sha1-mYwods/0hLED5EI7k9NW2kRzTJE=", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^0.4.2", - "flagged-respawn": "^0.3.2", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/waterline-sql-builder/node_modules/micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dependencies": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/minimist": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", @@ -10041,17 +8418,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "node_modules/waterline-sql-builder/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/pg-connection-string": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", @@ -10068,18 +8434,6 @@ "string_decoder": "~0.10.x" } }, - "node_modules/waterline-sql-builder/node_modules/resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "dependencies": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/waterline-sql-builder/node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -10119,32 +8473,11 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "bin": { "uuid": "bin/uuid" } }, - "node_modules/waterline-sql-builder/node_modules/v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dependencies": { - "user-home": "^1.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/waterline-sql-builder/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/waterline-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/waterline-utils/-/waterline-utils-1.4.3.tgz", @@ -10321,11 +8654,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" - }, "node_modules/wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -10430,9 +8758,9 @@ } }, "node_modules/workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.4.tgz", + "integrity": "sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g==", "dev": true }, "node_modules/wrap-ansi": { @@ -10499,11 +8827,23 @@ } }, "node_modules/ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "dependencies": { - "async-limiter": "~1.0.0" + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/xdg-basedir": { @@ -10516,9 +8856,9 @@ } }, "node_modules/xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", "engines": { "node": ">=0.4.0" } @@ -10532,9 +8872,9 @@ } }, "node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "engines": { "node": ">=10" @@ -10657,18 +8997,18 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", "dev": true }, "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -10732,46 +9072,29 @@ } }, "@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz", + "integrity": "sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } } }, "@mapbox/node-pre-gyp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz", - "integrity": "sha512-CUBdThIZMoLEQQxACwhLsPg/puxBca0abTH3ixuvBQkhjJ80Hdp99jmVjxFCOa52/tZqN9d70IbGUf+OuKDHGA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz", + "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==", "requires": { "detect-libc": "^1.0.3", - "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", "make-dir": "^3.1.0", "node-fetch": "^2.6.1", "nopt": "^5.0.0", @@ -10801,11 +9124,6 @@ "defer-to-connect": "^1.0.1" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" - }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -10956,9 +9274,9 @@ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -10989,25 +9307,18 @@ } }, "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -11026,15 +9337,10 @@ "is-string": "^1.0.5" } }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" - }, "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, "array.prototype.flat": { "version": "1.2.4", @@ -11058,11 +9364,6 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -11077,22 +9378,12 @@ "lodash": "^4.14.0" } }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", @@ -11108,38 +9399,14 @@ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - } - } + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" }, "base64-js": { "version": "1.5.1", @@ -11147,9 +9414,9 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, "bcrypt": { "version": "5.0.1", @@ -11160,14 +9427,6 @@ "node-addon-api": "^3.1.0" } }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -11335,35 +9594,12 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - } + "fill-range": "^7.0.1" } }, "browser-stdout": { @@ -11396,22 +9632,6 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -11454,11 +9674,6 @@ "get-intrinsic": "^1.0.2" } }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -11544,9 +9759,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -11573,41 +9788,6 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.5.0" - }, - "dependencies": { - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - } } }, "chownr": { @@ -11621,78 +9801,6 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, "cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -11757,15 +9865,6 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", @@ -11833,9 +9932,9 @@ } }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, "common-js-file-extensions": { "version": "1.0.2", @@ -11955,12 +10054,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -12018,11 +10111,6 @@ "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, "core-js": { "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", @@ -12101,17 +10189,12 @@ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", "requires": { - "mimic-response": "^3.1.0" + "mimic-response": "^2.0.0" } }, "deep-eql": { @@ -12154,15 +10237,6 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -12185,9 +10259,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", + "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", + "requires": { + "fs-exists-sync": "^0.1.0" + } }, "detect-libc": { "version": "1.0.3", @@ -12219,9 +10296,9 @@ } }, "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" }, "dotenv-cli": { "version": "4.0.0", @@ -12232,6 +10309,13 @@ "dotenv": "^8.1.0", "dotenv-expand": "^5.1.0", "minimist": "^1.1.3" + }, + "dependencies": { + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + } } }, "dotenv-expand": { @@ -12296,61 +10380,51 @@ } }, "engine.io": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.3.2.tgz", - "integrity": "sha512-AsaA9KG7cWPXWHp5FvHdDWY3AMWeZ8x+2pUVLcn71qE5AtAzgGbxuclOytygskw8XGmiQafTmnI9Bix3uihu2w==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz", + "integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==", "requires": { "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~6.1.0" + "base64id": "2.0.0", + "cookie": "~0.4.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "~7.4.2" }, "dependencies": { "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "engine.io-client": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", - "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.2.tgz", + "integrity": "sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==", "requires": { - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "component-inherit": "0.0.3", "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "engine.io-parser": "~2.2.0", "has-cors": "1.1.0", "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~7.4.2", + "xmlhttprequest-ssl": "~1.6.2", "yeast": "0.1.2" }, "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -12367,13 +10441,13 @@ } }, "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", + "base64-arraybuffer": "0.1.4", "blob": "0.0.5", "has-binary2": "~1.0.2" } @@ -12397,9 +10471,9 @@ } }, "es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -12410,14 +10484,14 @@ "has-symbols": "^1.0.2", "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", "object-keys": "^1.1.1", "object.assign": "^4.1.2", "string.prototype.trimend": "^1.0.4", "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" + "unbox-primitive": "^1.0.1" } }, "es-to-primitive": { @@ -12434,8 +10508,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-goat": { "version": "2.1.1", @@ -12455,28 +10528,30 @@ "dev": true }, "eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", + "@eslint/eslintrc": "^0.4.2", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -12485,7 +10560,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -12494,7 +10569,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" } @@ -12511,9 +10586,9 @@ } }, "eslint-config-prettier": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz", - "integrity": "sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", + "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", "dev": true, "requires": {} }, @@ -12545,50 +10620,46 @@ } }, "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz", + "integrity": "sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A==", "dev": true, "requires": { - "debug": "^2.6.9", + "debug": "^3.2.7", "pkg-dir": "^2.0.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, "eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "version": "2.23.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz", + "integrity": "sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ==", "dev": true, "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", + "array-includes": "^3.1.3", + "array.prototype.flat": "^1.2.4", "debug": "^2.6.9", - "doctrine": "1.5.0", + "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", + "eslint-module-utils": "^2.6.1", + "find-up": "^2.0.0", "has": "^1.0.3", + "is-core-module": "^2.4.0", "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", + "object.values": "^1.1.3", + "pkg-up": "^2.0.0", + "read-pkg-up": "^3.0.0", + "resolve": "^1.20.0", "tsconfig-paths": "^3.9.0" }, "dependencies": { @@ -12602,13 +10673,12 @@ } }, "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "esutils": "^2.0.2" } }, "ms": { @@ -12620,9 +10690,9 @@ } }, "eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", + "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -12656,9 +10726,9 @@ } }, "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, "esm": { @@ -12743,104 +10813,11 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -12870,22 +10847,6 @@ "requires": { "kind-of": "^3.0.2" } - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } } } }, @@ -12895,11 +10856,11 @@ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", + "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", "requires": { - "homedir-polyfill": "^1.0.1" + "os-homedir": "^1.0.1" } }, "express": { @@ -13054,50 +11015,18 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "is-extglob": "^1.0.0" }, "dependencies": { - "define-property": { + "is-extglob": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" } } }, @@ -13164,9 +11093,9 @@ "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" }, "filenamify": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.2.0.tgz", - "integrity": "sha512-pkgE+4p7N1n7QieOopmn3TqJaefjdWXwEkj2XLZJLKfOgcQKkn11ahvGNgTD8mLggexLiDFQxeTs14xVU22XPA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "requires": { "filename-reserved-regex": "^2.0.0", "strip-outer": "^1.0.1", @@ -13174,29 +11103,12 @@ } }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - } + "to-regex-range": "^5.0.1" } }, "finalhandler": { @@ -13234,42 +11146,44 @@ } }, "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "locate-path": "^2.0.0" } }, "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", + "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" + "detect-file": "^0.1.0", + "is-glob": "^2.0.1", + "micromatch": "^2.3.7", + "resolve-dir": "^0.1.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + } } }, "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=" }, "flat": { "version": "5.0.2", @@ -13307,9 +11221,9 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { "for-in": "^1.0.1" } @@ -13332,17 +11246,9 @@ "dev": true }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fresh": { "version": "0.5.2", @@ -13479,11 +11385,6 @@ "pump": "^3.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, "getopts": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.2.5.tgz", @@ -13495,9 +11396,9 @@ "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13566,25 +11467,23 @@ } }, "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", + "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "^0.1.4", + "is-windows": "^0.2.0" } }, "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", + "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", + "homedir-polyfill": "^1.0.0", "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "is-windows": "^0.2.0", + "which": "^1.2.12" }, "dependencies": { "which": { @@ -13598,9 +11497,9 @@ } }, "globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -13724,35 +11623,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "has-yarn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", @@ -13774,9 +11644,9 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "http-cache-semantics": { @@ -13797,12 +11667,11 @@ "toidentifier": "1.0.0" } }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "requires": { - "@tootallnate/once": "1", "agent-base": "6", "debug": "4" } @@ -13941,23 +11810,6 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -13965,9 +11817,9 @@ "dev": true }, "is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", "dev": true }, "is-binary-path": { @@ -13980,12 +11832,12 @@ } }, "is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2" } }, "is-buffer": { @@ -14009,37 +11861,19 @@ } }, "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "requires": { "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -14054,17 +11888,15 @@ } }, "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -14078,6 +11910,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -14105,27 +11938,15 @@ "dev": true }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", "dev": true }, "is-obj": { @@ -14146,14 +11967,6 @@ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -14165,36 +11978,28 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" + "has-symbols": "^1.0.2" } }, "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", "dev": true }, "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-typedarray": { @@ -14203,18 +12008,16 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true }, "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" }, "is-wsl": { "version": "1.1.0", @@ -14238,9 +12041,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } }, "isstream": { "version": "0.1.2", @@ -14269,6 +12075,12 @@ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -14351,9 +12163,12 @@ } }, "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } }, "klaw": { "version": "1.3.1", @@ -14364,22 +12179,30 @@ } }, "knex": { - "version": "0.21.19", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.21.19.tgz", - "integrity": "sha512-6etvrq9XI1Ck6mEc/XiXFGVpD1Lmj6v9XWojqZgEbOvyMbW7XRvgZ99yIhN/kaBH+43FEy3xv/AcbRaH+1pJtw==", + "version": "0.95.6", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.6.tgz", + "integrity": "sha512-noRcmkJl1MdicUbezrcr8OtVLcqQ/cfLIwgAx5EaxNxQOIJff88rBeyLywUScGhQNd/b78DIKKXZzLMrm6h/cw==", "requires": { "colorette": "1.2.1", - "commander": "^6.2.0", + "commander": "^7.1.0", "debug": "4.3.1", + "escalade": "^3.1.1", "esm": "^3.2.25", "getopts": "2.2.5", "interpret": "^2.2.0", - "liftoff": "3.1.0", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "pg-connection-string": "2.4.0", + "rechoir": "^0.7.0", + "resolve-from": "^5.0.0", "tarn": "^3.0.1", - "tildify": "2.0.0", - "v8flags": "^3.2.0" + "tildify": "2.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } } }, "latest-version": { @@ -14410,29 +12233,36 @@ } }, "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.5.tgz", + "integrity": "sha1-mYwods/0hLED5EI7k9NW2kRzTJE=", "requires": { "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", + "findup-sync": "^0.4.2", + "flagged-respawn": "^0.3.2", "rechoir": "^0.6.2", "resolve": "^1.1.7" + }, + "dependencies": { + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + } } }, "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" } }, @@ -14445,12 +12275,13 @@ } }, "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "^5.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { @@ -14458,6 +12289,12 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, "lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -14493,18 +12330,31 @@ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^4.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "lowercase-keys": { @@ -14578,9 +12428,9 @@ } }, "machinepack-redis": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/machinepack-redis/-/machinepack-redis-2.0.5.tgz", - "integrity": "sha512-K+5j93jaeFKKhtGc0VDVaW/42luxbVnN/XueLfXdJhFam+dMm+06iNzVC0xexZwx+MRfnpWiMOT2TncC+Vi07g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/machinepack-redis/-/machinepack-redis-2.0.6.tgz", + "integrity": "sha512-Vb5B7o04Z/C+TdS78nBnJH+mMtSAZYDjsIIYXoIUINGLo006qxlYLr4+4SbpJSHY6SVZ+Yzxyfwlxp5/SxWVtQ==", "requires": { "@sailshq/lodash": "^3.10.2", "async": "2.0.1", @@ -14623,14 +12473,6 @@ } } }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "requires": { - "kind-of": "^6.0.2" - } - }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -14639,19 +12481,6 @@ "tmpl": "1.0.x" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, "math-random": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", @@ -14689,23 +12518,56 @@ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } } }, "mime": { @@ -14714,22 +12576,22 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" }, "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", "requires": { - "mime-db": "1.46.0" + "mime-db": "1.48.0" } }, "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" }, "minimatch": { "version": "3.0.4", @@ -14761,15 +12623,6 @@ "yallist": "^4.0.0" } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - } - }, "mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", @@ -14784,9 +12637,9 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" }, "mocha": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.3.2.tgz", - "integrity": "sha512-UdmISwr/5w+uXLPKspgoV7/RXZwKRTiTjJ2/AC5ZiEztIoOYdfKb19+9jNmEInzx5pBsCyJQzarAxqIGBNYJhg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.0.1.tgz", + "integrity": "sha512-9zwsavlRO+5csZu6iRtl3GHImAbhERoDsZwdRkdJ/bE+eVplmoxNKE901ZJ9LdSchYBjSCPbjKc5XvcAri2ylw==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", @@ -14797,20 +12650,20 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.6", + "glob": "7.1.7", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.1.20", + "nanoid": "3.1.23", "serialize-javascript": "5.0.1", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", "wide-align": "1.1.3", - "workerpool": "6.1.0", + "workerpool": "6.1.4", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -14822,21 +12675,64 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { "argparse": "^2.0.1" } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -14872,29 +12768,11 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -14936,9 +12814,9 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "node-abi": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.21.0.tgz", - "integrity": "sha512-smhrivuPqEM3H5LmnY3KU6HfYv0u4QklgAxfFyRNujKUzbUcYZ+Jc2EhukB9SRcD2VpqhxM7n/MIcp1Ua1/JMg==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.0.tgz", + "integrity": "sha512-g6bZh3YCKQRdwuO/tSZZYJAw622SjsRfJ2X0Iy4sSOHZ34/sPPdVBn8fev2tj7njzLwuqPw9uMtGsGkO5kIQvg==", "requires": { "semver": "^5.4.1" }, @@ -14951,9 +12829,9 @@ } }, "node-addon-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", - "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" }, "node-fetch": { "version": "2.6.1", @@ -15010,11 +12888,6 @@ } } }, - "noop-logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" - }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -15050,9 +12923,9 @@ "dev": true }, "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, "npmlog": { @@ -15076,76 +12949,10 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", "dev": true }, "object-keys": { @@ -15154,14 +12961,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", @@ -15174,36 +12973,15 @@ "object-keys": "^1.1.1" } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, "object.entries": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", + "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "es-abstract": "^1.18.2" } }, "object.omit": { @@ -15213,41 +12991,17 @@ "requires": { "for-own": "^0.1.4", "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "^1.0.1" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - } - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" } }, "object.values": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", - "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", + "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" + "es-abstract": "^1.18.2" } }, "on-finished": { @@ -15305,21 +13059,21 @@ "dev": true }, "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "yocto-queue": "^0.1.0" + "p-try": "^1.0.0" } }, "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "^3.0.2" + "p-limit": "^1.1.0" } }, "p-try": { @@ -15377,16 +13131,6 @@ "flaverr": "^1.5.1" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -15414,12 +13158,13 @@ } }, "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "parse-passwd": { @@ -15428,35 +13173,24 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "~1.0.0" - } + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" }, "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "~1.0.0" - } + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { @@ -15470,22 +13204,9 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { "version": "1.5.3", @@ -15503,12 +13224,12 @@ } }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^2.0.0" + "pify": "^3.0.0" } }, "pathval": { @@ -15523,17 +13244,24 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, "pg": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.5.1.tgz", - "integrity": "sha512-9wm3yX9lCfjvA98ybCyw2pADUivyNWT/yIP4ZcDVpMN0og70BUWYEGXPCTAQdGTAqnytfRADb7NERrY1qxhIqw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.6.0.tgz", + "integrity": "sha512-qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ==", "requires": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", - "pg-connection-string": "^2.4.0", - "pg-pool": "^3.2.2", - "pg-protocol": "^1.4.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.3.0", + "pg-protocol": "^1.5.0", "pg-types": "^2.1.0", "pgpass": "1.x" + }, + "dependencies": { + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + } } }, "pg-connection-string": { @@ -15547,15 +13275,15 @@ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" }, "pg-pool": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.2.2.tgz", - "integrity": "sha512-ORJoFxAlmmros8igi608iVEbQNNZlp89diFVx6yV5v+ehmpMY9sK6QgpmgoXbmkNaBAx8cOOZh9g80kJv1ooyA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.3.0.tgz", + "integrity": "sha512-0O5huCql8/D6PIRFAlmccjphLYWC+JIzvUhSzXSpGaf+tjTZc4nn+Lr7mLXBbFJfvwbP0ywDv73EiaBsxn7zdg==", "requires": {} }, "pg-protocol": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.4.0.tgz", - "integrity": "sha512-El+aXWcwG/8wuFICMQjM5ZSAm6OWiJicFdNYo+VY3QP+8vI4SvLIWVe51PppTzMhikUJR+PsyIFKqfdXPz/yxA==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", + "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" }, "pg-types": { "version": "2.2.0", @@ -15578,15 +13306,15 @@ } }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pkg-dir": { @@ -15596,51 +13324,15 @@ "dev": true, "requires": { "find-up": "^2.1.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" } }, "pluralize": { @@ -15648,11 +13340,6 @@ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=" }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, "postgres-array": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", @@ -15677,9 +13364,9 @@ } }, "prebuild-install": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.0.1.tgz", - "integrity": "sha512-7GOJrLuow8yeiyv75rmvZyeMGzl8mdEX5gY69d6a6bHWmiPevwqFw+tQavhK0EYMaSg3/KD24cWqeQv1EWsqDQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.3.tgz", + "integrity": "sha512-iqqSR84tNYQUQHRXalSKdIaM8Ov1QxOVuBNWI7+BzZWv6Ih9k75wOnH1rGQ9WWTaaLkTpxWKIciOF0KyfM74+Q==", "requires": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", @@ -15687,40 +13374,13 @@ "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^1.0.1", - "node-abi": "^2.7.0", - "noop-logger": "^0.1.1", + "node-abi": "^2.21.0", "npmlog": "^4.0.1", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^3.0.3", "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" - }, - "dependencies": { - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "requires": { - "mimic-response": "^2.0.0" - } - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" - }, - "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - } + "tunnel-agent": "^0.6.0" } }, "prelude-ls": { @@ -15741,9 +13401,9 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", "dev": true }, "prettier-linter-helpers": { @@ -15779,11 +13439,11 @@ } }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -15846,6 +13506,11 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -15925,69 +13590,24 @@ } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", "dev": true, "requires": { "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } + "read-pkg": "^3.0.0" } }, "readable-stream": { @@ -16021,11 +13641,11 @@ } }, "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "requires": { - "resolve": "^1.1.6" + "resolve": "^1.9.0" } }, "redis": { @@ -16061,19 +13681,10 @@ "is-equal-shallow": "^0.1.3" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "registry-auth-token": { @@ -16100,9 +13711,9 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" }, "repeat-string": { "version": "1.6.1", @@ -16140,12 +13751,12 @@ } }, "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", + "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" + "expand-tilde": "^1.2.2", + "global-modules": "^0.2.3" } }, "resolve-from": { @@ -16154,11 +13765,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -16168,11 +13774,6 @@ "lowercase-keys": "^1.0.0" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, "revalidator": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", @@ -16248,23 +13849,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sails": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/sails/-/sails-1.4.2.tgz", - "integrity": "sha512-3aJDXms3/PSw+igSu3T2FHQ8q2j0lYHugT+FDnyX8ui6lusylYt6Q1kVYP8yi/kpcqI61Cci7s/EMd/MJ5y8Tg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sails/-/sails-1.4.3.tgz", + "integrity": "sha512-X0mS5HpCJfffA9xIDjdm1c0844ZLPbvcIoYT8eJOrbW239+4ZtxsGYmPr2kkkpxRRKvh2FKlMaQNWI6f2IV8nQ==", "requires": { "@sailshq/lodash": "^3.10.2", "async": "2.5.0", @@ -16574,9 +14167,9 @@ } }, "sails-hook-sockets": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-2.0.0.tgz", - "integrity": "sha512-Y/HG2iYD8n2ljUYdtKrcu756SAhs0qI9SX9pfO6oWOHbS/OWQYh7I0iMGmbMX+qo67OVDnLdwMP4brIHt9kuLg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-2.0.1.tgz", + "integrity": "sha512-I8p8xxHTvWhyoIYy4JmkUHVIucyG5sBNCHRT2LpHkgt1q/XeqQZ6q2jnrxr+tpGg6ASF+v6QyUt6ivAhJeHqdQ==", "requires": { "@sailshq/lodash": "^3.10.2", "async": "2.0.1", @@ -16585,7 +14178,7 @@ "machinepack-urls": "^6.0.2-0", "proxy-addr": "1.1.5", "semver": "4.3.6", - "socket.io": "2.2.0", + "socket.io": "2.4.1", "uid2": "0.0.3" }, "dependencies": { @@ -16597,6 +14190,11 @@ "lodash": "^4.8.0" } }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, "ipaddr.js": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.4.0.tgz", @@ -16653,9 +14251,9 @@ "integrity": "sha512-fBMdntawlqd5N/1xL9Vu6l+J5zvy86jLUf0nFDal5McUeZzUy7PpNqq+Vx/F9KgItAyFJ7RoO3YltO9dD0Q5OQ==" }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { "lru-cache": "^6.0.0" } @@ -16836,59 +14434,24 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - } - } - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "sharp": { - "version": "0.26.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.26.3.tgz", - "integrity": "sha512-NdEJ9S6AMr8Px0zgtFo1TJjMK/ROMU92MkDtYn2BBrDjIx3YfH9TUyGdzPC+I/L619GeYQc690Vbaxc5FPCCWg==", + "version": "0.28.3", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.28.3.tgz", + "integrity": "sha512-21GEP45Rmr7q2qcmdnjDkNP04Ooh5v0laGS5FDpojOO84D1DJwUijLiSq8XNNM6e8aGXYtoYRh3sVNdm8NodMA==", "requires": { - "array-flatten": "^3.0.0", "color": "^3.1.3", "detect-libc": "^1.0.3", - "node-addon-api": "^3.0.2", - "npmlog": "^4.1.2", - "prebuild-install": "^6.0.0", - "semver": "^7.3.2", - "simple-get": "^4.0.0", + "node-addon-api": "^3.2.0", + "prebuild-install": "^6.1.2", + "semver": "^7.3.5", + "simple-get": "^3.1.0", "tar-fs": "^2.1.1", "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "array-flatten": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", - "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==" - } } }, "shebang-command": { @@ -16926,11 +14489,11 @@ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" }, "simple-get": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.0.tgz", - "integrity": "sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", "requires": { - "decompress-response": "^6.0.0", + "decompress-response": "^4.2.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } @@ -17140,157 +14703,17 @@ } } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "socket.io": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.2.0.tgz", - "integrity": "sha512-wxXrIuZ8AILcn+f1B4ez4hJTPG24iNgxBBDaJfT6MsyOhVYiTXWexGoPkd87ktJG8kQEcL/NBvRi64+9k4Kc0w==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.1.tgz", + "integrity": "sha512-Si18v0mMXGAqLqCVpTxBa8MGqriHGQh8ccEOhmsmNS3thNCGBwO8WGrwMibANsWtQQ5NStdZwHqZR3naJVFc3w==", "requires": { "debug": "~4.1.0", - "engine.io": "~3.3.1", + "engine.io": "~3.5.0", "has-binary2": "~1.0.2", "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.2.0", - "socket.io-parser": "~3.3.0" + "socket.io-client": "2.4.0", + "socket.io-parser": "~3.4.0" }, "dependencies": { "debug": { @@ -17309,54 +14732,21 @@ "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" }, "socket.io-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", - "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz", + "integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==", "requires": { "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.3.1", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "socket.io-parser": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", - "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", - "requires": { "component-emitter": "~1.3.0", "debug": "~3.1.0", - "isarray": "2.0.1" + "engine.io-client": "~3.5.0", + "has-binary2": "~1.0.2", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" }, "dependencies": { "debug": { @@ -17376,6 +14766,46 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "socket.io-parser": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz", + "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==", + "requires": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + } + } + } + }, + "socket.io-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "requires": { + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" } } }, @@ -17387,28 +14817,6 @@ "@sailshq/lodash": "^3.10.2" } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "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-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -17436,19 +14844,11 @@ } }, "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, "split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", @@ -17480,76 +14880,6 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -17690,9 +15020,9 @@ "dev": true }, "qs": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.0.tgz", - "integrity": "sha512-yjACOWijC6L/kmPZZAsVBNY2zfHSIbpdpL977quseu56/8BZ2LoF5axK2bGhbzhVKt7V9xgWTtpyLbxwIoER0Q==", + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", "dev": true, "requires": { "side-channel": "^1.0.4" @@ -17739,21 +15069,23 @@ } }, "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ajv": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", - "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz", + "integrity": "sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -17887,48 +15219,19 @@ "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "toidentifier": { @@ -18049,22 +15352,17 @@ "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" }, "unbox-primitive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", - "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "dev": true, "requires": { "function-bind": "^1.1.1", - "has-bigints": "^1.0.0", - "has-symbols": "^1.0.0", - "which-boxed-primitive": "^1.0.1" + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" - }, "undefsafe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", @@ -18096,24 +15394,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - } - } - }, "unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -18128,42 +15408,6 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, "update-notifier": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", @@ -18206,11 +15450,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -18220,11 +15459,6 @@ "prepend-http": "^2.0.0" } }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -18280,11 +15514,11 @@ "dev": true }, "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", "requires": { - "homedir-polyfill": "^1.0.1" + "user-home": "^1.1.1" } }, "validate-npm-package-license": { @@ -18298,9 +15532,9 @@ } }, "validator": { - "version": "13.5.2", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.5.2.tgz", - "integrity": "sha512-mD45p0rvHVBlY2Zuy3F3ESIe1h5X58GPfAtslBjY7EtTqGquZTj+VX/J4RnHWN8FKq0C9WRVt1oWAcytWRuYLQ==" + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", + "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==" }, "vary": { "version": "1.1.2", @@ -18372,34 +15606,11 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -18425,115 +15636,21 @@ "ms": "2.0.0" } }, - "detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", - "requires": { - "fs-exists-sync": "^0.1.0" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "requires": { - "os-homedir": "^1.0.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "findup-sync": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", - "requires": { - "detect-file": "^0.1.0", - "is-glob": "^2.0.1", - "micromatch": "^2.3.7", - "resolve-dir": "^0.1.0" - } - }, - "flagged-respawn": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=" - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "requires": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - } - }, - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "requires": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - } - }, "interpret": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz", "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls=" }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" - }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, "knex": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/knex/-/knex-0.12.7.tgz", @@ -18559,38 +15676,6 @@ "v8flags": "^2.0.2" } }, - "liftoff": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.2.5.tgz", - "integrity": "sha1-mYwods/0hLED5EI7k9NW2kRzTJE=", - "requires": { - "extend": "^3.0.0", - "findup-sync": "^0.4.2", - "flagged-respawn": "^0.3.2", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - } - }, "minimist": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", @@ -18601,14 +15686,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, "pg-connection-string": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-0.1.3.tgz", @@ -18625,15 +15702,6 @@ "string_decoder": "~0.10.x" } }, - "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "requires": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" - } - }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", @@ -18664,22 +15732,6 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "requires": { - "user-home": "^1.1.1" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -18816,11 +15868,6 @@ "is-symbol": "^1.0.3" } }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -18905,9 +15952,9 @@ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, "workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.4.tgz", + "integrity": "sha512-jGWPzsUqzkow8HoAvqaPWTUPCrlPJaJ5tY8Iz7n1uCz3tTp6s3CDG0FF1NsX42WNlkRSW6Mr+CDZGnNoSsKa7g==", "dev": true }, "wrap-ansi": { @@ -18964,12 +16011,10 @@ } }, "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "requires": { - "async-limiter": "~1.0.0" - } + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "requires": {} }, "xdg-basedir": { "version": "4.0.0", @@ -18978,9 +16023,9 @@ "dev": true }, "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", + "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" }, "xtend": { "version": "4.0.2", @@ -18988,9 +16033,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yallist": { diff --git a/server/package.json b/server/package.json index 93080ed6..a8fc7685 100644 --- a/server/package.json +++ b/server/package.json @@ -38,34 +38,34 @@ } }, "dependencies": { - "bcrypt": "^5.0.0", - "dotenv": "^8.2.0", + "bcrypt": "^5.0.1", + "dotenv": "^10.0.0", "dotenv-cli": "^4.0.0", - "filenamify": "^4.2.0", + "filenamify": "^4.3.0", "jsonwebtoken": "^8.5.1", - "knex": "^0.21.17", - "lodash": "^4.17.20", + "knex": "^0.95.6", + "lodash": "^4.17.21", "moment": "^2.29.1", "rimraf": "^3.0.2", - "sails": "^1.4.0", - "sails-hook-orm": "^3.0.1", - "sails-hook-sockets": "^2.0.0", + "sails": "^1.4.3", + "sails-hook-orm": "^3.0.2", + "sails-hook-sockets": "^2.0.1", "sails-postgresql-redacted": "^1.0.2-9", - "sharp": "^0.26.3", + "sharp": "^0.28.3", "stream-to-array": "^2.3.0", "uuid": "^8.3.2", - "validator": "^13.5.2" + "validator": "^13.6.0" }, "devDependencies": { - "chai": "^4.3.0", - "eslint": "^7.19.0", - "eslint-config-airbnb-base": "^14.2.1", - "eslint-config-prettier": "^7.2.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-prettier": "^3.3.1", - "mocha": "^8.2.1", - "nodemon": "^2.0.7", - "prettier": "2.2.1", + "chai": "^4.3.4", + "eslint": "^7.29.0", + "eslint-config-airbnb-base": "^14.2.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-prettier": "^3.4.0", + "mocha": "^9.0.1", + "nodemon": "^2.0.4", + "prettier": "2.3.1", "supertest": "^6.1.3" }, "engines": {