From 8c98e4f61dafed4e84231a4029b6aac534a95d05 Mon Sep 17 00:00:00 2001 From: Marius Andra Date: Fri, 12 Mar 2021 14:54:29 +0100 Subject: [PATCH] Toolbar Date Filter, remove react-hot-loader, fix dashboard date filter URL (#3586) * dropdown and datepicker z-index * remove dead code * pass getPopupContainer to range picker * make DateFilter's custom time range work in a shadow root * close after selecting * show date filter instead of date range * skip updating url on date filter change in toolbar * actually filter the dates * fix flickering (always show map) * refactor date filter component * upgrade to webpack 5 and @posthog/react-rrweb-player module * disconnect dashboardLogic from dateFilterLogic (remove broken url changes, etc) * add bundle tracker * remove react-hot-loader * Revert "add bundle tracker" This reverts commit e59bcfa8 * remove bundle tracker * remove updatePath * fix code quality complaints * revert @cypress/webpack-preprocessor version * try different cypress webpack plugin * add crypto-browserify * add crypto-browserify * revert to webpack 4 * revert to webpack 4 * revert to webpack 4 * implement feedback and remove debug stuff * move insights date filter logic out of lib/ * rename DateFilterComponent to DateFilter * rename DateFilterCustom to DateFilterRange * Remove hot from new code --- .ts-strict-blacklist | 44 +- babel.config.js | 1 - .../src/layout/navigation/MainNavigation.tsx | 4 +- .../src/layout/navigation/TopNavigation.tsx | 4 +- .../lib/components/DateFilter/DateFilter.tsx | 118 +-- .../components/DateFilter/DateFilterRange.tsx | 110 +++ .../src/lib/components/DateFilter/index.ts | 1 - frontend/src/scenes/App.tsx | 4 +- frontend/src/scenes/actions/Action.js | 4 +- frontend/src/scenes/annotations/index.tsx | 4 +- frontend/src/scenes/dashboard/Dashboard.tsx | 4 +- .../src/scenes/dashboard/DashboardHeader.tsx | 10 +- frontend/src/scenes/dashboard/Dashboards.tsx | 4 +- .../src/scenes/dashboard/dashboardLogic.js | 25 +- frontend/src/scenes/events/Events.tsx | 4 +- frontend/src/scenes/events/EventsTable.js | 4 +- .../scenes/experimentation/FeatureFlags.js | 4 +- .../scenes/insights/DateFilter/DateFilter.tsx | 23 + .../insights}/DateFilter/dateFilterLogic.ts | 4 +- frontend/src/scenes/insights/Insights.js | 6 +- .../scenes/insights/insightCommandLogic.ts | 2 +- .../src/scenes/instance/Licenses/index.tsx | 4 +- .../scenes/instance/SystemStatus/index.tsx | 4 +- frontend/src/scenes/me/Settings/index.tsx | 4 +- .../src/scenes/onboarding/InviteSignup.tsx | 4 +- .../src/scenes/onboarding/OnboardingSetup.tsx | 4 +- .../src/scenes/onboarding/Personalization.tsx | 4 +- .../scenes/organization/Settings/Invites.tsx | 4 +- .../src/scenes/organization/Settings/index.js | 0 .../scenes/organization/Settings/index.tsx | 4 +- .../scenes/organization/TeamMembers/index.tsx | 0 frontend/src/scenes/persons/Cohorts.tsx | 4 +- frontend/src/scenes/persons/Person.tsx | 4 +- frontend/src/scenes/plugins/Plugins.tsx | 4 +- .../src/scenes/project/Settings/index.tsx | 4 +- frontend/src/scenes/sessions/Sessions.tsx | 4 +- frontend/src/scenes/sessions/SessionsPlay.tsx | 6 +- .../src/scenes/sessions/SessionsPlayer.scss | 2 +- .../src/scenes/sessions/sessionsPlayLogic.ts | 2 +- frontend/src/toolbar/ToolbarContainer.tsx | 4 +- .../src/toolbar/button/DraggableButton.tsx | 2 +- frontend/src/toolbar/elements/heatmapLogic.ts | 18 +- frontend/src/toolbar/stats/HeatmapStats.tsx | 40 +- frontend/src/toolbar/styles.scss | 6 +- package.json | 21 +- webpack.config.js | 38 +- yarn.lock | 738 +++++++++++------- 47 files changed, 758 insertions(+), 555 deletions(-) create mode 100644 frontend/src/lib/components/DateFilter/DateFilterRange.tsx delete mode 100644 frontend/src/lib/components/DateFilter/index.ts create mode 100644 frontend/src/scenes/insights/DateFilter/DateFilter.tsx rename frontend/src/{lib/components => scenes/insights}/DateFilter/dateFilterLogic.ts (90%) create mode 100644 frontend/src/scenes/organization/Settings/index.js create mode 100644 frontend/src/scenes/organization/TeamMembers/index.tsx diff --git a/.ts-strict-blacklist b/.ts-strict-blacklist index c5aae0e3797..9a6a7944e7b 100644 --- a/.ts-strict-blacklist +++ b/.ts-strict-blacklist @@ -71,18 +71,18 @@ frontend/src/scenes/actions/ActionsTable.tsx(125,29) frontend/src/scenes/actions/ActionsTable.tsx(136,36) frontend/src/scenes/actions/ActionsTable.tsx(139,29) frontend/src/scenes/actions/ActionsTable.tsx(192,35) -frontend/src/scenes/annotations/index.tsx(32,47) -frontend/src/scenes/annotations/index.tsx(51,47) -frontend/src/scenes/annotations/index.tsx(57,48) -frontend/src/scenes/annotations/index.tsx(63,43) -frontend/src/scenes/annotations/index.tsx(69,41) -frontend/src/scenes/annotations/index.tsx(146,44) -frontend/src/scenes/annotations/index.tsx(152,38) -frontend/src/scenes/annotations/index.tsx(156,39) -frontend/src/scenes/annotations/index.tsx(232,50) -frontend/src/scenes/annotations/index.tsx(242,55) -frontend/src/scenes/annotations/index.tsx(280,70) -frontend/src/scenes/annotations/index.tsx(282,59) +frontend/src/scenes/annotations/index.tsx(30,47) +frontend/src/scenes/annotations/index.tsx(49,47) +frontend/src/scenes/annotations/index.tsx(55,48) +frontend/src/scenes/annotations/index.tsx(61,43) +frontend/src/scenes/annotations/index.tsx(67,41) +frontend/src/scenes/annotations/index.tsx(144,44) +frontend/src/scenes/annotations/index.tsx(150,38) +frontend/src/scenes/annotations/index.tsx(154,39) +frontend/src/scenes/annotations/index.tsx(230,50) +frontend/src/scenes/annotations/index.tsx(240,55) +frontend/src/scenes/annotations/index.tsx(278,70) +frontend/src/scenes/annotations/index.tsx(280,59) frontend/src/scenes/billing/Billing.tsx(6,24) frontend/src/scenes/billing/Billing.tsx(51,24) frontend/src/scenes/billing/Billing.tsx(53,61) @@ -129,7 +129,7 @@ frontend/src/scenes/dashboard/DashboardItems.tsx(92,43) frontend/src/scenes/dashboard/Dashboards.tsx(27,42) frontend/src/scenes/dashboard/Dashboards.tsx(27,46) frontend/src/scenes/dashboard/Dashboards.tsx(56,46) -frontend/src/scenes/events/Events.tsx(49,22) +frontend/src/scenes/events/Events.tsx(47,22) frontend/src/scenes/events/EventsVolumeTable.tsx(53,14) frontend/src/scenes/events/EventsVolumeTable.tsx(55,22) frontend/src/scenes/events/EventsVolumeTable.tsx(63,29) @@ -188,7 +188,7 @@ frontend/src/scenes/insights/InsightTabs/TrendTab/TrendTab.tsx(99,32) frontend/src/scenes/insights/InsightTabs/TrendTab/TrendTab.tsx(99,43) frontend/src/scenes/insights/InsightTabs/TrendTab/TrendTab.tsx(121,57) frontend/src/scenes/insights/insightCommandLogic.ts(10,41) -frontend/src/scenes/instance/Licenses/index.tsx(63,31) +frontend/src/scenes/instance/Licenses/index.tsx(61,31) frontend/src/scenes/instance/Licenses/logic.ts(38,17) frontend/src/scenes/instance/Licenses/logic.ts(43,5) frontend/src/scenes/instance/Licenses/logic.ts(47,71) @@ -210,16 +210,12 @@ frontend/src/scenes/persons/Cohort.tsx(80,40) frontend/src/scenes/persons/Cohort.tsx(166,52) frontend/src/scenes/persons/Cohort.tsx(168,36) frontend/src/scenes/persons/CohortGroup.tsx(88,29) -frontend/src/scenes/persons/Cohorts.tsx(28,33) -frontend/src/scenes/persons/Cohorts.tsx(67,83) -frontend/src/scenes/persons/Cohorts.tsx(71,42) -frontend/src/scenes/persons/Cohorts.tsx(74,55) -frontend/src/scenes/persons/Cohorts.tsx(74,65) -frontend/src/scenes/persons/Cohorts.tsx(87,48) -frontend/src/scenes/persons/Cohorts.tsx(109,29) -frontend/src/scenes/persons/Cohorts.tsx(134,39) -frontend/src/scenes/persons/Cohorts.tsx(158,69) -frontend/src/scenes/persons/Cohorts.tsx(167,37) +frontend/src/scenes/persons/Cohorts.tsx(27,33) +frontend/src/scenes/persons/Cohorts.tsx(65,83) +frontend/src/scenes/persons/Cohorts.tsx(69,42) +frontend/src/scenes/persons/Cohorts.tsx(72,55) +frontend/src/scenes/persons/Cohorts.tsx(72,65) +frontend/src/scenes/persons/Cohorts.tsx(85,48) frontend/src/scenes/persons/MergePerson.tsx(56,56) frontend/src/scenes/plugins/PluginImage.tsx(4,30) frontend/src/scenes/plugins/Repository.tsx(22,56) diff --git a/babel.config.js b/babel.config.js index 6590e779147..f308fd14ed6 100644 --- a/babel.config.js +++ b/babel.config.js @@ -4,7 +4,6 @@ module.exports = { '@babel/plugin-transform-runtime', '@babel/plugin-transform-react-jsx', '@babel/plugin-proposal-class-properties', - 'react-hot-loader/babel', ['babel-plugin-kea', { path: './frontend/src' }], ], presets: ['@babel/preset-env', '@babel/typescript'], diff --git a/frontend/src/layout/navigation/MainNavigation.tsx b/frontend/src/layout/navigation/MainNavigation.tsx index 4ce5aee90af..9004345f38b 100644 --- a/frontend/src/layout/navigation/MainNavigation.tsx +++ b/frontend/src/layout/navigation/MainNavigation.tsx @@ -17,7 +17,6 @@ import { triggerResizeAfterADelay } from 'lib/utils' import { useEscapeKey } from 'lib/hooks/useEscapeKey' import lgLogo from 'public/posthog-logo-white.svg' import smLogo from 'public/icon-white.svg' -import { hot } from 'react-hot-loader/root' import './Navigation.scss' import { IconCohorts, @@ -138,8 +137,7 @@ function PinnedDashboards(): JSX.Element { ) } -export const MainNavigation = hot(_MainNavigation) -function _MainNavigation(): JSX.Element { +export function MainNavigation(): JSX.Element { const { user } = useValues(userLogic) const { currentOrganization } = useValues(organizationLogic) const { menuCollapsed, toolbarModalOpen, pinnedDashboardsVisible } = useValues(navigationLogic) diff --git a/frontend/src/layout/navigation/TopNavigation.tsx b/frontend/src/layout/navigation/TopNavigation.tsx index f9f017ca79f..cd713a228d4 100644 --- a/frontend/src/layout/navigation/TopNavigation.tsx +++ b/frontend/src/layout/navigation/TopNavigation.tsx @@ -22,7 +22,6 @@ import { guardPremiumFeature } from 'scenes/UpgradeModal' import { sceneLogic } from 'scenes/sceneLogic' import { CreateProjectModal } from 'scenes/project/CreateProjectModal' import { CreateOrganizationModal } from 'scenes/organization/CreateOrganizationModal' -import { hot } from 'react-hot-loader/root' import { isMobile, platformCommandControlKey } from 'lib/utils' import { commandPaletteLogic } from 'lib/components/CommandPalette/commandPaletteLogic' import { Link } from 'lib/components/Link' @@ -71,8 +70,7 @@ export function WhoAmI({ user }: { user: UserType }): JSX.Element { ) } -export const TopNavigation = hot(_TopNavigation) -export function _TopNavigation(): JSX.Element { +export function TopNavigation(): JSX.Element { const { setMenuCollapsed, setChangelogModalOpen, diff --git a/frontend/src/lib/components/DateFilter/DateFilter.tsx b/frontend/src/lib/components/DateFilter/DateFilter.tsx index 774f0464717..35a1741d77e 100644 --- a/frontend/src/lib/components/DateFilter/DateFilter.tsx +++ b/frontend/src/lib/components/DateFilter/DateFilter.tsx @@ -1,18 +1,23 @@ -import React, { useRef, useEffect, useState } from 'react' -import { Select, DatePicker, Button } from 'antd' -import { useValues, useActions } from 'kea' -import moment from 'moment' -import { dateFilterLogic } from './dateFilterLogic' +import React, { useState } from 'react' +import { Select } from 'antd' +import moment, { Moment } from 'moment' import { dateMapping, isDate, dateFilterToText } from 'lib/utils' +import { DateFilterRange } from 'lib/components/DateFilter/DateFilterRange' -interface Props { +export interface DateFilterProps { defaultValue: string showCustom?: boolean bordered?: boolean makeLabel?: (key: string) => React.ReactNode style?: React.CSSProperties - onChange?: () => void + onChange?: (fromDate: string, toDate: string) => void disabled?: boolean + getPopupContainer?: (props: any) => HTMLElement +} + +interface RawDateFilterProps extends DateFilterProps { + dateFrom?: string | Moment + dateTo?: string | Moment } export function DateFilter({ @@ -23,12 +28,10 @@ export function DateFilter({ disabled, makeLabel, onChange, -}: Props): JSX.Element { - const { - dates: { dateFrom, dateTo }, - } = useValues(dateFilterLogic) - - const { setDates } = useActions(dateFilterLogic) + getPopupContainer, + dateFrom, + dateTo, +}: RawDateFilterProps): JSX.Element { const [rangeDateFrom, setRangeDateFrom] = useState( dateFrom && isDate.test(dateFrom as string) ? moment(dateFrom) : undefined ) @@ -42,10 +45,7 @@ export function DateFilter({ } function setDate(fromDate: string, toDate: string): void { - setDates(fromDate, toDate) - if (onChange) { - onChange() - } + onChange?.(fromDate, toDate) } function _onChange(v: string): void { @@ -103,10 +103,12 @@ export function DateFilter({ dropdownMatchSelectWidth={false} disabled={disabled} optionLabelProp={makeLabel ? 'label' : undefined} + getPopupContainer={getPopupContainer} dropdownRender={(menu: React.ReactElement) => { if (dateRangeOpen) { return ( - setRangeDateFrom(date)} onDateToChange={(date) => setRangeDateTo(date)} @@ -140,83 +142,3 @@ export function DateFilter({ ) } - -function DatePickerDropdown(props: { - onClickOutside: () => void - onClick: (e: React.MouseEvent) => void - onDateFromChange: (date: moment.Moment | undefined) => void - onDateToChange: (date: moment.Moment | undefined) => void - onApplyClick: () => void - rangeDateFrom: string | moment.Moment | undefined - rangeDateTo: string | moment.Moment | undefined -}): JSX.Element { - const dropdownRef = useRef(null) - const [calendarOpen, setCalendarOpen] = useState(false) - - const onClickOutside = (event: MouseEvent): void => { - if ((!event.target || !dropdownRef.current?.contains(event.target as any)) && !calendarOpen) { - props.onClickOutside() - } - } - - useEffect(() => { - document.addEventListener('mousedown', onClickOutside) - return () => { - document.removeEventListener('mousedown', onClickOutside) - } - }, [calendarOpen]) - - return ( -
- - < - -
-
- -
- { - setCalendarOpen(open) - }} - onChange={(dates) => { - if (dates && dates.length === 2) { - props.onDateFromChange(dates[0] || undefined) - props.onDateToChange(dates[1] || undefined) - } - }} - popupStyle={{ zIndex: 999999 }} - /> -
- -
-
- ) -} diff --git a/frontend/src/lib/components/DateFilter/DateFilterRange.tsx b/frontend/src/lib/components/DateFilter/DateFilterRange.tsx new file mode 100644 index 00000000000..a60d37b2303 --- /dev/null +++ b/frontend/src/lib/components/DateFilter/DateFilterRange.tsx @@ -0,0 +1,110 @@ +import React, { useEffect, useRef, useState } from 'react' +import moment from 'moment' +import { Button, DatePicker } from 'antd' + +export function DateFilterRange(props: { + onClickOutside: () => void + onClick: (e: React.MouseEvent) => void + onDateFromChange: (date: moment.Moment | undefined) => void + onDateToChange: (date: moment.Moment | undefined) => void + onApplyClick: () => void + rangeDateFrom: string | moment.Moment | undefined + rangeDateTo: string | moment.Moment | undefined + getPopupContainer?: (props: any) => HTMLElement +}): JSX.Element { + const dropdownRef = useRef(null) + const [calendarOpen, setCalendarOpen] = useState(false) + + const onClickOutside = (event: MouseEvent): void => { + const target = (event.composedPath?.()?.[0] || event.target) as HTMLElement + + if (!target) { + return + } + + const clickInPickerContainer = dropdownRef.current?.contains(target) + const clickInDateDropdown = event + .composedPath?.() + ?.find((e) => (e as HTMLElement)?.matches?.('.datefilter-datepicker')) + + if (clickInPickerContainer && calendarOpen && target.tagName !== 'INPUT') { + setCalendarOpen(false) + return + } + + if (!clickInPickerContainer && !clickInDateDropdown) { + if (calendarOpen) { + setCalendarOpen(false) + } else { + props.onClickOutside() + } + } + } + + useEffect(() => { + window.addEventListener('mousedown', onClickOutside) + return () => { + window.removeEventListener('mousedown', onClickOutside) + } + }, [calendarOpen]) + + return ( +
+ + < + +
+
+ +
+ { + if (open) { + setCalendarOpen(open) + } + }} + onChange={(dates) => { + if (dates && dates.length === 2) { + props.onDateFromChange(dates[0] || undefined) + props.onDateToChange(dates[1] || undefined) + setCalendarOpen(false) + } + }} + popupStyle={{ zIndex: 999999 }} + /> +
+ +
+
+ ) +} diff --git a/frontend/src/lib/components/DateFilter/index.ts b/frontend/src/lib/components/DateFilter/index.ts deleted file mode 100644 index 07541212428..00000000000 --- a/frontend/src/lib/components/DateFilter/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './DateFilter' diff --git a/frontend/src/scenes/App.tsx b/frontend/src/scenes/App.tsx index 5e8f060382e..ebb9b31dcc8 100644 --- a/frontend/src/scenes/App.tsx +++ b/frontend/src/scenes/App.tsx @@ -1,4 +1,3 @@ -import { hot } from 'react-hot-loader/root' import React, { useEffect } from 'react' import { useActions, useValues } from 'kea' import { Layout } from 'antd' @@ -23,8 +22,7 @@ function Toast(): JSX.Element { return } -export const App = hot(_App) -function _App(): JSX.Element | null { +export function App(): JSX.Element | null { const { user } = useValues(userLogic) const { currentOrganization, currentOrganizationLoading } = useValues(organizationLogic) const { currentTeam, currentTeamLoading } = useValues(teamLogic) diff --git a/frontend/src/scenes/actions/Action.js b/frontend/src/scenes/actions/Action.js index 4350a658985..2972db180db 100644 --- a/frontend/src/scenes/actions/Action.js +++ b/frontend/src/scenes/actions/Action.js @@ -7,7 +7,6 @@ import { eventsTableLogic } from 'scenes/events/eventsTableLogic' import api from 'lib/api' import { kea } from 'kea' import { Spin } from 'antd' -import { hot } from 'react-hot-loader/root' import { EventsTable } from 'scenes/events' let actionLogic = kea({ @@ -64,8 +63,7 @@ let actionLogic = kea({ }), }) -export const Action = hot(_Action) -function _Action({ id }) { +export function Action({ id }) { const fixedFilters = { action_id: id } const { push } = useActions(router) diff --git a/frontend/src/scenes/annotations/index.tsx b/frontend/src/scenes/annotations/index.tsx index 0cc377936f6..bac10fe3802 100644 --- a/frontend/src/scenes/annotations/index.tsx +++ b/frontend/src/scenes/annotations/index.tsx @@ -1,4 +1,3 @@ -import { hot } from 'react-hot-loader/root' import React, { useState, useEffect, HTMLAttributes } from 'react' import { useValues, useActions } from 'kea' import { Table, Tag, Button, Modal, Input, DatePicker, Row, Spin, Menu, Dropdown } from 'antd' @@ -16,8 +15,7 @@ import { AnnotationType } from '~/types' const { TextArea } = Input -export const Annotations = hot(_Annotations) -function _Annotations(): JSX.Element { +export function Annotations(): JSX.Element { const { annotations, annotationsLoading, next, loadingNext } = useValues(annotationsTableLogic) const { loadAnnotations, updateAnnotation, deleteAnnotation, loadAnnotationsNext, restoreAnnotation } = useActions( annotationsTableLogic diff --git a/frontend/src/scenes/dashboard/Dashboard.tsx b/frontend/src/scenes/dashboard/Dashboard.tsx index d753c4dd916..e1e1c2a545b 100644 --- a/frontend/src/scenes/dashboard/Dashboard.tsx +++ b/frontend/src/scenes/dashboard/Dashboard.tsx @@ -8,15 +8,13 @@ import { DashboardHeader } from 'scenes/dashboard/DashboardHeader' import { DashboardItems } from 'scenes/dashboard/DashboardItems' import { dashboardsModel } from '~/models/dashboardsModel' import { HedgehogOverlay } from 'lib/components/HedgehogOverlay/HedgehogOverlay' -import { hot } from 'react-hot-loader/root' interface Props { id: string shareToken?: string } -export const Dashboard = hot(_Dashboard) -function _Dashboard({ id, shareToken }: Props): JSX.Element { +export function Dashboard({ id, shareToken }: Props): JSX.Element { return ( diff --git a/frontend/src/scenes/dashboard/DashboardHeader.tsx b/frontend/src/scenes/dashboard/DashboardHeader.tsx index b2c0164a20c..31a805ff6a5 100644 --- a/frontend/src/scenes/dashboard/DashboardHeader.tsx +++ b/frontend/src/scenes/dashboard/DashboardHeader.tsx @@ -25,16 +25,16 @@ import { FullScreen } from 'lib/components/FullScreen' import moment from 'moment' import { dashboardLogic } from 'scenes/dashboard/dashboardLogic' import { DashboardType } from '~/types' -import { DateFilter } from 'lib/components/DateFilter' +import { DateFilter } from 'lib/components/DateFilter/DateFilter' export function DashboardHeader(): JSX.Element { - const { dashboard, draggingEnabled } = useValues(dashboardLogic) + const { dashboard, draggingEnabled, filters: dashboardFilters } = useValues(dashboardLogic) const { addNewDashboard, renameDashboard, enableDragging, disableDragging, - updateAndRefreshDashboard, + setDates, refreshAllDashboardItems, } = useActions(dashboardLogic) const { dashboards, dashboardsLoading } = useValues(dashboardsModel) @@ -82,7 +82,9 @@ export function DashboardHeader(): JSX.Element { ( <> diff --git a/frontend/src/scenes/dashboard/Dashboards.tsx b/frontend/src/scenes/dashboard/Dashboards.tsx index a3f17e3074e..65623b4cb15 100644 --- a/frontend/src/scenes/dashboard/Dashboards.tsx +++ b/frontend/src/scenes/dashboard/Dashboards.tsx @@ -7,14 +7,12 @@ import { Link } from 'lib/components/Link' import { PlusOutlined } from '@ant-design/icons' import { Table } from 'antd' import { PushpinFilled, PushpinOutlined, DeleteOutlined, AppstoreAddOutlined } from '@ant-design/icons' -import { hot } from 'react-hot-loader/root' import { NewDashboard } from 'scenes/dashboard/NewDashboard' import { PageHeader } from 'lib/components/PageHeader' import { createdAtColumn, createdByColumn } from 'lib/components/Table' import { DashboardType } from '~/types' -export const Dashboards = hot(_Dashboards) -function _Dashboards(): JSX.Element { +export function Dashboards(): JSX.Element { const { dashboardsLoading } = useValues(dashboardsModel) const { deleteDashboard, unpinDashboard, pinDashboard, addDashboard } = useActions(dashboardsModel) const { setNewDashboardDrawer } = useActions(dashboardsLogic) diff --git a/frontend/src/scenes/dashboard/dashboardLogic.js b/frontend/src/scenes/dashboard/dashboardLogic.js index 2ef10e0a81b..b8568ff5175 100644 --- a/frontend/src/scenes/dashboard/dashboardLogic.js +++ b/frontend/src/scenes/dashboard/dashboardLogic.js @@ -11,10 +11,9 @@ import { dashboardItemsModel } from '~/models/dashboardItemsModel' import { PATHS_VIZ, ACTIONS_LINE_GRAPH_LINEAR } from 'lib/constants' import { ViewType } from 'scenes/insights/insightLogic' import { eventUsageLogic } from 'lib/utils/eventUsageLogic' -import { dateFilterLogic } from 'lib/components/DateFilter/dateFilterLogic' export const dashboardLogic = kea({ - connect: [dashboardsModel, dashboardItemsModel, eventUsageLogic, dateFilterLogic], + connect: [dashboardsModel, dashboardItemsModel, eventUsageLogic], key: (props) => props.id, @@ -32,9 +31,10 @@ export const dashboardLogic = kea({ refreshDashboardItem: (id) => ({ id }), refreshAllDashboardItems: true, updateAndRefreshDashboard: true, + setDates: (dateFrom, dateTo, reloadDashboard = true) => ({ dateFrom, dateTo, reloadDashboard }), }), - loaders: ({ props }) => ({ + loaders: ({ actions, props }) => ({ allItems: [ {}, { @@ -43,7 +43,7 @@ export const dashboardLogic = kea({ const dashboard = await api.get( `api/dashboard/${props.id}/?${toParams({ share_token: props.shareToken })}` ) - dateFilterLogic.actions.setDates(dashboard.filters.date_from, dashboard.filters.date_to) + actions.setDates(dashboard.filters.date_from, dashboard.filters.date_to, false) eventUsageLogic.actions.reportDashboardViewed(dashboard, !!props.shareToken) return dashboard } catch (error) { @@ -64,6 +64,12 @@ export const dashboardLogic = kea({ ], }), reducers: ({ props }) => ({ + filters: [ + { date_from: undefined, date_to: undefined }, + { + setDates: (state, { dateFrom, dateTo }) => ({ ...state, date_from: dateFrom, date_to: dateTo }), + }, + ], allItems: { [dashboardItemsModel.actions.renameDashboardItemSuccess]: (state, { item }) => { return { ...state, items: state.items.map((i) => (i.id === item.id ? item : i)) } @@ -335,12 +341,13 @@ export const dashboardLogic = kea({ }, updateAndRefreshDashboard: async (_, breakpoint) => { await breakpoint(200) - const filters = { - date_from: dateFilterLogic.values.dates.dateFrom, - date_to: dateFilterLogic.values.dates.dateTo, + actions.updateDashboard(values.filters) + dashboardItemsModel.actions.refreshAllDashboardItems(values.filters) + }, + setDates: ({ reloadDashboard }) => { + if (reloadDashboard) { + actions.updateAndRefreshDashboard() } - actions.updateDashboard(filters) - dashboardItemsModel.actions.refreshAllDashboardItems(filters) }, }), }) diff --git a/frontend/src/scenes/events/Events.tsx b/frontend/src/scenes/events/Events.tsx index 64d637f058f..cd32a7716e8 100644 --- a/frontend/src/scenes/events/Events.tsx +++ b/frontend/src/scenes/events/Events.tsx @@ -1,7 +1,6 @@ import React from 'react' import { kea, useActions, useValues } from 'kea' -import { hot } from 'react-hot-loader/root' import { PageHeader } from 'lib/components/PageHeader' import { Tabs } from 'antd' import { ActionsTable } from 'scenes/actions/ActionsTable' @@ -35,8 +34,7 @@ const eventsLogic = kea({ }), }) -export const ManageEvents = hot(_ManageEvents) -function _ManageEvents({}): JSX.Element { +export function ManageEvents(): JSX.Element { const { tab } = useValues(eventsLogic) const { setTab } = useActions(eventsLogic) diff --git a/frontend/src/scenes/events/EventsTable.js b/frontend/src/scenes/events/EventsTable.js index 16190bf3ddf..8cbd8ef504a 100644 --- a/frontend/src/scenes/events/EventsTable.js +++ b/frontend/src/scenes/events/EventsTable.js @@ -12,10 +12,8 @@ import { EventName } from 'scenes/actions/EventName' import { eventToName, toParams } from 'lib/utils' import './EventsTable.scss' import { eventsTableLogic } from './eventsTableLogic' -import { hot } from 'react-hot-loader/root' -export const EventsTable = hot(_EventsTable) -function _EventsTable({ fixedFilters, filtersEnabled = true, pageKey }) { +export function EventsTable({ fixedFilters, filtersEnabled = true, pageKey }) { const logic = eventsTableLogic({ fixedFilters, key: pageKey }) const { properties, diff --git a/frontend/src/scenes/experimentation/FeatureFlags.js b/frontend/src/scenes/experimentation/FeatureFlags.js index b5ad9bc7cde..2944e13cbf9 100644 --- a/frontend/src/scenes/experimentation/FeatureFlags.js +++ b/frontend/src/scenes/experimentation/FeatureFlags.js @@ -1,5 +1,4 @@ import React, { Fragment, useState } from 'react' -import { hot } from 'react-hot-loader/root' import { useValues, useActions } from 'kea' import { featureFlagLogic } from './featureFlagLogic' import { Table, Switch, Drawer, Button } from 'antd' @@ -11,8 +10,7 @@ import { PageHeader } from 'lib/components/PageHeader' import PropertyFiltersDisplay from 'lib/components/PropertyFilters/PropertyFiltersDisplay' import { createdAtColumn, createdByColumn } from 'lib/components/Table' -export const FeatureFlags = hot(_FeatureFlags) -function _FeatureFlags() { +export function FeatureFlags() { const [openFeatureFlag, setOpenFeatureFlag] = useState(false) const logic = featureFlagLogic({ closeDrawer: () => setOpenFeatureFlag(false) }) const { featureFlags, featureFlagsLoading } = useValues(logic) diff --git a/frontend/src/scenes/insights/DateFilter/DateFilter.tsx b/frontend/src/scenes/insights/DateFilter/DateFilter.tsx new file mode 100644 index 00000000000..403b30da81b --- /dev/null +++ b/frontend/src/scenes/insights/DateFilter/DateFilter.tsx @@ -0,0 +1,23 @@ +import React from 'react' +import { useValues, useActions } from 'kea' +import { dateFilterLogic } from './dateFilterLogic' +import { DateFilterProps, DateFilter as DateFilterComponent } from 'lib/components/DateFilter/DateFilter' + +export function DateFilter(props: DateFilterProps): JSX.Element { + const { + dates: { dateFrom, dateTo }, + } = useValues(dateFilterLogic) + const { setDates } = useActions(dateFilterLogic) + + return ( + { + setDates(dateFrom, dateTo) + props.onChange?.(dateFrom, dateTo) + }} + /> + ) +} diff --git a/frontend/src/lib/components/DateFilter/dateFilterLogic.ts b/frontend/src/scenes/insights/DateFilter/dateFilterLogic.ts similarity index 90% rename from frontend/src/lib/components/DateFilter/dateFilterLogic.ts rename to frontend/src/scenes/insights/DateFilter/dateFilterLogic.ts index ee83c6e38cc..93fd9108871 100644 --- a/frontend/src/lib/components/DateFilter/dateFilterLogic.ts +++ b/frontend/src/scenes/insights/DateFilter/dateFilterLogic.ts @@ -1,7 +1,7 @@ import { kea } from 'kea' import { router } from 'kea-router' import { Moment } from 'moment' -import { dateFilterLogicType } from 'lib/components/DateFilter/dateFilterLogicType' +import { dateFilterLogicType } from 'scenes/insights/DateFilter/dateFilterLogicType' import { objectsEqual } from 'lib/utils' interface UrlParams { @@ -9,7 +9,7 @@ interface UrlParams { date_to?: string } -export const dateFilterLogic = kea>({ +export const dateFilterLogic = kea>({ actions: () => ({ setDates: (dateFrom: string | Moment | undefined, dateTo: string | Moment | undefined) => ({ dateFrom, diff --git a/frontend/src/scenes/insights/Insights.js b/frontend/src/scenes/insights/Insights.js index 557ba53f893..1addbd419f3 100644 --- a/frontend/src/scenes/insights/Insights.js +++ b/frontend/src/scenes/insights/Insights.js @@ -4,7 +4,7 @@ import { useActions, useMountedLogic, useValues, BindLogic } from 'kea' import { Loading } from 'lib/utils' import { SaveToDashboard } from 'lib/components/SaveToDashboard/SaveToDashboard' import moment from 'moment' -import { DateFilter } from 'lib/components/DateFilter' +import { DateFilter } from './DateFilter/DateFilter' import { IntervalFilter } from 'lib/components/IntervalFilter/IntervalFilter' import { PageHeader } from 'lib/components/PageHeader' @@ -20,7 +20,6 @@ import { LIFECYCLE, FUNNEL_VIZ, } from 'lib/constants' -import { hot } from 'react-hot-loader/root' import { annotationsLogic } from '~/lib/components/Annotations' import { router } from 'kea-router' @@ -101,8 +100,7 @@ const showComparePrevious = { [`${ViewType.PATHS}`]: false, } -export const Insights = hot(_Insights) -function _Insights() { +export function Insights() { useMountedLogic(insightCommandLogic) const [{ fromItem }] = useState(router.values.hashParams) const { clearAnnotationsToCreate } = useActions(annotationsLogic({ pageKey: fromItem })) diff --git a/frontend/src/scenes/insights/insightCommandLogic.ts b/frontend/src/scenes/insights/insightCommandLogic.ts index 5010b4eed69..7efde548932 100644 --- a/frontend/src/scenes/insights/insightCommandLogic.ts +++ b/frontend/src/scenes/insights/insightCommandLogic.ts @@ -11,7 +11,7 @@ import { commandPaletteLogicType } from './commandPaletteLogicType' import { kea } from 'kea' import { compareFilterLogic } from 'lib/components/CompareFilter/compareFilterLogic' import { RiseOutlined } from '@ant-design/icons' -import { dateFilterLogic } from 'lib/components/DateFilter/dateFilterLogic' +import { dateFilterLogic } from 'scenes/insights/DateFilter/dateFilterLogic' import { dateMapping } from 'lib/utils' const INSIGHT_COMMAND_SCOPE = 'insights' diff --git a/frontend/src/scenes/instance/Licenses/index.tsx b/frontend/src/scenes/instance/Licenses/index.tsx index 0acbb30aee1..1151e5d7782 100644 --- a/frontend/src/scenes/instance/Licenses/index.tsx +++ b/frontend/src/scenes/instance/Licenses/index.tsx @@ -1,5 +1,4 @@ import React from 'react' -import { hot } from 'react-hot-loader/root' import { Alert, Form, Button, Table, Input } from 'antd' import { licenseLogic } from './logic' import { useValues, useActions } from 'kea' @@ -38,8 +37,7 @@ const columns = [ }, ] -export const Licenses = hot(_Licenses) -function _Licenses(): JSX.Element { +export function Licenses(): JSX.Element { const [form] = Form.useForm() const { licenses, licensesLoading, error } = useValues(licenseLogic) const { createLicense } = useActions(licenseLogic) diff --git a/frontend/src/scenes/instance/SystemStatus/index.tsx b/frontend/src/scenes/instance/SystemStatus/index.tsx index 9ee3f3838d8..28f775468b2 100644 --- a/frontend/src/scenes/instance/SystemStatus/index.tsx +++ b/frontend/src/scenes/instance/SystemStatus/index.tsx @@ -1,7 +1,6 @@ import './index.scss' import React from 'react' -import { hot } from 'react-hot-loader/root' import { Alert, Table, Tag, Card } from 'antd' import { systemStatusLogic } from './systemStatusLogic' import { useValues } from 'kea' @@ -28,8 +27,7 @@ const columns = [ }, ] -export const SystemStatus = hot(_Status) -function _Status(): JSX.Element { +export function SystemStatus(): JSX.Element { const { systemStatus, systemStatusLoading, error } = useValues(systemStatusLogic) return (
diff --git a/frontend/src/scenes/me/Settings/index.tsx b/frontend/src/scenes/me/Settings/index.tsx index afebcd9d0f4..fc367860689 100644 --- a/frontend/src/scenes/me/Settings/index.tsx +++ b/frontend/src/scenes/me/Settings/index.tsx @@ -3,15 +3,13 @@ import { useValues } from 'kea' import { Divider, Card } from 'antd' import { useAnchor } from 'lib/hooks/useAnchor' import { router } from 'kea-router' -import { hot } from 'react-hot-loader/root' import { UpdateEmailPreferences } from './UpdateEmailPreferences' import { ChangePassword } from './ChangePassword' import { PersonalAPIKeys } from 'lib/components/PersonalAPIKeys' import { OptOutCapture } from './OptOutCapture' import { PageHeader } from 'lib/components/PageHeader' -export const MySettings = hot(_MySettings) -function _MySettings(): JSX.Element { +export function MySettings(): JSX.Element { const { location } = useValues(router) useAnchor(location.hash) diff --git a/frontend/src/scenes/onboarding/InviteSignup.tsx b/frontend/src/scenes/onboarding/InviteSignup.tsx index 381fcfa9df9..0f4bd00c9dd 100644 --- a/frontend/src/scenes/onboarding/InviteSignup.tsx +++ b/frontend/src/scenes/onboarding/InviteSignup.tsx @@ -1,6 +1,5 @@ import { useActions, useValues } from 'kea' import React from 'react' -import { hot } from 'react-hot-loader/root' import { inviteSignupLogic, ErrorCodes } from './inviteSignupLogic' import { SceneLoading } from 'lib/utils' import './InviteSignup.scss' @@ -178,8 +177,7 @@ function AuthenticatedAcceptInvite({ invite }: { invite: PrevalidatedInvite }): ) } -export const InviteSignup = hot(_InviteSignup) -function _InviteSignup(): JSX.Element { +export function InviteSignup(): JSX.Element { const { invite, inviteLoading } = useValues(inviteSignupLogic) const { user } = useValues(userLogic) diff --git a/frontend/src/scenes/onboarding/OnboardingSetup.tsx b/frontend/src/scenes/onboarding/OnboardingSetup.tsx index 746594732f1..5d15fd9d95b 100644 --- a/frontend/src/scenes/onboarding/OnboardingSetup.tsx +++ b/frontend/src/scenes/onboarding/OnboardingSetup.tsx @@ -1,6 +1,5 @@ import { PageHeader } from 'lib/components/PageHeader' import React from 'react' -import { hot } from 'react-hot-loader/root' import { Button, Col, Collapse, Progress, Row, Switch } from 'antd' import { ProjectOutlined, @@ -111,8 +110,7 @@ function OnboardingStep({ ) } -export const OnboardingSetup = hot(_OnboardingSetup) -function _OnboardingSetup(): JSX.Element { +export function OnboardingSetup(): JSX.Element { const { stepProjectSetup, stepInstallation, diff --git a/frontend/src/scenes/onboarding/Personalization.tsx b/frontend/src/scenes/onboarding/Personalization.tsx index 02802484b9a..47ba26ee5fb 100644 --- a/frontend/src/scenes/onboarding/Personalization.tsx +++ b/frontend/src/scenes/onboarding/Personalization.tsx @@ -1,6 +1,5 @@ import { useActions, useValues } from 'kea' import React from 'react' -import { hot } from 'react-hot-loader/root' import { personalizationLogic } from './personalizationLogic' import { Row, Col, Button } from 'antd' import { RadioSelect } from 'lib/components/RadioSelect' @@ -8,8 +7,7 @@ import { ROLES, PRODUCTS, IS_TECHNICAL } from './personalizationOptions' import { Link } from 'lib/components/Link' import './Personalization.scss' -export const Personalization = hot(_Personalization) -function _Personalization(): JSX.Element { +export function Personalization(): JSX.Element { const { personalizationData } = useValues(personalizationLogic) const { appendPersonalizationData, reportPersonalizationSkipped, reportPersonalization } = useActions( personalizationLogic diff --git a/frontend/src/scenes/organization/Settings/Invites.tsx b/frontend/src/scenes/organization/Settings/Invites.tsx index 0381cf4cd85..fe6dedd89ce 100644 --- a/frontend/src/scenes/organization/Settings/Invites.tsx +++ b/frontend/src/scenes/organization/Settings/Invites.tsx @@ -4,7 +4,6 @@ import { useValues, useActions } from 'kea' import { invitesLogic } from './invitesLogic' import { DeleteOutlined, ExclamationCircleOutlined } from '@ant-design/icons' import { humanFriendlyDetailedTime } from 'lib/utils' -import { hot } from 'react-hot-loader/root' import { OrganizationInviteType, UserNestedType } from '~/types' import { CopyToClipboardInline } from 'lib/components/CopyToClipboard' import { CreateInviteModalWithButton } from './CreateInviteModal' @@ -46,8 +45,7 @@ function makeActionsComponent( ) } } -export const Invites = hot(_Invites) -function _Invites(): JSX.Element { +export function Invites(): JSX.Element { const { invites, invitesLoading } = useValues(invitesLogic) const { deleteInvite } = useActions(invitesLogic) diff --git a/frontend/src/scenes/organization/Settings/index.js b/frontend/src/scenes/organization/Settings/index.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/frontend/src/scenes/organization/Settings/index.tsx b/frontend/src/scenes/organization/Settings/index.tsx index 237dd8d259d..f4a231a3fdb 100644 --- a/frontend/src/scenes/organization/Settings/index.tsx +++ b/frontend/src/scenes/organization/Settings/index.tsx @@ -1,6 +1,5 @@ import React, { useState } from 'react' import { Button, Card, Input, Divider } from 'antd' -import { hot } from 'react-hot-loader/root' import { UserType } from '~/types' import { PageHeader } from 'lib/components/PageHeader' import { Invites } from './Invites' @@ -45,8 +44,7 @@ function DisplayName({ isRestricted }: RestrictedComponentProps): JSX.Element { ) } -export const OrganizationSettings = hot(_OrganizationSettings) -function _OrganizationSettings({ user }: { user: UserType }): JSX.Element { +export function OrganizationSettings({ user }: { user: UserType }): JSX.Element { return ( <> { .map((result) => result.item) } -export const Cohorts = hot(_Cohorts) -function _Cohorts(): JSX.Element { +export function Cohorts(): JSX.Element { const { cohorts, cohortsLoading } = useValues(cohortsModel) const { loadCohorts } = useActions(cohortsModel) const { openCohort } = useValues(cohortsUrlLogic) diff --git a/frontend/src/scenes/persons/Person.tsx b/frontend/src/scenes/persons/Person.tsx index 0b0c8ac2c07..24759110abc 100644 --- a/frontend/src/scenes/persons/Person.tsx +++ b/frontend/src/scenes/persons/Person.tsx @@ -1,6 +1,5 @@ import React, { useState } from 'react' import { Row, Tabs, Col, Card, Skeleton, Tag, Dropdown, Menu, Button, Popconfirm } from 'antd' -import { hot } from 'react-hot-loader/root' import { SessionsView } from '../sessions/SessionsView' import { EventsTable } from 'scenes/events' import { useActions, useValues } from 'kea' @@ -17,8 +16,7 @@ import { NewPropertyComponent } from './NewPropertyComponent' const { TabPane } = Tabs -export const Person = hot(_Person) -function _Person(): JSX.Element { +export function Person(): JSX.Element { const [activeTab, setActiveTab] = useState('events') const [mergeModalOpen, setMergeModalOpen] = useState(false) diff --git a/frontend/src/scenes/plugins/Plugins.tsx b/frontend/src/scenes/plugins/Plugins.tsx index f1f52189883..e18b8849598 100644 --- a/frontend/src/scenes/plugins/Plugins.tsx +++ b/frontend/src/scenes/plugins/Plugins.tsx @@ -1,6 +1,5 @@ import './Plugins.scss' import React, { useEffect } from 'react' -import { hot } from 'react-hot-loader/root' import { PluginDrawer } from 'scenes/plugins/edit/PluginDrawer' import { RepositoryTab } from 'scenes/plugins/tabs/repository/RepositoryTab' import { InstalledTab } from 'scenes/plugins/tabs/installed/InstalledTab' @@ -13,8 +12,7 @@ import { PageHeader } from 'lib/components/PageHeader' import { PluginTab } from 'scenes/plugins/types' import { AdvancedTab } from 'scenes/plugins/tabs/advanced/AdvancedTab' -export const Plugins = hot(_Plugins) -function _Plugins(): JSX.Element { +export function Plugins(): JSX.Element { const { user } = useValues(userLogic) const { pluginTab } = useValues(pluginsLogic) const { setPluginTab } = useActions(pluginsLogic) diff --git a/frontend/src/scenes/project/Settings/index.tsx b/frontend/src/scenes/project/Settings/index.tsx index e69d6f89973..f62f3843dfa 100644 --- a/frontend/src/scenes/project/Settings/index.tsx +++ b/frontend/src/scenes/project/Settings/index.tsx @@ -10,7 +10,6 @@ import { useAnchor } from 'lib/hooks/useAnchor' import { router } from 'kea-router' import { ReloadOutlined } from '@ant-design/icons' import { red } from '@ant-design/colors' -import { hot } from 'react-hot-loader/root' import { ToolbarSettings } from './ToolbarSettings' import { CodeSnippet } from 'scenes/ingestion/frameworks/CodeSnippet' import { teamLogic } from 'scenes/teamLogic' @@ -62,8 +61,7 @@ function DisplayName(): JSX.Element { ) } -export const ProjectSettings = hot(_ProjectSettings) -function _ProjectSettings(): JSX.Element { +export function ProjectSettings(): JSX.Element { const { currentTeam } = useValues(teamLogic) const { resetToken } = useActions(teamLogic) const { location } = useValues(router) diff --git a/frontend/src/scenes/sessions/Sessions.tsx b/frontend/src/scenes/sessions/Sessions.tsx index 530c60f7f1c..9259fa8df2b 100644 --- a/frontend/src/scenes/sessions/Sessions.tsx +++ b/frontend/src/scenes/sessions/Sessions.tsx @@ -1,14 +1,12 @@ import React from 'react' import { SessionsView } from './SessionsView' -import { hot } from 'react-hot-loader/root' import { SavedFiltersMenu } from 'scenes/sessions/filters/SavedFiltersMenu' import { PageHeader } from 'lib/components/PageHeader' import { Divider } from 'antd' import { useValues } from 'kea' import { featureFlagLogic } from 'lib/logic/featureFlagLogic' -export const Sessions = hot(_Sessions) -function _Sessions(): JSX.Element { +export function Sessions(): JSX.Element { const { featureFlags } = useValues(featureFlagLogic) if (featureFlags['filter_by_session_props']) { return ( diff --git a/frontend/src/scenes/sessions/SessionsPlay.tsx b/frontend/src/scenes/sessions/SessionsPlay.tsx index cc0071d5a98..5686c280a00 100644 --- a/frontend/src/scenes/sessions/SessionsPlay.tsx +++ b/frontend/src/scenes/sessions/SessionsPlay.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useMemo, useRef, useState } from 'react' -import { Player, PlayerRef, findCurrent } from 'posthog-react-rrweb-player' +import { Player, PlayerRef, findCurrent } from '@posthog/react-rrweb-player' import { Card, Col, Input, Row, Skeleton, Tag } from 'antd' import { UserOutlined, @@ -10,7 +10,6 @@ import { MobileOutlined, TabletOutlined, } from '@ant-design/icons' -import { hot } from 'react-hot-loader/root' import { useActions, useValues } from 'kea' import { Link } from 'lib/components/Link' import { colorForString } from 'lib/utils' @@ -45,8 +44,7 @@ function DeviceIcon({ width }: { width: number }): JSX.Element { return } -export const SessionsPlay = hot(_SessionsPlay) -function _SessionsPlay(): JSX.Element { +export function SessionsPlay(): JSX.Element { const { session, sessionPlayerData, diff --git a/frontend/src/scenes/sessions/SessionsPlayer.scss b/frontend/src/scenes/sessions/SessionsPlayer.scss index b6600e898cc..ad6b77528cd 100644 --- a/frontend/src/scenes/sessions/SessionsPlayer.scss +++ b/frontend/src/scenes/sessions/SessionsPlayer.scss @@ -1,3 +1,3 @@ @import 'node_modules/rrweb/dist/rrweb.min'; @import 'node_modules/rc-tooltip/assets/bootstrap'; -@import 'node_modules/posthog-react-rrweb-player/dist/index'; +@import 'node_modules/@posthog/react-rrweb-player/dist/index'; diff --git a/frontend/src/scenes/sessions/sessionsPlayLogic.ts b/frontend/src/scenes/sessions/sessionsPlayLogic.ts index 25a05a30ae6..7bf8f7222c8 100644 --- a/frontend/src/scenes/sessions/sessionsPlayLogic.ts +++ b/frontend/src/scenes/sessions/sessionsPlayLogic.ts @@ -5,7 +5,7 @@ import { eventToName, toParams } from 'lib/utils' import { sessionsPlayLogicType } from './sessionsPlayLogicType' import { PersonType, SessionType } from '~/types' import moment from 'moment' -import { EventIndex } from 'posthog-react-rrweb-player' +import { EventIndex } from '@posthog/react-rrweb-player' import { sessionsTableLogic } from 'scenes/sessions/sessionsTableLogic' import { toast } from 'react-toastify' diff --git a/frontend/src/toolbar/ToolbarContainer.tsx b/frontend/src/toolbar/ToolbarContainer.tsx index e50c8731c46..9fc2d80a7f6 100644 --- a/frontend/src/toolbar/ToolbarContainer.tsx +++ b/frontend/src/toolbar/ToolbarContainer.tsx @@ -2,12 +2,10 @@ import React from 'react' import { useValues } from 'kea' import { Elements } from '~/toolbar/elements/Elements' import { DraggableButton } from '~/toolbar/button/DraggableButton' -import { hot } from 'react-hot-loader/root' import { toolbarLogic } from '~/toolbar/toolbarLogic' import { Fade } from 'lib/components/Fade/Fade' -export const ToolbarContainer = hot(_ToolbarContainer) -function _ToolbarContainer(): JSX.Element { +export function ToolbarContainer(): JSX.Element { const { buttonVisible } = useValues(toolbarLogic) return ( diff --git a/frontend/src/toolbar/button/DraggableButton.tsx b/frontend/src/toolbar/button/DraggableButton.tsx index 40808c8afbf..0edaa70c249 100644 --- a/frontend/src/toolbar/button/DraggableButton.tsx +++ b/frontend/src/toolbar/button/DraggableButton.tsx @@ -46,7 +46,7 @@ export function DraggableButton(): JSX.Element { savePosition={saveHeatmapPosition} >
- +
diff --git a/frontend/src/toolbar/elements/heatmapLogic.ts b/frontend/src/toolbar/elements/heatmapLogic.ts index 39058269fad..05e275d3c99 100644 --- a/frontend/src/toolbar/elements/heatmapLogic.ts +++ b/frontend/src/toolbar/elements/heatmapLogic.ts @@ -16,6 +16,7 @@ export const heatmapLogic = kea ({ showHeatmapTooltip }), + setHeatmapFilter: (filter: Record) => ({ filter }), }, reducers: { @@ -42,18 +43,26 @@ export const heatmapLogic = kea showHeatmapTooltip, }, ], + heatmapFilter: [ + {} as Record, + { + setHeatmapFilter: (_, { filter }) => filter, + }, + ], }, - loaders: { + loaders: ({ values }) => ({ events: [ [] as ElementsEventType[], { resetEvents: () => [], getEvents: async ({ $current_url }: { $current_url: string }, breakpoint) => { - const params = { + const params: Record = { properties: [{ key: '$current_url', value: $current_url }], temporary_token: toolbarLogic.values.temporaryToken, + ...values.heatmapFilter, } + const url = `${toolbarLogic.values.apiURL}api/element/stats/${encodeParams(params, '?')}` const response = await fetch(url) const results = await response.json() @@ -73,7 +82,7 @@ export const heatmapLogic = kea { + actions.getEvents({ $current_url: currentPageLogic.values.href }) + }, }), }) diff --git a/frontend/src/toolbar/stats/HeatmapStats.tsx b/frontend/src/toolbar/stats/HeatmapStats.tsx index 0f31ebb05ed..96f79ac44ee 100644 --- a/frontend/src/toolbar/stats/HeatmapStats.tsx +++ b/frontend/src/toolbar/stats/HeatmapStats.tsx @@ -1,37 +1,29 @@ import React from 'react' import { useActions, useValues } from 'kea' -import { Button, List, Space } from 'antd' +import { List, Space, Spin } from 'antd' import { heatmapLogic } from '~/toolbar/elements/heatmapLogic' -import { FireFilled, FireOutlined } from '@ant-design/icons' import { elementsLogic } from '~/toolbar/elements/elementsLogic' +import { getShadowRootPopupContainer } from '~/toolbar/utils' +import { DateFilter } from 'lib/components/DateFilter/DateFilter' -interface HeatmapStatsProps { - buttonMode?: boolean -} - -export function HeatmapStats({ buttonMode = false }: HeatmapStatsProps): JSX.Element { - const { countedElements, clickCount, heatmapEnabled, heatmapLoading } = useValues(heatmapLogic) - const { enableHeatmap, disableHeatmap } = useActions(heatmapLogic) +export function HeatmapStats(): JSX.Element { + const { countedElements, clickCount, heatmapEnabled, heatmapLoading, heatmapFilter } = useValues(heatmapLogic) + const { setHeatmapFilter } = useActions(heatmapLogic) const { setHighlightElement, setSelectedElement } = useActions(elementsLogic) return (
- {!buttonMode ? ( -
- -
- ) : null} - {heatmapEnabled && !heatmapLoading ? ( + {heatmapEnabled ? ( <> -
- Last 7 days +
+ setHeatmapFilter({ date_from, date_to })} + getPopupContainer={getShadowRootPopupContainer} + /> + {heatmapLoading ? : null}
Found: {countedElements.length} elements / {clickCount} clicks! diff --git a/frontend/src/toolbar/styles.scss b/frontend/src/toolbar/styles.scss index 4d27686fa85..0580c376ae7 100644 --- a/frontend/src/toolbar/styles.scss +++ b/frontend/src/toolbar/styles.scss @@ -20,9 +20,13 @@ .ant-modal-wrap { z-index: 2147483030 !important; } -.ant-tooltip { +.ant-select-dropdown, +.ant-picker-dropdown { z-index: 2147483031 !important; } +.ant-tooltip { + z-index: 2147483032 !important; +} .ant-list-item { &:hover { background: #f0f0f0; diff --git a/package.json b/package.json index 37323d9d1eb..56b5cd5b540 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,9 @@ "copy-scripts": "cp node_modules/posthog-js/dist/array.js* frontend/dist/; cp node_modules/rrweb/dist/rrweb.min.js frontend/dist/recorder.js", "test": "jest", "start": "concurrently -n WEBPACK,TYPEGEN -c blue,green \"yarn run start-http\" \"yarn run typegen:watch\"", - "start-http": "mkdir -p frontend/dist/ && cp -a frontend/public/* frontend/dist/ && npm run copy-scripts && webpack-dev-server --hotOnly", - "start-https": "mkdir -p frontend/dist/ && cp -a frontend/public/* frontend/dist/ && npm run copy-scripts && webpack-dev-server --hotOnly --https", - "start-docker": "mkdir -p frontend/dist/ && cp -a frontend/public/* frontend/dist/ && npm run copy-scripts && webpack-dev-server --hotOnly --host 0.0.0.0", + "start-http": "mkdir -p frontend/dist/ && cp -a frontend/public/* frontend/dist/ && npm run copy-scripts && webpack serve", + "start-https": "mkdir -p frontend/dist/ && cp -a frontend/public/* frontend/dist/ && npm run copy-scripts && webpack serve --https", + "start-docker": "mkdir -p frontend/dist/ && cp -a frontend/public/* frontend/dist/ && npm run copy-scripts && webpack serve --host 0.0.0.0", "build": "echo \"Building Webpack\" && NODE_ENV=production webpack --config webpack.config.js && cp -a frontend/public/* frontend/dist/ && npm run copy-scripts", "prettier": "prettier --write \"./frontend/src/**/*.{js,ts,tsx,json,yml,css,scss}\"", "prettier:check": "prettier --check \"./**/*.{js,ts,tsx,json,yml,css,scss}\"", @@ -40,6 +40,7 @@ "@babel/runtime": "^7.10.4", "@papercups-io/chat-widget": "^1.1.5", "@posthog/plugin-scaffold": "0.2.12", + "@posthog/react-rrweb-player": "^1.1.0", "@posthog/simmerjs": "0.7.2-posthog.2", "@sentry/browser": "^6.0.4", "@types/crypto-js": "^4.0.1", @@ -62,14 +63,13 @@ "moment": "^2.24.0", "posthog-js": "1.9.1", "posthog-js-lite": "^0.0.3", - "posthog-react-rrweb-player": "^1.0.13", "prop-types": "^15.7.2", "query-selector-shadow-dom": "0.8.0", "react": "^16.13.1", "react-dom": "^16.12.0", "react-draggable": "^4.2.0", "react-grid-layout": "^1.1.1", - "react-markdown": "^5.0.2", + "react-markdown": "^5.0.3", "react-monaco-editor": "^0.40.0", "react-redux": "^7.2.0", "react-shadow": "^18.4.2", @@ -115,8 +115,8 @@ "eslint-plugin-react": "^7.20.3", "file-loader": "^6.1.0", "givens": "^1.3.6", - "html-webpack-harddisk-plugin": "^1.0.1", - "html-webpack-plugin": "^4.4.1", + "html-webpack-harddisk-plugin": "^1.0.2", + "html-webpack-plugin": "^4.5.2", "husky": "^4.3.0", "jest": "^26.6.3", "kea-typegen": "^0.5.1", @@ -127,14 +127,13 @@ "monaco-editor-webpack-plugin": "^2.0.0", "postcss-loader": "^3.0.0", "prettier": "^2.1.1", - "react-hot-loader": "^4.12.21", "sass-loader": "^10.0.1", "style-loader": "^1.2.1", "ts-node": "^9.1.1", "typescript": "^3.9.0", - "webpack": "^4.44.1", - "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0" + "webpack": "^4.46.0", + "webpack-cli": "^4.5.0", + "webpack-dev-server": "^3.11.2" }, "optionalDependencies": { "fsevents": "^2.1.2" diff --git a/webpack.config.js b/webpack.config.js index 5776a84ae6b..967c53f8083 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -85,11 +85,6 @@ function createEntry(entry) { types: path.resolve(__dirname, 'frontend', 'types'), public: path.resolve(__dirname, 'frontend', 'public'), cypress: path.resolve(__dirname, 'cypress'), - ...(process.env.NODE_ENV !== 'production' - ? { - 'react-dom': '@hot-loader/react-dom', - } - : {}), }, }, module: { @@ -182,19 +177,26 @@ function createEntry(entry) { }, ], }, - devServer: { - contentBase: path.join(__dirname, 'frontend', 'dist'), - hot: true, - host: webpackDevServerHost, - port: 8234, - stats: 'minimal', - disableHostCheck: !!process.env.LOCAL_HTTPS, - public: process.env.JS_URL ? new URL(process.env.JS_URL).host : `${webpackDevServerFrontendAddr}:8234`, - headers: { - 'Access-Control-Allow-Origin': '*', - 'Access-Control-Allow-Headers': '*', - }, - }, + // add devServer config only to 'main' entry + ...(entry === 'main' + ? { + devServer: { + contentBase: path.join(__dirname, 'frontend', 'dist'), + hot: true, + host: webpackDevServerHost, + port: 8234, + stats: 'minimal', + disableHostCheck: !!process.env.LOCAL_HTTPS, + public: process.env.JS_URL + ? new URL(process.env.JS_URL).host + : `${webpackDevServerFrontendAddr}:8234`, + headers: { + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Headers': '*', + }, + }, + } + : {}), plugins: [ new MonacoWebpackPlugin({ languages: ['json', 'javascript'], diff --git a/yarn.lock b/yarn.lock index b2de3c3743e..bac46aeaf2a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1696,7 +1696,7 @@ semver "7.3.2" unfetch "4.1.0" -"@cypress/webpack-preprocessor@5.5.0", "@cypress/webpack-preprocessor@^5.5.0": +"@cypress/webpack-preprocessor@5.5.0": version "5.5.0" resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.5.0.tgz#e7010b2ee7449691cc16a9d5d1956af17ea175fd" integrity sha512-iqwPygSNZ1u6bM3r5QRVv6qYngkcgI2xCzi9Jmo4mrkcofwX08UaItJq7xlB2/dHbB2aryQYOsfe4xNKtQIm3A== @@ -1705,6 +1705,20 @@ debug "^4.1.1" lodash "^4.17.20" +"@cypress/webpack-preprocessor@^5.5.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.6.0.tgz#9648ae22d2e52f17a604e2a493af27a9c96568bd" + integrity sha512-kSelTDe6gs3Skp4vPP2vfTvAl+Ua+9rR/AMTir7bgJihDvzFESqnjWtF6N1TrPo+vCFVGx0VUA6JUvDkhvpwhA== + dependencies: + bluebird "^3.7.1" + debug "4.3.2" + lodash "^4.17.20" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" + integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== + "@emotion/cache@^10.0.27": version "10.0.29" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" @@ -2388,6 +2402,19 @@ resolved "https://registry.yarnpkg.com/@posthog/plugin-scaffold/-/plugin-scaffold-0.2.12.tgz#3fc54881030ad6a51549e04f1d725644a1d1e0d5" integrity sha512-MhTK21NvIokMCo4MdJ4iEwjRj/vMG73ucRQtpBmBqZNd1wvy9C7HMFyHmR0uxz1RsT3SCPWuuj1HDvoJsb+QQw== +"@posthog/react-rrweb-player@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@posthog/react-rrweb-player/-/react-rrweb-player-1.1.0.tgz#e000c9650133e38b8a018ad089f28ee69d99de64" + integrity sha512-2pmKLp8QNswvHZFodqUGJ7w/ugLLOZq+40VLIYN/KbmdpzxDC7mLXJkaWlQTWQuMgWC0jHwZpU96zWCSj8FALQ== + dependencies: + rc-slider "^9.6.2" + rc-tooltip "^5.0.1" + react-transition-group "^4.4.1" + rrweb "^0.9.14" + screenfull "^5.0.2" + use-debounce "^5.2.1" + use-local-storage-state "^6.0.0" + "@posthog/simmerjs@0.7.2-posthog.2": version "0.7.2-posthog.2" resolved "https://registry.yarnpkg.com/@posthog/simmerjs/-/simmerjs-0.7.2-posthog.2.tgz#de10f796675a66e48ed3a7a2e076608fd27bf40c" @@ -2844,9 +2871,9 @@ integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== "@types/uglify-js@*": - version "3.11.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.11.1.tgz#97ff30e61a0aa6876c270b5f538737e2d6ab8ceb" - integrity sha512-7npvPKV+jINLu1SpSYVWG8KvyJBhBa8tmzMMdDoVc2pWUYHN8KIXlPJhjJ4LT97c4dXJA2SHL/q6ADbDriZN+Q== + version "3.12.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.12.0.tgz#2bb061c269441620d46b946350c8f16d52ef37c5" + integrity sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q== dependencies: source-map "^0.6.1" @@ -2856,18 +2883,18 @@ integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== "@types/webpack-sources@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.0.0.tgz#08216ab9be2be2e1499beaebc4d469cec81e82a7" - integrity sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.7.3" "@types/webpack@^4.41.8": - version "4.41.24" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.24.tgz#75b664abe3d5bcfe54e64313ca3b43e498550422" - integrity sha512-1A0MXPwZiMOD3DPMuOKUKcpkdPo8Lq33UGggZ7xio6wJ/jV1dAu5cXDrOfGDnldUroPIRLsr/DT43/GqOA4RFQ== + version "4.41.26" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== dependencies: "@types/anymatch" "*" "@types/node" "*" @@ -3098,6 +3125,23 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.1.tgz#241aecfbdc715eee96bed447ed402e12ec171935" + integrity sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ== + +"@webpack-cli/info@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.2.tgz#ef3c0cd947a1fa083e174a59cb74e0b6195c236c" + integrity sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.3.0.tgz#2730c770f5f1f132767c63dcaaa4ec28f8c56a6c" + integrity sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw== + "@wessberg/ts-clone-node@0.3.8": version "0.3.8" resolved "https://registry.yarnpkg.com/@wessberg/ts-clone-node/-/ts-clone-node-0.3.8.tgz#25bf1e0625a4b4b836324427894ab138ebd7fb00" @@ -4241,6 +4285,14 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.0" +call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -4380,7 +4432,7 @@ check-more-types@2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA= -"chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.1: +"chokidar@>=2.0.0 <4.0.0": version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== @@ -4414,6 +4466,21 @@ chokidar@^2.0.4, chokidar@^2.1.1, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.4.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -4513,6 +4580,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -4635,6 +4711,11 @@ commander@^6.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== +commander@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" + integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -4902,7 +4983,7 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -4913,7 +4994,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -5486,10 +5567,17 @@ debug@4.3.1: dependencies: ms "2.1.2" -debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +debug@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + +debug@^3.1.1, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" @@ -5649,11 +5737,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -5991,10 +6074,10 @@ engine.io@~3.5.0: engine.io-parser "~2.2.0" ws "~7.4.2" -enhanced-resolve@^4.1.1, enhanced-resolve@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" - integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== +enhanced-resolve@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== dependencies: graceful-fs "^4.1.2" memory-fs "^0.5.0" @@ -6017,13 +6100,25 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== -errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: +envinfo@^7.7.3: + version "7.7.4" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" + integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== + +errno@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -6073,6 +6168,28 @@ es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: string.prototype.trimend "^1.0.1" string.prototype.trimstart "^1.0.1" +es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + 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" + 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" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -6292,9 +6409,9 @@ events@^2.0.0: integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== events@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== eventsource@^1.0.7: version "1.0.7" @@ -6344,6 +6461,21 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + dependencies: + 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.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + exif-parser@^0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" @@ -6367,13 +6499,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - expect@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" @@ -6513,6 +6638,11 @@ fast-shallow-equal@^1.0.0: resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b" integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw== +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + fastest-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz#9122d406d4c9d98bea644a6b6853d5874b87b028" @@ -6532,14 +6662,7 @@ fault@^1.0.0: dependencies: format "^0.2.0" -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: +faye-websocket@^0.11.3: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== @@ -6700,16 +6823,6 @@ find-yarn-workspace-root@1.2.1: fs-extra "^4.0.3" micromatch "^3.1.4" -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -6733,9 +6846,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + version "1.13.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267" + integrity sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA== for-in@^1.0.2: version "1.0.2" @@ -6894,6 +7007,11 @@ fsevents@~2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -6938,6 +7056,15 @@ get-intrinsic@^1.0.0: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -6967,6 +7094,11 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -7011,43 +7143,7 @@ glob@^7.0.3, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global@^4.3.0, global@~4.4.0: +global@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== @@ -7125,6 +7221,11 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" +has-bigints@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-binary2@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" @@ -7147,6 +7248,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbols@^1.0.0, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -7275,13 +7381,6 @@ hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -7320,9 +7419,9 @@ html-encoding-sniffer@^2.0.1: whatwg-encoding "^1.0.5" html-entities@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" - integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== html-escaper@^2.0.0: version "2.0.2" @@ -7352,24 +7451,24 @@ html-to-react@^1.3.4: lodash.camelcase "^4.3.0" ramda "^0.27.1" -html-webpack-harddisk-plugin@^1.0.1: +html-webpack-harddisk-plugin@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-webpack-harddisk-plugin/-/html-webpack-harddisk-plugin-1.0.2.tgz#75aa36fb7face505b3f1efd7bfb31c06c9f19459" integrity sha512-s0F0qAxug9fgztJyWWa8cUlVvgbAD/+J9Dhg22REU637DV9RhrKt0EsFBOXkRuSuwSeYLUtyLcQYpARPBZe51g== dependencies: mkdirp "^0.5.1" -html-webpack-plugin@^4.4.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" - integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== +html-webpack-plugin@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" + integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== dependencies: "@types/html-minifier-terser" "^5.0.0" "@types/tapable" "^1.0.5" "@types/webpack" "^4.41.8" html-minifier-terser "^5.0.1" loader-utils "^1.2.3" - lodash "^4.17.15" + lodash "^4.17.20" pretty-error "^2.1.1" tapable "^1.1.3" util.promisify "1.0.0" @@ -7439,9 +7538,9 @@ http-errors@~1.7.2: toidentifier "1.0.0" http-parser-js@>=0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" - integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== http-proxy-middleware@0.19.1: version "0.19.1" @@ -7481,6 +7580,11 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + humps@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" @@ -7645,11 +7749,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" @@ -7703,10 +7802,10 @@ internal-slot@^1.0.2: has "^1.0.3" side-channel "^1.0.2" -interpret@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -7768,9 +7867,11 @@ is-alphanumerical@^1.0.0: is-decimal "^1.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" @@ -7782,6 +7883,11 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-bigint@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" + integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -7796,6 +7902,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-boolean-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" + integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + dependencies: + call-bind "^1.0.0" + is-buffer@^1.1.0, is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -7811,6 +7924,11 @@ is-callable@^1.1.4, is-callable@^1.2.2: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -7837,7 +7955,7 @@ is-core-module@^2.0.0: dependencies: has "^1.0.3" -is-core-module@^2.1.0: +is-core-module@^2.1.0, is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== @@ -7957,6 +8075,16 @@ is-negative-zero@^2.0.0: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number-object@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -8020,7 +8148,15 @@ is-potential-custom-element-name@^1.0.0: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= -is-regex@^1.0.4, is-regex@^1.1.1: +is-regex@^1.0.4, is-regex@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -8059,7 +8195,7 @@ is-svg@^3.0.0: dependencies: html-comment-regex "^1.1.0" -is-symbol@^1.0.2: +is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== @@ -8071,7 +8207,7 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -8690,7 +8826,7 @@ json2mq@^0.2.0: dependencies: string-convert "^0.2.0" -json3@^3.3.2: +json3@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== @@ -9092,9 +9228,9 @@ log-update@^4.0.0: wrap-ansi "^6.2.0" loglevel@^1.6.8: - version "1.7.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" - integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -9266,7 +9402,7 @@ micromark@~2.10.0: debug "^4.0.0" parse-entities "^2.0.0" -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -9311,10 +9447,10 @@ mime-db@1.44.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -"mime-db@>= 1.43.0 < 2": - version "1.45.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" - integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== +mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== mime-types@2.1.26: version "2.1.26" @@ -9323,22 +9459,29 @@ mime-types@2.1.26: dependencies: mime-db "1.43.0" -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.27" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: mime-db "1.44.0" +mime-types@~2.1.17: + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + dependencies: + mime-db "1.46.0" + mime@1.6.0, mime@^1.3.4, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.4.4: - version "2.4.6" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" - integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== mime@^2.4.6: version "2.4.7" @@ -9729,7 +9872,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -9810,13 +9953,18 @@ object-inspect@^1.8.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + object-is@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" - integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -9830,7 +9978,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0, object.assign@^4.1.1: +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -9859,7 +10007,16 @@ object.fromentries@^2.0.2: function-bind "^1.1.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: +object.getownpropertydescriptors@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== @@ -9918,7 +10075,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -10166,11 +10323,6 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parse5@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" @@ -10734,19 +10886,6 @@ posthog-js@1.9.1: dependencies: fflate "^0.4.1" -posthog-react-rrweb-player@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/posthog-react-rrweb-player/-/posthog-react-rrweb-player-1.0.13.tgz#49f068caa8f8354c23020b24ef2500cd961f5d4a" - integrity sha512-8Ex97PKAeKqfyDi3OMGnbHuKTJV6piIJVBXBcQvkIRYpCGESn3pIhJJvBs3nPmYbTA03+S5gLUc9tsFhRQGC4A== - dependencies: - rc-slider "^9.6.2" - rc-tooltip "^5.0.1" - react-transition-group "^4.4.1" - rrweb "^0.9.14" - screenfull "^5.0.2" - use-debounce "^5.1.0" - use-local-storage-state "^6.0.0" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -10839,7 +10978,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.7, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.7, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -11465,20 +11604,6 @@ react-grid-layout@^1.1.1: react-draggable "^4.0.0" react-resizable "^1.10.0" -react-hot-loader@^4.12.21: - version "4.13.0" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202" - integrity sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA== - dependencies: - fast-levenshtein "^2.0.6" - global "^4.3.0" - hoist-non-react-statics "^3.3.0" - loader-utils "^1.1.0" - prop-types "^15.6.1" - react-lifecycles-compat "^3.0.4" - shallowequal "^1.1.0" - source-map "^0.7.3" - react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -11489,15 +11614,10 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== -react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-markdown@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-5.0.2.tgz#d15a8beb37b4ec34fc23dd892e7755eb7040b8db" - integrity sha512-kmkB4JbV7LqkDAjvaKRKtodB3n3Id76/DalaDun1U8FuLB0SenPfvH+jAQ5Pcpo54cACRQc1LB1yXmuuuIVecw== +react-markdown@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-5.0.3.tgz#41040ea7a9324b564b328fb81dd6c04f2a5373ac" + integrity sha512-jDWOc1AvWn0WahpjW6NK64mtx6cwjM4iSsLHJPNBqoAgGOVoIdJMqaKX4++plhOtdd4JksdqzlDibgPx6B/M2w== dependencies: "@types/mdast" "^3.0.3" "@types/unist" "^2.0.3" @@ -11692,6 +11812,13 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +rechoir@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== + dependencies: + resolve "^1.9.0" + redux@^4.0.0, redux@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" @@ -11746,7 +11873,15 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: +regexp.prototype.flags@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexp.prototype.flags@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -11914,14 +12049,6 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -11963,6 +12090,14 @@ resolve@^1.10.0, resolve@^1.12.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8. is-core-module "^2.0.0" path-parse "^1.0.6" +resolve@^1.9.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -12213,7 +12348,7 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -selfsigned@^1.10.7: +selfsigned@^1.10.8: version "1.10.8" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== @@ -12349,6 +12484,13 @@ sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shallowequal@^1.0.2, shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -12411,7 +12553,7 @@ side-channel@^1.0.2: es-abstract "^1.18.0-next.0" object-inspect "^1.8.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -12547,26 +12689,26 @@ socket.io@^2.2.0: socket.io-client "2.4.0" socket.io-parser "~3.4.0" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== 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.4.7" -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + 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" sort-keys@^1.0.0: version "1.1.2" @@ -12922,6 +13064,14 @@ string.prototype.trimend@^1.0.1: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string.prototype.trimstart@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" @@ -12930,6 +13080,14 @@ string.prototype.trimstart@^1.0.1: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -13490,6 +13648,16 @@ umd@^3.0.0: resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== +unbox-primitive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" + integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.0" + has-symbols "^1.0.0" + which-boxed-primitive "^1.0.1" + undeclared-identifiers@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" @@ -13666,10 +13834,10 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== +url-parse@^1.4.3, url-parse@^1.4.7: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -13687,10 +13855,10 @@ url@^0.11.0, url@~0.11.0: punycode "1.3.2" querystring "0.2.0" -use-debounce@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-5.2.0.tgz#3cb63f5c46f40092c570356e441dbc016ffb2f8b" - integrity sha512-lW4tbPsTnvPKYqOYXp5xZ7SP7No/ARLqqQqoyRKuSzP0HxR9arhSAhznXUZFoNPWDRij8fog+N6sYbjb8c3kzw== +use-debounce@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/use-debounce/-/use-debounce-5.2.1.tgz#7366543c769f1de3e92104dee64de5c4dfddfd33" + integrity sha512-BQG5uEypYHd/ASF6imzYR8tJHh5qGn28oZG/5iVAbljV6MUrfyT4jzxA8co+L+WLCT1U8VBwzzvlb3CHmUDpEA== use-local-storage-state@^6.0.0: version "6.0.3" @@ -13778,7 +13946,7 @@ uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1: +v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== @@ -13884,23 +14052,23 @@ watchify@3.11.1: through2 "^2.0.0" xtend "^4.0.0" -watchpack-chokidar2@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" - integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== dependencies: chokidar "^2.1.8" watchpack@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" - integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" optionalDependencies: chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.0" + watchpack-chokidar2 "^2.0.1" wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" @@ -13919,27 +14087,30 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^3.3.12: - version "3.3.12" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a" - integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag== +webpack-cli@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.5.0.tgz#b5213b84adf6e1f5de6391334c9fa53a48850466" + integrity sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q== dependencies: - chalk "^2.4.2" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.1" - findup-sync "^3.0.0" - global-modules "^2.0.0" - import-local "^2.0.0" - interpret "^1.4.0" - loader-utils "^1.4.0" - supports-color "^6.1.0" - v8-compile-cache "^2.1.1" - yargs "^13.3.2" + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.0.1" + "@webpack-cli/info" "^1.2.2" + "@webpack-cli/serve" "^1.3.0" + colorette "^1.2.1" + commander "^7.0.0" + enquirer "^2.3.6" + execa "^5.0.0" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + v8-compile-cache "^2.2.0" + webpack-merge "^5.7.3" webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== dependencies: memory-fs "^0.4.1" mime "^2.4.4" @@ -13947,10 +14118,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== +webpack-dev-server@^3.11.2: + version "3.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -13972,11 +14143,11 @@ webpack-dev-server@^3.11.0: 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" @@ -13994,6 +14165,14 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" +webpack-merge@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" + integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" @@ -14002,10 +14181,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.44.1: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== +webpack@^4.46.0: + version "4.46.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542" + integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" @@ -14015,7 +14194,7 @@ webpack@^4.44.1: ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" + enhanced-resolve "^4.5.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" @@ -14031,14 +14210,7 @@ webpack@^4.44.1: watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" - integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= - dependencies: - websocket-extensions ">=0.1.1" - -websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== @@ -14078,6 +14250,17 @@ whatwg-url@^8.0.0: tr46 "^2.0.2" webidl-conversions "^6.1.0" +which-boxed-primitive@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -14088,7 +14271,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -14102,6 +14285,11 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"