From bc0f242dc59725ed8788de84e9e0ffcbd2e5f36f Mon Sep 17 00:00:00 2001 From: Boris Yordanov Date: Tue, 30 Mar 2021 14:34:01 +0100 Subject: [PATCH] chore: resolve react-hooks/exhaustive-deps warnings (#1991) --- cypress/component/Autocomplete.spec.tsx | 7 +- package.json | 2 +- .../src/FieldWrapper/FieldWrapper.tsx | 2 +- packages/picasso-forms/src/Form/Form.tsx | 75 ++++++++--------- .../src/TreeView/PointNode/PointNode.tsx | 4 +- .../picasso-lab/src/TreeView/TreeView.tsx | 13 +-- packages/picasso-lab/src/TreeView/useNodes.ts | 5 +- packages/picasso-lab/src/TreeView/useTree.ts | 2 +- packages/picasso-lab/src/TreeView/useZoom.ts | 2 +- .../story/DynamicOptions.example.tsx | 3 +- packages/picasso/src/Modal/Modal.tsx | 12 ++- .../use-enter-or-space-keydown-handler.ts | 5 +- .../picasso/src/SidebarItem/SidebarItem.tsx | 4 +- packages/picasso/src/utils/use-width-of.ts | 4 +- packages/shared/src/Favicon/Favicon.tsx | 2 +- .../shared/src/Picasso/config/breakpoints.ts | 1 + yarn.lock | 81 +++++++++---------- 17 files changed, 112 insertions(+), 112 deletions(-) diff --git a/cypress/component/Autocomplete.spec.tsx b/cypress/component/Autocomplete.spec.tsx index 3428d72054..a23a4f7dba 100644 --- a/cypress/component/Autocomplete.spec.tsx +++ b/cypress/component/Autocomplete.spec.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback } from 'react' +import React, { useCallback, useState } from 'react' import { mount } from '@cypress/react' import debounce from 'debounce' import { @@ -67,9 +67,10 @@ export const DynamicOptionsAutocompleteExample = () => { const [options, setOptions] = useState([]) const [loading, setLoading] = useState(false) + // eslint-disable-next-line react-hooks/exhaustive-deps const handleChangeDebounced = useCallback( - debounce(async (inputValue: string) => { - const newOptions = await loadOptions(inputValue.trim().toLowerCase()) + debounce(async (newValue: string) => { + const newOptions = await loadOptions(newValue.trim().toLowerCase()) setLoading(false) setOptions(newOptions) diff --git a/package.json b/package.json index 5c1f341d33..490273c46d 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "@svgr/cli": "^5.5.0", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^5.0.3", - "@toptal/browserslist-config": "^0.1.0-alpha.2", + "@toptal/browserslist-config": "^1.1.0", "@toptal/davinci": "^1.0.63", "@types/debounce": "^1.2.0", "@types/esprima": "^4.0.2", diff --git a/packages/picasso-forms/src/FieldWrapper/FieldWrapper.tsx b/packages/picasso-forms/src/FieldWrapper/FieldWrapper.tsx index 312c2d82cf..af423dcc89 100644 --- a/packages/picasso-forms/src/FieldWrapper/FieldWrapper.tsx +++ b/packages/picasso-forms/src/FieldWrapper/FieldWrapper.tsx @@ -184,7 +184,7 @@ const FieldWrapper = < clearValidators(name) } } - }, []) + }, [clearValidators, formConfig.validateOnSubmit, name]) const { meta, input } = useField(name, { validate: formConfig.validateOnSubmit ? undefined : validators, diff --git a/packages/picasso-forms/src/Form/Form.tsx b/packages/picasso-forms/src/Form/Form.tsx index 4eb21138c7..15fade8617 100644 --- a/packages/picasso-forms/src/Form/Form.tsx +++ b/packages/picasso-forms/src/Form/Form.tsx @@ -1,9 +1,9 @@ -import React, { useCallback, useMemo, ReactNode, useRef } from 'react' +import React, { useMemo, ReactNode, useRef } from 'react' import { Form as FinalForm, FormProps as FinalFormProps } from 'react-final-form' -import { FormApi, SubmissionErrors, getIn, setIn } from 'final-form' +import { FormApi, SubmissionErrors, getIn, setIn, AnyObject } from 'final-form' import { Form as PicassoForm, Container } from '@toptal/picasso' import { useNotifications } from '@toptal/picasso/utils' @@ -31,8 +31,6 @@ import { createFormContext } from './FormContext' -type AnyObject = Record - export type Props = FinalFormProps & { autoComplete?: HTMLFormElement['autocomplete'] successSubmitMessage?: ReactNode @@ -42,10 +40,10 @@ export type Props = FinalFormProps & { const getValidationErrors = ( validators: Validators, - formValues: Record, - form: FormApi> -) => { - let errors: Record | undefined + formValues: any, + form: FormApi +): SubmissionErrors | void => { + let errors: SubmissionErrors Object.entries(validators).forEach(([key, validator]) => { const fieldValue = getIn(formValues, key) @@ -57,15 +55,15 @@ const getValidationErrors = ( const error = validator(fieldValue, formValues, fieldMetaState) - if (error) { - errors = setIn(errors || {}, key, error) + if (errors && error) { + errors = setIn(errors, key, error) } }) return errors } -export const Form = >(props: Props) => { +export const Form = (props: Props) => { const { children, autoComplete, @@ -105,36 +103,31 @@ export const Form = >(props: Props) => { showError(failedSubmitMessage, undefined, { persist: true }) } - const handleSubmit = useCallback( - async (values, form, callback) => { - const validationErrors = getValidationErrors( - validationObject.current.getValidators(), - values, - form - ) - - if (validationErrors) { - return validationErrors - } - - const submissionErrors = await onSubmit(values, form, callback) - - if (!submissionErrors) { - showSuccessNotification() - } else { - showErrorNotification(submissionErrors) - } - - return submissionErrors - }, - [ - failedSubmitMessage, - onSubmit, - showError, - showSuccess, - successSubmitMessage - ] - ) + const handleSubmit = async ( + values: T, + form: FormApi, + callback?: (errors?: SubmissionErrors) => void + ) => { + const validationErrors = getValidationErrors( + validationObject.current.getValidators(), + values, + form + ) + + if (validationErrors) { + return validationErrors + } + + const submissionErrors = await onSubmit(values, form, callback) + + if (!submissionErrors) { + showSuccessNotification() + } else { + showErrorNotification(submissionErrors) + } + + return submissionErrors + } return ( diff --git a/packages/picasso-lab/src/TreeView/PointNode/PointNode.tsx b/packages/picasso-lab/src/TreeView/PointNode/PointNode.tsx index 7631506b8b..5d56218fc1 100644 --- a/packages/picasso-lab/src/TreeView/PointNode/PointNode.tsx +++ b/packages/picasso-lab/src/TreeView/PointNode/PointNode.tsx @@ -27,7 +27,7 @@ export const PointNode = forwardRef( const xPosition = node.x - nodeWidth / 2 return `translate(${xPosition},${node.y})` - }, [node.x, node.y]) + }, [node.x, node.y, nodeWidth]) useLayoutEffect(() => { if (nodeRef.current) { @@ -41,7 +41,7 @@ export const PointNode = forwardRef( }) } } - }, [nodeRef.current, dimensions]) + }, [dimensions, node.ref]) return ( diff --git a/packages/picasso-lab/src/TreeView/TreeView.tsx b/packages/picasso-lab/src/TreeView/TreeView.tsx index c8cd94ff8c..e407a2e274 100644 --- a/packages/picasso-lab/src/TreeView/TreeView.tsx +++ b/packages/picasso-lab/src/TreeView/TreeView.tsx @@ -51,17 +51,20 @@ export const TreeView = (props: Props) => { const classes = useStyles() const rootRef = createRef() const { nodes, links, selectedNode } = useTree({ data }) + const center = useMemo<{ x: number; y: number } | undefined>(() => { if (!selectedNode) { return undefined } - const { x: xPosition, y: yPosition, data } = selectedNode + + const { x: xPosition, y: yPosition, data: nodeData } = selectedNode return { - x: xPosition + (data.selectedOffset?.x || 0), - y: yPosition + (data.selectedOffset?.y || 0) + x: xPosition + (nodeData.selectedOffset?.x || 0), + y: yPosition + (nodeData.selectedOffset?.y || 0) } - }, [selectedNode, selectedNode?.data]) + }, [selectedNode]) + const { handleZoom, zoom } = useZoom({ rootRef, scaleExtent, @@ -81,7 +84,7 @@ export const TreeView = (props: Props) => { zoom }) setInitialized(true) - }, [rootRef, initialized, zoom]) + }, [rootRef, initialized, zoom, updateState]) return (
diff --git a/packages/picasso-lab/src/TreeView/useNodes.ts b/packages/picasso-lab/src/TreeView/useNodes.ts index a6699a9425..8ebdd58744 100644 --- a/packages/picasso-lab/src/TreeView/useNodes.ts +++ b/packages/picasso-lab/src/TreeView/useNodes.ts @@ -65,7 +65,7 @@ export const useNodes = ( const [initialized, setInitializedState] = useState(false) const initialNodes = useMemo(() => { return getDynamicNodes(rootNode.descendants()) - }, []) + }, [rootNode]) const dynamicNodes = useMemo(() => { const latestNodes = rootNode.descendants() @@ -85,9 +85,10 @@ export const useNodes = ( }) }, [rootNode, initialNodes]) - // we have to render nodes twice: first for the initial showing data, and the second one — with the correct positions. const nodes = useMemo(() => { return updateNodesYPosition(dynamicNodes) + // we have to render nodes twice: first for the initial showing data, and the second one — with the correct positions. + // eslint-disable-next-line react-hooks/exhaustive-deps }, [dynamicNodes, initialized]) useLayoutEffect(() => { diff --git a/packages/picasso-lab/src/TreeView/useTree.ts b/packages/picasso-lab/src/TreeView/useTree.ts index 7af4db8827..5d4e7f5c0e 100644 --- a/packages/picasso-lab/src/TreeView/useTree.ts +++ b/packages/picasso-lab/src/TreeView/useTree.ts @@ -60,7 +60,7 @@ export const useTree = ({ leaves, nodeWidth: fullNodeWidth }) - }, [data]) + }, [data, fullNodeWidth]) const nodes = useNodes(rootNode) diff --git a/packages/picasso-lab/src/TreeView/useZoom.ts b/packages/picasso-lab/src/TreeView/useZoom.ts index 97a561371a..0e2c561ea1 100644 --- a/packages/picasso-lab/src/TreeView/useZoom.ts +++ b/packages/picasso-lab/src/TreeView/useZoom.ts @@ -63,7 +63,7 @@ export const useZoom = ({ .duration(750) .call(zoom.translateTo, center.x, center.y) } - }, [rootRef.current, zoom, initialized, center]) + }, [zoom, initialized, center, rootRef, initialScale]) return { zoom, diff --git a/packages/picasso/src/Autocomplete/story/DynamicOptions.example.tsx b/packages/picasso/src/Autocomplete/story/DynamicOptions.example.tsx index 07044ffba6..1e25ee9568 100644 --- a/packages/picasso/src/Autocomplete/story/DynamicOptions.example.tsx +++ b/packages/picasso/src/Autocomplete/story/DynamicOptions.example.tsx @@ -1,4 +1,4 @@ -import React, { useState, useCallback } from 'react' +import React, { useCallback, useState } from 'react' import debounce from 'debounce' import { Autocomplete, AutocompleteItem } from '@toptal/picasso' import { isSubstring } from '@toptal/picasso/utils' @@ -38,6 +38,7 @@ const Example = () => { const [options, setOptions] = useState() const [loading, setLoading] = useState(false) + // eslint-disable-next-line react-hooks/exhaustive-deps const handleChangeDebounced = useCallback( debounce(async (inputValue: string) => { const newOptions = await loadOptions(inputValue.trim().toLowerCase()) diff --git a/packages/picasso/src/Modal/Modal.tsx b/packages/picasso/src/Modal/Modal.tsx index cd80319c4e..6073b4b9c8 100644 --- a/packages/picasso/src/Modal/Modal.tsx +++ b/packages/picasso/src/Modal/Modal.tsx @@ -112,10 +112,7 @@ const generateKey = (() => { })() // eslint-disable-next-line react/display-name -export const Modal = forwardRef(function Modal( - props, - ref -) { +export const Modal = forwardRef(function Modal(props, ref) { const { children, open, @@ -175,23 +172,24 @@ export const Modal = forwardRef(function Modal( const resetBodyOverflow = () => { document.body.style.overflow = bodyOverflow.current } + const currentModal = modalId.current if (open) { // TODO: to be improved as part of https://toptal-core.atlassian.net/browse/FX-1069 bodyOverflow.current = document.body.style.overflow document.body.style.overflow = 'hidden' - defaultManager.add(modalId.current) + defaultManager.add(currentModal) } else { resetBodyOverflow() - defaultManager.remove(modalId.current) + defaultManager.remove(currentModal) } return () => { resetBodyOverflow() - defaultManager.remove(modalId.current) + defaultManager.remove(currentModal) } }, [open]) diff --git a/packages/picasso/src/Select/hooks/use-select-props/use-enter-or-space-keydown-handler/use-enter-or-space-keydown-handler.ts b/packages/picasso/src/Select/hooks/use-select-props/use-enter-or-space-keydown-handler/use-enter-or-space-keydown-handler.ts index 1e347e0b90..a7d9b3c0a5 100644 --- a/packages/picasso/src/Select/hooks/use-select-props/use-enter-or-space-keydown-handler/use-enter-or-space-keydown-handler.ts +++ b/packages/picasso/src/Select/hooks/use-select-props/use-enter-or-space-keydown-handler/use-enter-or-space-keydown-handler.ts @@ -43,11 +43,12 @@ const useEnterOrSpaceKeyDownHandler = < }, [ canOpen, - open, filteredOptions, highlightedIndex, closeOnEnter, - handleSelect + handleSelect, + open, + close ] ) diff --git a/packages/picasso/src/SidebarItem/SidebarItem.tsx b/packages/picasso/src/SidebarItem/SidebarItem.tsx index 496e18c70c..da3d361bb0 100644 --- a/packages/picasso/src/SidebarItem/SidebarItem.tsx +++ b/packages/picasso/src/SidebarItem/SidebarItem.tsx @@ -57,7 +57,7 @@ const useStyles = makeStyles(styles, { }) export const SidebarItem: OverridableComponent = memo( - forwardRef(function SidebarItem(props, ref) { + forwardRef(function SidebarItem (props, ref) { const { as, children, @@ -91,7 +91,7 @@ export const SidebarItem: OverridableComponent = memo( {menu} ), - [menu] + [index, menu] ) const titleCase = useTitleCase(propsTitleCase) diff --git a/packages/picasso/src/utils/use-width-of.ts b/packages/picasso/src/utils/use-width-of.ts index bd12fcb4e0..987ff677a2 100644 --- a/packages/picasso/src/utils/use-width-of.ts +++ b/packages/picasso/src/utils/use-width-of.ts @@ -8,6 +8,8 @@ export interface ReferenceObject { const useWidthOf = (element: T | null) => { const [menuWidth, setMenuWidth] = useState() + const offsetParent = element?.offsetParent + useLayoutEffect(() => { if (!element) { return @@ -15,7 +17,7 @@ const useWidthOf = (element: T | null) => { const { width } = element.getBoundingClientRect() setMenuWidth(`${width}px`) - }, [element, element?.offsetParent]) + }, [element, offsetParent]) return menuWidth } diff --git a/packages/shared/src/Favicon/Favicon.tsx b/packages/shared/src/Favicon/Favicon.tsx index 6d77af479c..670482fd51 100644 --- a/packages/shared/src/Favicon/Favicon.tsx +++ b/packages/shared/src/Favicon/Favicon.tsx @@ -45,7 +45,7 @@ export const Favicon = ({ environment }: Props) => { } loadIcons() - }, [resolvedEnvironment]) + }, [resolvedEnvironment, setIcons]) if (resolvedEnvironment === 'test') { // do not load favicons in tests (e.g. in e2e) diff --git a/packages/shared/src/Picasso/config/breakpoints.ts b/packages/shared/src/Picasso/config/breakpoints.ts index caa35f9bc6..feb5e9fcf3 100644 --- a/packages/shared/src/Picasso/config/breakpoints.ts +++ b/packages/shared/src/Picasso/config/breakpoints.ts @@ -184,6 +184,7 @@ export const useScreens = () => { return defaultValue }, + // eslint-disable-next-line react-hooks/exhaustive-deps [screenKey] ) } diff --git a/yarn.lock b/yarn.lock index 5aa5964737..992005a1a4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -356,9 +356,9 @@ integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== "@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.4", "@babel/parser@^7.4.5", "@babel/parser@^7.8.3", "@babel/parser@^7.9.0": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.12.tgz#ba320059420774394d3b0c0233ba40e4250b81d1" - integrity sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw== + version "7.13.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" + integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== "@babel/plugin-proposal-async-generator-functions@^7.13.8", "@babel/plugin-proposal-async-generator-functions@^7.2.0", "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.13.8" @@ -4618,10 +4618,10 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@toptal/browserslist-config@^0.1.0-alpha.2": - version "0.1.0-alpha.2" - resolved "https://registry.yarnpkg.com/@toptal/browserslist-config/-/browserslist-config-0.1.0-alpha.2.tgz#c0acea1a7348799ed38ad6ecebf2a5d4ca3660b4" - integrity sha512-dSu1+Tf0nCa3qmTvGn+Kg6vwjbuXhZ7QIihax79zJKsXLYjYqny/YZAn3vrdNVGv9H9NvOM4qBVdrPDdVPVEVg== +"@toptal/browserslist-config@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@toptal/browserslist-config/-/browserslist-config-1.1.0.tgz#4af4c004076c5aa780645fca0baaedff80ad933b" + integrity sha512-XLGaKMR2datU2rdww98jlQfLmbWsOYaEAuOMTbSXO2Wk2q4nNX9c4qIdYXjnzuDN9IkVVq6NJbC+0g1NZ+CS1w== "@toptal/davinci-bootstrap@^2.1.63": version "2.1.63" @@ -5538,12 +5538,12 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^4.17.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.19.0.tgz#56f8da9ee118fe9763af34d6a526967234f6a7f0" - integrity sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw== + version "4.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.18.0.tgz#50fbce93211b5b690895d20ebec6fe8db48af1f6" + integrity sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ== dependencies: - "@typescript-eslint/experimental-utils" "4.19.0" - "@typescript-eslint/scope-manager" "4.19.0" + "@typescript-eslint/experimental-utils" "4.18.0" + "@typescript-eslint/scope-manager" "4.18.0" debug "^4.1.1" functional-red-black-tree "^1.0.1" lodash "^4.17.15" @@ -5551,15 +5551,15 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.19.0", "@typescript-eslint/experimental-utils@^4.0.1": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.19.0.tgz#9ca379919906dc72cb0fcd817d6cb5aa2d2054c6" - integrity sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA== +"@typescript-eslint/experimental-utils@4.18.0", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.18.0.tgz#ed6c955b940334132b17100d2917449b99a91314" + integrity sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.19.0" - "@typescript-eslint/types" "4.19.0" - "@typescript-eslint/typescript-estree" "4.19.0" + "@typescript-eslint/scope-manager" "4.18.0" + "@typescript-eslint/types" "4.18.0" + "@typescript-eslint/typescript-estree" "4.18.0" eslint-scope "^5.0.0" eslint-utils "^2.0.0" @@ -5581,23 +5581,23 @@ "@typescript-eslint/types" "4.13.0" "@typescript-eslint/visitor-keys" "4.13.0" -"@typescript-eslint/scope-manager@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz#5e0b49eca4df7684205d957c9856f4e720717a4f" - integrity sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g== +"@typescript-eslint/scope-manager@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.18.0.tgz#d75b55234c35d2ff6ac945758d6d9e53be84a427" + integrity sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ== dependencies: - "@typescript-eslint/types" "4.19.0" - "@typescript-eslint/visitor-keys" "4.19.0" + "@typescript-eslint/types" "4.18.0" + "@typescript-eslint/visitor-keys" "4.18.0" "@typescript-eslint/types@4.13.0": version "4.13.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.13.0.tgz#6a7c6015a59a08fbd70daa8c83dfff86250502f8" integrity sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ== -"@typescript-eslint/types@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.19.0.tgz#5181d5d2afd02e5b8f149ebb37ffc8bd7b07a568" - integrity sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA== +"@typescript-eslint/types@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.18.0.tgz#bebe323f81f2a7e2e320fac9415e60856267584a" + integrity sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A== "@typescript-eslint/typescript-estree@2.34.0": version "2.34.0" @@ -5626,13 +5626,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz#8a709ffa400284ab72df33376df085e2e2f61147" - integrity sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA== +"@typescript-eslint/typescript-estree@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz#756d3e61da8c16ab99185532c44872f4cd5538cb" + integrity sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg== dependencies: - "@typescript-eslint/types" "4.19.0" - "@typescript-eslint/visitor-keys" "4.19.0" + "@typescript-eslint/types" "4.18.0" + "@typescript-eslint/visitor-keys" "4.18.0" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -5647,12 +5647,12 @@ "@typescript-eslint/types" "4.13.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@4.19.0": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz#cbea35109cbd9b26e597644556be4546465d8f7f" - integrity sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A== +"@typescript-eslint/visitor-keys@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz#4e6fe2a175ee33418318a029610845a81e2ff7b6" + integrity sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw== dependencies: - "@typescript-eslint/types" "4.19.0" + "@typescript-eslint/types" "4.18.0" eslint-visitor-keys "^2.0.0" "@webassemblyjs/ast@1.9.0": @@ -15411,7 +15411,6 @@ lodash._baseuniq@~4.6.0: lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" - integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= lodash._reinterpolate@^3.0.0: version "3.0.0"