diff --git a/.eslintrc.js b/.eslintrc.js
index 1e2a8a6776c..1f45dc58ad6 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -43,7 +43,7 @@ module.exports = {
'@typescript-eslint/no-empty-function': 'off',
'@typescript-eslint/no-inferrable-types': 'off',
'@typescript-eslint/ban-ts-comment': 'off',
- 'no-shadow': 'warn',
+ 'no-shadow': 'error',
curly: 'error',
},
overrides: [
diff --git a/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx b/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx
index 56da2d8f426..fa05cbb2ae2 100644
--- a/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx
+++ b/frontend/src/lib/components/PropertyFilters/components/OperatorValueSelect.tsx
@@ -38,16 +38,16 @@ export function OperatorValueSelect({
<>
}
onChange={(newOperator: PropertyOperator) => {
setCurrentOperator(newOperator)
if (isOperatorFlag(newOperator)) {
onChange(newOperator, newOperator)
- } else if (isOperatorFlag(currentOperator || 'exact')) {
+ } else if (isOperatorFlag(currentOperator || PropertyOperator.Exact)) {
onChange(newOperator, null)
} else if (
- isOperatorMulti(currentOperator || 'exact') &&
+ isOperatorMulti(currentOperator || PropertyOperator.Exact) &&
!isOperatorMulti(newOperator) &&
Array.isArray(value)
) {
@@ -59,16 +59,16 @@ export function OperatorValueSelect({
{...operatorSelectProps}
/>
- {!isOperatorFlag(currentOperator || 'exact') && (
+ {!isOperatorFlag(currentOperator || PropertyOperator.Exact) && (
{
- onChange(currentOperator || 'exact', newValue)
+ onChange(currentOperator || PropertyOperator.Exact, newValue)
}}
/>
@@ -90,7 +90,7 @@ export function OperatorSelect({ operator, operators, onChange, ...props }: Oper
labelInValue
value={{
value: operator || '=',
- label: operatorMap[operator || 'exact'],
+ label: operatorMap[operator || PropertyOperator.Exact],
}}
placeholder="Property key"
onChange={(_value, op) => {
@@ -100,8 +100,8 @@ export function OperatorSelect({ operator, operators, onChange, ...props }: Oper
{...props}
>
{operators.map((op) => (
-
- {operatorMap[op || 'exact']}
+
+ {operatorMap[op || PropertyOperator.Exact]}
))}
diff --git a/frontend/src/lib/logic/selectBoxLogic.ts b/frontend/src/lib/logic/selectBoxLogic.ts
index a61e66f3086..fb68b81c7cc 100644
--- a/frontend/src/lib/logic/selectBoxLogic.ts
+++ b/frontend/src/lib/logic/selectBoxLogic.ts
@@ -151,7 +151,7 @@ export const selectBoxLogic = kea item.name[0] === '$').length
+ extraProps.count_posthog_events = item.dataSource.filter(({ name }) => name[0] === '$').length
}
}
eventUsageLogic.actions.reportEventSearched(search, extraProps)
diff --git a/frontend/src/scenes/insights/InsightDateFilter/index.tsx b/frontend/src/scenes/insights/InsightDateFilter/InsightDateFilter.tsx
similarity index 79%
rename from frontend/src/scenes/insights/InsightDateFilter/index.tsx
rename to frontend/src/scenes/insights/InsightDateFilter/InsightDateFilter.tsx
index aef00840f51..f8ce51ba180 100644
--- a/frontend/src/scenes/insights/InsightDateFilter/index.tsx
+++ b/frontend/src/scenes/insights/InsightDateFilter/InsightDateFilter.tsx
@@ -17,9 +17,9 @@ export function InsightDateFilter(props: DateFilterProps): JSX.Element {
{...props}
dateFrom={dateFrom}
dateTo={dateTo}
- onChange={(dateFrom, dateTo) => {
- setDates(dateFrom, dateTo)
- props.onChange?.(dateFrom, dateTo)
+ onChange={(changedDateFrom, changedDateTo) => {
+ setDates(changedDateFrom, changedDateTo)
+ props.onChange?.(changedDateFrom, changedDateTo)
}}
/>
diff --git a/frontend/src/scenes/insights/InsightDateFilter/index.ts b/frontend/src/scenes/insights/InsightDateFilter/index.ts
new file mode 100644
index 00000000000..64227d89d64
--- /dev/null
+++ b/frontend/src/scenes/insights/InsightDateFilter/index.ts
@@ -0,0 +1 @@
+export * from './InsightDateFilter'
diff --git a/frontend/src/scenes/insights/InsightTabs/FunnelTab/FunnelTab.tsx b/frontend/src/scenes/insights/InsightTabs/FunnelTab/FunnelTab.tsx
index 5ff1bf9c5ce..56115d0d696 100644
--- a/frontend/src/scenes/insights/InsightTabs/FunnelTab/FunnelTab.tsx
+++ b/frontend/src/scenes/insights/InsightTabs/FunnelTab/FunnelTab.tsx
@@ -45,7 +45,7 @@ export function FunnelTab({ newUI }: FunnelTabProps): JSX.Element {
Steps
): void => setFilters(filters, false)}
+ setFilters={(newFilters: Record): void => setFilters(newFilters, false)}
typeKey={`EditFunnel-action`}
hideMathSelector={true}
buttonCopy="Add funnel step"
diff --git a/frontend/src/scenes/insights/InsightTabs/RetentionTab.tsx b/frontend/src/scenes/insights/InsightTabs/RetentionTab.tsx
index 554a84e0628..933cc5a7efb 100644
--- a/frontend/src/scenes/insights/InsightTabs/RetentionTab.tsx
+++ b/frontend/src/scenes/insights/InsightTabs/RetentionTab.tsx
@@ -42,11 +42,11 @@ function DefaultRetentionTab(): JSX.Element {
const { setFilters } = useActions(retentionTableLogic({ dashboardItemId: null }))
const entityLogic = entityFilterLogic({
- setFilters: (filters: FilterType) => {
- if (filters.events && filters.events.length > 0) {
- setFilters({ target_entity: filters.events[0] })
- } else if (filters.actions && filters.actions.length > 0) {
- setFilters({ target_entity: filters.actions[0] })
+ setFilters: (newFilters: FilterType) => {
+ if (newFilters.events && newFilters.events.length > 0) {
+ setFilters({ target_entity: newFilters.events[0] })
+ } else if (newFilters.actions && newFilters.actions.length > 0) {
+ setFilters({ target_entity: newFilters.actions[0] })
} else {
setFilters({ target_entity: null })
}
@@ -58,11 +58,11 @@ function DefaultRetentionTab(): JSX.Element {
})
const entityLogicReturning = entityFilterLogic({
- setFilters: (filters: FilterType) => {
- if (filters.events && filters.events.length > 0) {
- setFilters({ returning_entity: filters.events[0] })
- } else if (filters.actions && filters.actions.length > 0) {
- setFilters({ returning_entity: filters.actions[0] })
+ setFilters: (newFilters: FilterType) => {
+ if (newFilters.events && newFilters.events.length > 0) {
+ setFilters({ returning_entity: newFilters.events[0] })
+ } else if (newFilters.actions && newFilters.actions.length > 0) {
+ setFilters({ returning_entity: newFilters.actions[0] })
} else {
setFilters({ returning_entity: null })
}
diff --git a/frontend/src/scenes/insights/InsightTabs/RetentionTabHorizontal.tsx b/frontend/src/scenes/insights/InsightTabs/RetentionTabHorizontal.tsx
index 22afd127a35..8959374e5f9 100644
--- a/frontend/src/scenes/insights/InsightTabs/RetentionTabHorizontal.tsx
+++ b/frontend/src/scenes/insights/InsightTabs/RetentionTabHorizontal.tsx
@@ -36,11 +36,11 @@ export function RetentionTabHorizontal({ annotationsToCreate }: BaseTabProps): J
const isSmallScreen = screens.xs || (screens.sm && !screens.md)
const entityLogic = entityFilterLogic({
- setFilters: (filters: FilterType) => {
- if (filters.events && filters.events.length > 0) {
- setFilters({ target_entity: filters.events[0] })
- } else if (filters.actions && filters.actions.length > 0) {
- setFilters({ target_entity: filters.actions[0] })
+ setFilters: (newFilters: FilterType) => {
+ if (newFilters.events && newFilters.events.length > 0) {
+ setFilters({ target_entity: newFilters.events[0] })
+ } else if (newFilters.actions && newFilters.actions.length > 0) {
+ setFilters({ target_entity: newFilters.actions[0] })
} else {
setFilters({ target_entity: null })
}
@@ -52,11 +52,11 @@ export function RetentionTabHorizontal({ annotationsToCreate }: BaseTabProps): J
})
const entityLogicReturning = entityFilterLogic({
- setFilters: (filters: FilterType) => {
- if (filters.events && filters.events.length > 0) {
- setFilters({ returning_entity: filters.events[0] })
- } else if (filters.actions && filters.actions.length > 0) {
- setFilters({ returning_entity: filters.actions[0] })
+ setFilters: (newFilters: FilterType) => {
+ if (newFilters.events && newFilters.events.length > 0) {
+ setFilters({ returning_entity: newFilters.events[0] })
+ } else if (newFilters.actions && newFilters.actions.length > 0) {
+ setFilters({ returning_entity: newFilters.actions[0] })
} else {
setFilters({ returning_entity: null })
}
diff --git a/frontend/src/scenes/insights/InsightTabs/TrendTab/Formula.tsx b/frontend/src/scenes/insights/InsightTabs/TrendTab/Formula.tsx
index 6abbfaf0988..495b9fc0554 100644
--- a/frontend/src/scenes/insights/InsightTabs/TrendTab/Formula.tsx
+++ b/frontend/src/scenes/insights/InsightTabs/TrendTab/Formula.tsx
@@ -27,13 +27,13 @@ export function Formula({
autoFocus={autoFocus}
value={value}
onChange={(e) => {
- let value = e.target.value.toLocaleUpperCase()
+ let changedValue = e.target.value.toLocaleUpperCase()
// Only allow typing of allowed characters
- value = value
+ changedValue = changedValue
.split('')
.filter((d) => /^[a-zA-Z\ \-\*\^0-9\+\/\(\)]+$/g.test(d))
.join('')
- setValue(value)
+ setValue(changedValue)
}}
onFocus={() => onFocus && onFocus(true, value)}
onBlur={() => !filters.formula && onFocus && onFocus(false, value)}
diff --git a/frontend/src/scenes/insights/LineGraph/LineGraph.js b/frontend/src/scenes/insights/LineGraph/LineGraph.js
index 013628a7fdb..8d34566d0ab 100644
--- a/frontend/src/scenes/insights/LineGraph/LineGraph.js
+++ b/frontend/src/scenes/insights/LineGraph/LineGraph.js
@@ -102,15 +102,15 @@ export function LineGraph({
}, [myLineChart.current, size, type, annotationsCondition])
function calculateBoundaries() {
- const leftExtent = myLineChart.current.scales['x-axis-0'].left
- const rightExtent = myLineChart.current.scales['x-axis-0'].right
- const ticks = myLineChart.current.scales['x-axis-0'].ticks.length
- const delta = rightExtent - leftExtent
- const interval = delta / (ticks - 1)
- const topExtent = myLineChart.current.scales['x-axis-0'].top + 8
- setLeftExtent(leftExtent)
- setInterval(interval)
- setTopExtent(topExtent)
+ const boundaryLeftExtent = myLineChart.current.scales['x-axis-0'].left
+ const boundaryRightExtent = myLineChart.current.scales['x-axis-0'].right
+ const boundaryTicks = myLineChart.current.scales['x-axis-0'].ticks.length
+ const boundaryDelta = boundaryRightExtent - boundaryLeftExtent
+ const boundaryInterval = boundaryDelta / (boundaryTicks - 1)
+ const boundaryTopExtent = myLineChart.current.scales['x-axis-0'].top + 8
+ setLeftExtent(boundaryLeftExtent)
+ setInterval(boundaryInterval)
+ setTopExtent(boundaryTopExtent)
}
function processDataset(dataset, index) {
diff --git a/frontend/src/scenes/insights/SaveModal/SaveModal.tsx b/frontend/src/scenes/insights/SaveModal/SaveModal.tsx
index 3656544a2ae..966d0bf06ba 100644
--- a/frontend/src/scenes/insights/SaveModal/SaveModal.tsx
+++ b/frontend/src/scenes/insights/SaveModal/SaveModal.tsx
@@ -20,9 +20,9 @@ export const SaveModal: React.FC = (props) => {
onCancel()
}
- function _onSubmit(input: string): void {
+ function _onSubmit(submittedInput: string): void {
setInput('')
- onSubmit(input)
+ onSubmit(submittedInput)
}
return (
diff --git a/frontend/src/scenes/persons/MergePerson.tsx b/frontend/src/scenes/persons/MergePerson.tsx
index f8abd2eb60f..0898989e667 100644
--- a/frontend/src/scenes/persons/MergePerson.tsx
+++ b/frontend/src/scenes/persons/MergePerson.tsx
@@ -63,10 +63,10 @@ export function MergePerson({
{persons.results &&
persons.results
.filter((p) => p.uuid !== person.uuid)
- .map((person) =>
- person.id ? (
-
- {person.name}
+ .map((p) =>
+ p.id ? (
+
+ {p.name}
) : undefined
)}
diff --git a/frontend/src/scenes/sessions/SessionDetails.tsx b/frontend/src/scenes/sessions/SessionDetails.tsx
index f4a7a7702f9..e83c1b535ac 100644
--- a/frontend/src/scenes/sessions/SessionDetails.tsx
+++ b/frontend/src/scenes/sessions/SessionDetails.tsx
@@ -78,9 +78,9 @@ export function SessionDetails({ session }: { session: SessionType }): JSX.Eleme
hideOnSinglePage: !events || events.length < 10,
showSizeChanger: true,
pageSizeOptions: ['10', '20', '50', '100', '200', '500'],
- onChange: (page, pageSize) => {
- setPage(page)
- setPageSize(pageSize || 50)
+ onChange: (changedPage, changedPageSize) => {
+ setPage(changedPage)
+ setPageSize(changedPageSize || 50)
},
}}
expandable={{
diff --git a/frontend/src/scenes/sessions/filters/DurationFilter.tsx b/frontend/src/scenes/sessions/filters/DurationFilter.tsx
index eef151c7efa..05f2079dac4 100644
--- a/frontend/src/scenes/sessions/filters/DurationFilter.tsx
+++ b/frontend/src/scenes/sessions/filters/DurationFilter.tsx
@@ -1,12 +1,12 @@
import React, { useState } from 'react'
import { useActions } from 'kea'
-import { RecordingPropertyFilter } from '~/types'
+import { PropertyOperator, RecordingDurationFilter } from '~/types'
import { Input, Select } from 'antd'
import { OperatorSelect } from 'lib/components/PropertyFilters/components/OperatorValueSelect'
import { sessionsFiltersLogic } from 'scenes/sessions/filters/sessionsFiltersLogic'
interface Props {
- filter: RecordingPropertyFilter
+ filter: RecordingDurationFilter
selector: number
}
@@ -25,9 +25,9 @@ export function DurationFilter({ filter, selector }: Props): JSX.Element {
<>
{
- updateFilter({ ...filter, operator: operator as 'lt' | 'gt' }, selector)
+ updateFilter({ ...filter, operator }, selector)
}}
/>
diff --git a/frontend/src/scenes/sessions/filters/EditFiltersPanel.tsx b/frontend/src/scenes/sessions/filters/EditFiltersPanel.tsx
index a969eb0a099..feec11236e9 100644
--- a/frontend/src/scenes/sessions/filters/EditFiltersPanel.tsx
+++ b/frontend/src/scenes/sessions/filters/EditFiltersPanel.tsx
@@ -3,7 +3,7 @@ import { Button, Card, Divider, Space } from 'antd'
import { useActions, useValues } from 'kea'
import { SaveOutlined, SearchOutlined } from '@ant-design/icons'
import { CloseButton } from 'lib/components/CloseButton'
-import { Entity, EventTypePropertyFilter, PersonPropertyFilter, PropertyFilter, RecordingPropertyFilter } from '~/types'
+import { Entity, PersonPropertyFilter, PropertyFilter } from '~/types'
import { sessionsFiltersLogic } from 'scenes/sessions/filters/sessionsFiltersLogic'
import { EventPropertyFilter } from 'scenes/sessions/filters/EventPropertyFilter'
import { PersonFilter } from 'scenes/sessions/filters/UserFilter'
@@ -180,14 +180,12 @@ export function EditFiltersPanel({ onSubmit }: Props): JSX.Element | null {
- {['event_type', 'action_type'].includes(item.type) && (
-
- )}
- {item.type === 'person' && (
-
+ {(item.type === 'event_type' || item.type === 'action_type') && (
+
)}
+ {item.type === 'person' && }
{item.type === 'recording' && item.key === 'duration' && (
-
+
)}
{filters.length > 1 && andTag(index < filters.length - 1)}
diff --git a/frontend/src/scenes/sessions/filters/EventPropertyFilter.tsx b/frontend/src/scenes/sessions/filters/EventPropertyFilter.tsx
index 45b695e2f94..a20589b0bbb 100644
--- a/frontend/src/scenes/sessions/filters/EventPropertyFilter.tsx
+++ b/frontend/src/scenes/sessions/filters/EventPropertyFilter.tsx
@@ -1,14 +1,14 @@
import React from 'react'
import { useActions, useValues } from 'kea'
import { PropertySelect } from 'lib/components/PropertyFilters/components/PropertySelect'
-import { EventTypePropertyFilter } from '~/types'
+import { ActionTypePropertyFilter, EventTypePropertyFilter, PropertyOperator } from '~/types'
import { keyMapping } from 'lib/components/PropertyKeyInfo'
import { OperatorValueSelect } from 'lib/components/PropertyFilters/components/OperatorValueSelect'
import { sessionsFiltersLogic } from 'scenes/sessions/filters/sessionsFiltersLogic'
import { propertyDefinitionsLogic } from 'scenes/events/propertyDefinitionsLogic'
interface Props {
- filter: EventTypePropertyFilter
+ filter: EventTypePropertyFilter | ActionTypePropertyFilter
selector: number
}
@@ -36,7 +36,9 @@ export function EventPropertyFilter({ filter, selector }: Props): JSX.Element {
updateFilter(
{
...filter,
- properties: [{ operator: 'exact', value: null, ...property, type: 'event', key }],
+ properties: [
+ { operator: PropertyOperator.Exact, value: null, ...property, type: 'event', key },
+ ],
},
selector
)
@@ -49,11 +51,11 @@ export function EventPropertyFilter({ filter, selector }: Props): JSX.Element {
propkey={property.key}
operator={property.operator}
value={property.value}
- onChange={(operator, value) => {
+ onChange={(operator, changedValue) => {
updateFilter(
{
...filter,
- properties: [{ ...property, operator, value }],
+ properties: [{ ...property, operator, value: changedValue }],
},
selector
)
diff --git a/frontend/src/scenes/sessions/filters/SessionsFilterBox.tsx b/frontend/src/scenes/sessions/filters/SessionsFilterBox.tsx
index 97b238b0773..d4b813d4f04 100644
--- a/frontend/src/scenes/sessions/filters/SessionsFilterBox.tsx
+++ b/frontend/src/scenes/sessions/filters/SessionsFilterBox.tsx
@@ -100,7 +100,7 @@ export function SessionsFilterBox({ selector }: { selector: FilterSelector }): J
id: cohort.id,
cohort,
})),
- renderInfo: function cohorts({ item }) {
+ renderInfo: function renderCohorts({ item }) {
return (
<>
Cohorts
@@ -144,7 +144,7 @@ export function SessionsFilterBox({ selector }: { selector: FilterSelector }): J
name: name,
usage_count: count,
})),
- renderInfo: function userProperty({ item }) {
+ renderInfo: function renderUserProperty({ item }) {
return (
<>
User property
diff --git a/frontend/src/scenes/sessions/filters/constants.ts b/frontend/src/scenes/sessions/filters/constants.ts
index ea039e62e5e..7f0a91dd5da 100644
--- a/frontend/src/scenes/sessions/filters/constants.ts
+++ b/frontend/src/scenes/sessions/filters/constants.ts
@@ -1,10 +1,10 @@
-import { SessionsPropertyFilter } from '~/types'
+import { PropertyOperator, SessionsPropertyFilter } from '~/types'
export const SESSIONS_WITH_RECORDINGS_FILTER: SessionsPropertyFilter = {
type: 'recording',
key: 'duration',
value: 0,
- operator: 'gt',
+ operator: PropertyOperator.GreaterThan,
label: 'Recording duration',
}
diff --git a/frontend/src/scenes/sessions/filters/sessionsFiltersLogic.tsx b/frontend/src/scenes/sessions/filters/sessionsFiltersLogic.tsx
index 5b58759f840..2d2549973ff 100644
--- a/frontend/src/scenes/sessions/filters/sessionsFiltersLogic.tsx
+++ b/frontend/src/scenes/sessions/filters/sessionsFiltersLogic.tsx
@@ -4,7 +4,7 @@ import api from 'lib/api'
import { toast } from 'react-toastify'
import { SESSIONS_WITH_RECORDINGS_FILTER, SESSIONS_WITH_UNSEEN_RECORDINGS } from 'scenes/sessions/filters/constants'
import { sessionsFiltersLogicType } from './sessionsFiltersLogicType'
-import { SessionsPropertyFilter } from '~/types'
+import { PropertyOperator, SessionsPropertyFilter } from '~/types'
export type FilterSelector = number | string
@@ -146,11 +146,13 @@ export const sessionsFiltersLogic = kea<
listeners: ({ actions, values }) => ({
dropdownSelected: ({ type, id, label }) => {
if (values.openFilter !== null) {
- if (type === 'action_type' || type === 'event_type' || type === 'cohort') {
+ if (type === 'action_type' || type === 'event_type') {
actions.updateFilter({ type, key: 'id', value: id, label }, values.openFilter)
+ } else if (type === 'cohort') {
+ actions.updateFilter({ type, key: 'id', value: Number(id), label }, values.openFilter)
} else if (type === 'person') {
actions.updateFilter(
- { type, key: id.toString(), value: null, label, operator: 'exact' },
+ { type, key: id.toString(), value: null, label, operator: PropertyOperator.Exact },
values.openFilter
)
} else if (type === 'recording' && id === 'duration') {
diff --git a/frontend/src/toolbar/actions/SelectorCount.tsx b/frontend/src/toolbar/actions/SelectorCount.tsx
index c6117a4d109..70d88cfcc78 100644
--- a/frontend/src/toolbar/actions/SelectorCount.tsx
+++ b/frontend/src/toolbar/actions/SelectorCount.tsx
@@ -7,16 +7,16 @@ interface SelectorCountProps {
export function SelectorCount({ selector }: SelectorCountProps): JSX.Element {
const [matches, selectorError] = useMemo(() => {
- let selectorError = false
- let matches = 0
+ let _selectorError = false
+ let _matches = 0
if (selector) {
try {
- matches = querySelectorAllDeep(selector).length
+ _matches = querySelectorAllDeep(selector).length
} catch {
- selectorError = true
+ _selectorError = true
}
}
- return [matches, selectorError]
+ return [_matches, _selectorError]
}, [selector])
return (
diff --git a/frontend/src/toolbar/actions/UrlMatchingToggle.tsx b/frontend/src/toolbar/actions/UrlMatchingToggle.tsx
index ca7b728fdef..d047889d81a 100644
--- a/frontend/src/toolbar/actions/UrlMatchingToggle.tsx
+++ b/frontend/src/toolbar/actions/UrlMatchingToggle.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import { Button } from 'antd'
-import { ActionStepType } from '~/types'
+import { ActionStepType, ActionStepUrlMatching } from '~/types'
interface UrlMatchingToggleProps {
value?: ActionStepType['url_matching']
@@ -13,14 +13,20 @@ export function UrlMatchingToggle({ value, onChange, style }: UrlMatchingToggleP
-
diff --git a/frontend/src/toolbar/elements/FocusRect.tsx b/frontend/src/toolbar/elements/FocusRect.tsx
index 0a50f0ac560..1eaa5deba04 100644
--- a/frontend/src/toolbar/elements/FocusRect.tsx
+++ b/frontend/src/toolbar/elements/FocusRect.tsx
@@ -34,17 +34,17 @@ export function FocusRect({ rect }: { rect: DOMRect }): JSX.Element {
return (
<>
- {rects.map((rect) => (
+ {rects.map((r) => (
}
diff --git a/package.json b/package.json
index a6b26d51e30..4df8bc29483 100644
--- a/package.json
+++ b/package.json
@@ -138,7 +138,7 @@
"sass-loader": "^10.0.1",
"style-loader": "^1.2.1",
"ts-node": "^9.1.1",
- "typescript": "^4.2.4",
+ "typescript": "^4.3.2",
"webpack": "^4.46.0",
"webpack-cli": "^4.5.0",
"webpack-dev-server": "^3.11.2"
diff --git a/yarn.lock b/yarn.lock
index 3326d1215e4..c552df24856 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -11772,10 +11772,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typescript@^4.2.4:
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961"
- integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==
+typescript@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805"
+ integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==
unbox-primitive@^1.0.0:
version "1.0.0"