diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000000000000000000000000000000000000..b512c09d476623ff4bf8d0d63c29b784925dbdf8 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index bfb6fbe13759988ff367c2faea5cc97844fc7c48..505e8ccc4a0f0dfb5dcca0a057d6d080898fa37a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,12 +1,14 @@ module.exports = { parser: '@typescript-eslint/parser', // Specifies the ESLint parser extends: [ + 'eslint:recommended', 'plugin:react/recommended', // Uses the recommended rules from @eslint-plugin-react + 'plugin:react-hooks/recommended', 'plugin:@typescript-eslint/eslint-recommended', // Uses the recommended rules from @typescript-eslint/eslint-plugin 'prettier', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and displays prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. - 'plugin:react-hooks/recommended', ], + plugins: ['@typescript-eslint'], parserOptions: { ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features sourceType: 'module', // Allows for the use of imports @@ -17,11 +19,23 @@ module.exports = { rules: { // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs '@typescript-eslint/explicit-function-return-type': 'off', + // Note: you must disable the base rule as it can report incorrect errors + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'warn', + + 'no-case-declarations': 'warn', + camelcase: 'warn', 'react/prop-types': 'warn', + 'no-console': 'off', + '@typescript-eslint/no-explicit-any': 'warn', }, settings: { react: { version: 'detect', // Tells eslint-plugin-react to automatically detect the version of React to use }, }, + env: { + browser: true, + node: true, + }, } diff --git a/package.json b/package.json index 4dc92ffc51ce9311fae9b3e0d08463fc943e926d..480e4b4a6abd3358b5f91ea1328e7590ab3a8f39 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "cozy-ui": "68.9.1", "d3": "^5.15.0", "detect-browser": "^5.1.1", - "eslint-config-cozy-app": "4.2.0", + "eslint-config-cozy-app": "5.1.0", "file-saver": "^2.0.5", "global": "^4.4.0", "handlebars": "^4.7.7", @@ -99,8 +99,8 @@ "@types/react-redux": "^7.1.11", "@types/react-router-dom": "^5.1.3", "@types/redux-mock-store": "^1.0.2", - "@typescript-eslint/eslint-plugin": "^5.30.0", - "@typescript-eslint/parser": "^5.30.0", + "@typescript-eslint/eslint-plugin": "^5.37.0", + "@typescript-eslint/parser": "^5.37.0", "babel-polyfill": "^6.26.0", "babel-preset-cozy-app": "2.0.3", "copy-webpack-plugin": "6.4.1", @@ -112,7 +112,7 @@ "eslint": "^8.18.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "7.30.1", + "eslint-plugin-react": "7.31.8", "eslint-plugin-react-hooks": "^4.2.0", "git-directory-deploy": "1.5.1", "husky": "^8.0.1", diff --git a/src/components/Action/ActionBegin.tsx b/src/components/Action/ActionBegin.tsx index ff9375ddae09e3087d4aeac47c5046cc1b8d2a5c..6a2c5dcb8279c077a44099600fa9067c0bc32a4d 100644 --- a/src/components/Action/ActionBegin.tsx +++ b/src/components/Action/ActionBegin.tsx @@ -101,7 +101,8 @@ const ActionBegin: React.FC<ActionBeginProps> = ({ </div> <div className="action-duration text-18"> {t('action.duration', { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase + // eslint-disable-next-line camelcase smart_count: currentAction.actionDuration, })} </div> diff --git a/src/components/Action/ActionModal.tsx b/src/components/Action/ActionModal.tsx index 4ae600afff45ff7b75fab5642e23d72ef8f07755..98cee53cdff3296cd4912cdf9eaf6527f2396c9a 100644 --- a/src/components/Action/ActionModal.tsx +++ b/src/components/Action/ActionModal.tsx @@ -59,7 +59,7 @@ const ActionModal: React.FC<ActionModalProps> = ({ <Icon icon={chronoMini} size={75} /> <div className="action-title text-16-normal"> {t('action.duration', { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase smart_count: action.actionDuration, })} </div> diff --git a/src/components/Action/ActionOnGoing.tsx b/src/components/Action/ActionOnGoing.tsx index 5253eaa6765133bc1ceb5f83ddb1ccb1039e30a8..16e4379b858860c7d902a90d49ccc36f25beb049 100644 --- a/src/components/Action/ActionOnGoing.tsx +++ b/src/components/Action/ActionOnGoing.tsx @@ -31,7 +31,7 @@ const ActionOnGoing: React.FC<ActionOnGoingProps> = ({ userAction.startDate.diffNow('days').days ) const progress = ratio * progressionInDays - if (progress === 0 || progress === -0) { + if (progress === 0) { return `linear-gradient(90deg, #121212 50%,transparent 50%), linear-gradient(110deg, #58ffff 50%, transparent 50%)` } else if (progress === circle) { return `linear-gradient(90deg, #58ffff 50%, #58ffff 50%)` @@ -78,7 +78,7 @@ const ActionOnGoing: React.FC<ActionOnGoingProps> = ({ <> <div className="duration text-18-normal"> {t('action.duration', { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase smart_count: userAction.ecogesture.actionDuration, })} </div> diff --git a/src/components/Analysis/PieChart.tsx b/src/components/Analysis/PieChart.tsx index d831ee1e8f82095f8c593f399c2b178e2fb358e2..4abe35d04b1bdb4de647914d9b4cefa8f8543ead 100644 --- a/src/components/Analysis/PieChart.tsx +++ b/src/components/Analysis/PieChart.tsx @@ -45,7 +45,6 @@ const PieChart: React.FC<PieProps> = ({ const groupWithData = group.selectAll('g.arc').data(data) const colors = ['#D87B39', '#3A98EC', '#45D1B8'] - // eslint-disable-next-line @typescript-eslint/no-explicit-any const createArc: any = d3 .arc() .innerRadius(innerRadius) diff --git a/src/components/Challenge/ChallengeCardLast.tsx b/src/components/Challenge/ChallengeCardLast.tsx index 345753b9662de26739f3db7b74f15497b461f5c4..20e6b3badc6f3a0ac4223f88dfd879e6cfacdf10 100644 --- a/src/components/Challenge/ChallengeCardLast.tsx +++ b/src/components/Challenge/ChallengeCardLast.tsx @@ -7,8 +7,6 @@ import { Button } from '@material-ui/core' import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions' import { useDispatch } from 'react-redux' -interface ChallengeCardLastProps {} - const ChallengeCardLast: React.FC = () => { const { t } = useI18n() const dispatch = useDispatch() diff --git a/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx b/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx index 74f271ffd71581b9e202aff8bcb5fa1fc0637989..31bf92185c0694392301ece6e18260f6de790754 100644 --- a/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx +++ b/src/components/ConsumptionVisualizer/DataloadConsumptionVisualizer.spec.tsx @@ -9,7 +9,6 @@ import { } from '../../../tests/__mocks__/store' import DataloadConsumptionVisualizer from './DataloadConsumptionVisualizer' import { FluidType } from 'enum/fluid.enum' -import { DateTime } from 'luxon' import { baseDataLoad } from '../../../tests/__mocks__/datachartData.mock' import { Dataload } from 'models' import { BrowserRouter as Router } from 'react-router-dom' diff --git a/src/components/Duel/DuelOngoing.tsx b/src/components/Duel/DuelOngoing.tsx index 8b78f74c796c8c267cf57647b175928623911ba0..171d0d946be1aac7a2053a3224151a1e4dd46bb4 100644 --- a/src/components/Duel/DuelOngoing.tsx +++ b/src/components/Duel/DuelOngoing.tsx @@ -155,9 +155,8 @@ const DuelOngoing: React.FC<DuelOngoingProps> = ({ let subscribed = true async function populateData() { if (isFinished) { - const dataloads: Dataload[] = await challengeService.getUserChallengeDataload( - userChallenge - ) + const dataloads: Dataload[] = + await challengeService.getUserChallengeDataload(userChallenge) if (subscribed) { setfinishedDataLoad(dataloads) } @@ -183,11 +182,13 @@ const DuelOngoing: React.FC<DuelOngoingProps> = ({ <div className="duel-goal text-18-normal"> {t('duel.goal1', { durationInDays, + // eslint-disable-next-line camelcase smart_count: durationInDays, })} <span> </span> {t('duel.goal2', { title, + // eslint-disable-next-line camelcase smart_count: title, })} </div> diff --git a/src/components/Duel/DuelUnlocked.tsx b/src/components/Duel/DuelUnlocked.tsx index bac87b312f5f3b27c98346f9f17dc9089584c6d9..18cafb63c82946dddecdc0fc39ea7df5fb4fa911 100644 --- a/src/components/Duel/DuelUnlocked.tsx +++ b/src/components/Duel/DuelUnlocked.tsx @@ -72,11 +72,11 @@ const DuelUnlocked: React.FC<DuelUnlockedProps> = ({ <div className="duel-title text-16-normal"> {userChallenge.duel.title} </div> - <div className="duel-description text-20-italic">{`\"${description}\"`}</div> + <div className="duel-description text-20-italic">{`"${description}"`}</div> <div className="duel-average-info text-18-normal"> {`${t('duel.average_info', { average, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase smart_count: average, })}`} </div> diff --git a/src/components/EcogestureSelection/EcogestureSelection.tsx b/src/components/EcogestureSelection/EcogestureSelection.tsx index 43a2b0c6f22ae2e628fb18eeac557f28a06aaee9..f0749606ee9f75d5cba721a0621af4a4f99c0bf9 100644 --- a/src/components/EcogestureSelection/EcogestureSelection.tsx +++ b/src/components/EcogestureSelection/EcogestureSelection.tsx @@ -63,7 +63,7 @@ const EcogestureSelection: React.FC = () => { const updatedList: Ecogesture[] = ecogestureList updatedList[indexEcogesture] = updatedEcogesture setEcogestureList(updatedList) - setIndexEcogesture((prev) => prev + 1) + setIndexEcogesture(prev => prev + 1) }, [ecogestureList, ecogestureService, indexEcogesture] ) @@ -127,14 +127,14 @@ const EcogestureSelection: React.FC = () => { titleKey={t('common.title_ecogestures_choice')} isNotKey={true} displayBackArrow={indexEcogesture === 0 ? false : true} - backFunction={() => setIndexEcogesture((prev) => prev - 1)} + backFunction={() => setIndexEcogesture(prev => prev - 1)} /> <Header setHeaderHeight={defineHeaderHeight} desktopTitleKey={t('common.title_ecogestures_choice')} displayBackArrow={indexEcogesture === 0 ? false : true} isNotKey={true} - backFunction={() => setIndexEcogesture((prev) => prev - 1)} + backFunction={() => setIndexEcogesture(prev => prev - 1)} > <div className="eg-selection-header"> {indexEcogesture <= ecogestureList.length - 1 diff --git a/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx b/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx index e8058004449d08f5219e4fe420a27bb70afaf2ef..d5178c08d8fd1cef700043178c4be516345ae81c 100644 --- a/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx +++ b/src/components/EcogestureSelection/EcogestureSelectionRestart.tsx @@ -27,7 +27,7 @@ const EcogestureSelectionRestart: React.FC<EcogestureSelectionRestartProps> = ({ <div className="content"> <div className="title text-21-bold"> {t('ecogesture_selection.title', { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase smart_count: listLength, })} </div> diff --git a/src/components/Exploration/ExplorationView.spec.tsx b/src/components/Exploration/ExplorationView.spec.tsx index af8c18175b1be1c10018d36a4e447df74aaddaf1..8852f059e2fff1c9677acb69e7d37c964573d039 100644 --- a/src/components/Exploration/ExplorationView.spec.tsx +++ b/src/components/Exploration/ExplorationView.spec.tsx @@ -3,7 +3,6 @@ import { shallow } from 'enzyme' import * as reactRedux from 'react-redux' import ExplorationView from './ExplorationView' import { userChallengeData } from '../../../tests/__mocks__/userChallengeData.mock' -import { UserQuizState } from 'enum/userQuiz.enum' import { challengeStateData } from '../../../tests/__mocks__/challengeStateData.mock' import ExplorationFinished from './ExplorationFinished' import ExplorationError from './ExplorationError' diff --git a/src/components/Header/CozyBar.tsx b/src/components/Header/CozyBar.tsx index e25b1c9703a9ff6b99783160c2ab0ce820a6e218..ba259603d494ed79dad9424893fe9615bcb92e55 100644 --- a/src/components/Header/CozyBar.tsx +++ b/src/components/Header/CozyBar.tsx @@ -4,11 +4,7 @@ import { useSelector, useDispatch } from 'react-redux' import { AppStore } from 'store' import { updateModalIsFeedbacksOpen } from 'store/modal/modal.actions' import { useHistory } from 'react-router-dom' -import Icon from 'cozy-ui/transpiled/react/Icon' - import { ScreenType } from 'enum/screen.enum' -import HammerLeft from 'assets/icons/ico/hammer-left.svg' -import HammerRight from 'assets/icons/ico/hammer-right.svg' import BackArrowIcon from 'assets/icons/ico/back-arrow.svg' import FeedbacksIcon from 'assets/icons/ico/feedbacks.svg' import StyledIconButton from 'components/CommonKit/IconButton/StyledIconButton' diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 2d10f4b38c84a13755a986c65c063c8966831717..47a5a307c4516f6743d0839601c49157951a8d04 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -12,9 +12,6 @@ import IconButton from '@material-ui/core/IconButton' import Icon from 'cozy-ui/transpiled/react/Icon' import BackArrowIcon from 'assets/icons/ico/back-arrow.svg' import FeedbacksIcon from 'assets/icons/ico/feedbacks.svg' -import HammerLeft from 'assets/icons/ico/hammer-left.svg' -import HammerRight from 'assets/icons/ico/hammer-right.svg' -import { EcogestureStatus } from 'enum/ecogesture.enum' interface HeaderProps { textKey?: string diff --git a/src/components/Home/ConsumptionView.spec.tsx b/src/components/Home/ConsumptionView.spec.tsx index 1692736e7d99cba2e99ac6a3701b00b80cf215bf..99ff6a0d2275bab61c87ec15a963e64c3b249ff6 100644 --- a/src/components/Home/ConsumptionView.spec.tsx +++ b/src/components/Home/ConsumptionView.spec.tsx @@ -11,8 +11,6 @@ import * as chartActions from 'store/chart/chart.actions' import { FluidState, FluidType } from 'enum/fluid.enum' import { TimeStep } from 'enum/timeStep.enum' import StyledSpinner from 'components/CommonKit/Spinner/StyledSpinner' -import FluidButtons from 'components/Home/FluidButtons' -import KonnectorViewerList from 'components/Konnector/KonnectorViewerList' import ConsumptionView from './ConsumptionView' import { FluidStatus } from 'models' import { mockTestProfile1 } from '../../../tests/__mocks__/profileType.mock' diff --git a/src/components/Home/ConsumptionView.tsx b/src/components/Home/ConsumptionView.tsx index 43fae72cd5aeadb5f885a2e12451a1f52effdf6d..f5a76f6c10db82b91a59591b26b3389dee8a5b8d 100644 --- a/src/components/Home/ConsumptionView.tsx +++ b/src/components/Home/ConsumptionView.tsx @@ -54,7 +54,6 @@ const ConsumptionView: React.FC<ConsumptionViewProps> = ({ const [consentExpiredFluids, setconsentExpiredFluids] = useState<FluidType[]>( [] ) - /* eslint-disable @typescript-eslint/no-non-null-assertion */ const updatekey = fluidType !== FluidType.MULTIFLUID && fluidStatus[fluidType].lastDataDate diff --git a/src/components/Hooks/useExploration.tsx b/src/components/Hooks/useExploration.tsx index 9d9d4e0fa81f4f8567f68f838c26376927239c8a..eac9ba9bcd82b15968ed34a08aeb36b86f50c26b 100644 --- a/src/components/Hooks/useExploration.tsx +++ b/src/components/Hooks/useExploration.tsx @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/camelcase */ import { useState, useEffect, Dispatch, SetStateAction } from 'react' import { useDispatch, useSelector } from 'react-redux' import { Client, useClient } from 'cozy-client' diff --git a/src/components/Onboarding/WelcomeModal.spec.tsx b/src/components/Onboarding/WelcomeModal.spec.tsx index 9c46bca76a57a7ca522fc35693d1ef3aadab36fd..7b5ac1ddb016e327f90442c446d15c3f1e2dc899 100644 --- a/src/components/Onboarding/WelcomeModal.spec.tsx +++ b/src/components/Onboarding/WelcomeModal.spec.tsx @@ -26,7 +26,7 @@ jest.mock('cozy-client', () => { jest.mock('components/Hooks/userInstanceSettings', () => { return jest.fn(() => ({ data: { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase public_name: 'mocked_public_name', }, })) diff --git a/src/migrations/migration.data.ts b/src/migrations/migration.data.ts index d9ed8ddc31cc1717d55ed4f4fbe542693ece0831..d8661b43cca9db00c3a3dea764e2a94525571f41 100644 --- a/src/migrations/migration.data.ts +++ b/src/migrations/migration.data.ts @@ -281,7 +281,7 @@ export const migrations: Migration[] = [ docTypes: FLUIDPRICES_DOCTYPE, isCreate: true, isDeprecated: true, - run: async (_client: Client, docs: any[]): Promise<any> => { + run: async (): Promise<any> => { return [] }, }, @@ -491,7 +491,7 @@ export const migrations: Migration[] = [ releaseNotes: null, docTypes: FLUIDPRICES_DOCTYPE, isDeprecated: true, - run: async (_client: Client, docs: any[]): Promise<any> => { + run: async (): Promise<any> => { return [] }, }, diff --git a/src/migrations/migration.service.spec.ts b/src/migrations/migration.service.spec.ts index b7ec09378803f8ce99fa428ea2593ef361207ee5..88d32046efdcbec6962f860d9230b96e655094f5 100644 --- a/src/migrations/migration.service.spec.ts +++ b/src/migrations/migration.service.spec.ts @@ -43,7 +43,7 @@ describe('Migration service', () => { appVersion: '1.2.4', description: 'Removing mailToken from profil', docTypes: PROFILE_DOCTYPE, - run: (docs: any[]): Profile[] => { + run: (): Profile[] => { return [] }, }, @@ -66,7 +66,7 @@ describe('Migration service', () => { appVersion: '1.2.4', description: 'Removing mailToken from profil', docTypes: PROFILE_DOCTYPE, - run: (docs: any[]): Profile[] => { + run: (): Profile[] => { return [] }, }, @@ -93,7 +93,7 @@ describe('Migration service', () => { appVersion: '1.2.4', description: 'Removing mailToken from profil', docTypes: PROFILE_DOCTYPE, - run: (docs: any[]): Profile[] => { + run: (): Profile[] => { return [] }, }, diff --git a/src/migrations/migration.spec.ts b/src/migrations/migration.spec.ts index 6bd3a670c4cfdc13c4328222b1eb0c0bf2a47069..69e6de6ddb0c6d44737cf6981ffa7d62ac002c68 100644 --- a/src/migrations/migration.spec.ts +++ b/src/migrations/migration.spec.ts @@ -1,4 +1,4 @@ -import { Client, QueryResult } from 'cozy-client' +import { QueryResult } from 'cozy-client' import { FLUIDPRICES_DOCTYPE, PROFILE_DOCTYPE } from 'doctypes' import { FluidPrice, Profile } from 'models' import { Schema } from 'models/schema.models' @@ -204,7 +204,7 @@ describe('migration create', () => { docTypes: FLUIDPRICES_DOCTYPE, releaseNotes: null, isCreate: true, - run: async (tmpMock, docs: any[]): Promise<FluidPrice[]> => { + run: async (): Promise<FluidPrice[]> => { return [] }, } diff --git a/src/models/account.model.ts b/src/models/account.model.ts index d3905a953e9915e7022d6705684976f07d190310..c3ae32e01a1938ee4deaaea0ae7c6b0fb712c70b 100644 --- a/src/models/account.model.ts +++ b/src/models/account.model.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ export interface Account extends AccountAttributes { _id: string id?: string diff --git a/src/models/exploration.model.ts b/src/models/exploration.model.ts index b07f5294ca8f7b1c01eac3aa191ee5f1a43f3d61..6cd6e208121d089067285a3a363e1b3361009771 100644 --- a/src/models/exploration.model.ts +++ b/src/models/exploration.model.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ import { UserExplorationState, UserExplorationType, diff --git a/src/models/partnersInfo.model.ts b/src/models/partnersInfo.model.ts index 4104584679938c76460fb70c49cd1fa40931deeb..5f3ae266cdbc1f342807eea53b6ab0ce052a2c98 100644 --- a/src/models/partnersInfo.model.ts +++ b/src/models/partnersInfo.model.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ export interface PartnersInfo { grdf_failure: boolean enedis_failure: boolean diff --git a/src/models/trigger.model.ts b/src/models/trigger.model.ts index 04b54376c2c37c7cba6d8782745e80078504845f..a0c30ff3454409758689609e1653d73355e9ffe7 100644 --- a/src/models/trigger.model.ts +++ b/src/models/trigger.model.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ export interface Trigger extends TriggerAttributes { _id: string domain?: string diff --git a/src/models/userInstanceSettings.model.ts b/src/models/userInstanceSettings.model.ts index d1e2936a942ee9e57a37a016ea0868168fc96ae8..4202bb58fae14c72c0c7b7068bc306bd66821f26 100644 --- a/src/models/userInstanceSettings.model.ts +++ b/src/models/userInstanceSettings.model.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ export interface UserInstanceSettingsAttributes { auth_mode?: string auto_update?: boolean diff --git a/src/services/consumption.service.spec.ts b/src/services/consumption.service.spec.ts index 4b69dd97648bd26e976824462fd1b709eaa931eb..5542c8073b278b954ef74d194d9fd11498b0cb24 100644 --- a/src/services/consumption.service.spec.ts +++ b/src/services/consumption.service.spec.ts @@ -153,6 +153,7 @@ describe('Consumption service', () => { FluidType.WATER, FluidType.GAS, ] + for (const fluidType of fluidTypes) { mockFetchFluidData.mockResolvedValueOnce(mockFetchDataActual) mockFetchFluidData.mockResolvedValueOnce(mockFetchDataComparison) @@ -309,6 +310,7 @@ describe('Consumption service', () => { FluidType.WATER, FluidType.GAS, ] + for (const fluidtype of fluidTypes) { mockFetchFluidData.mockResolvedValueOnce(mockFetchDataActual) mockFetchFluidData.mockResolvedValueOnce(mockFetchDataComparison) diff --git a/src/services/consumption.service.ts b/src/services/consumption.service.ts index cdb594de248c046f0e8dc517a550da1ca6f08cfc..18db7623b1e58e4685dde2a9462ededf81ebd27d 100644 --- a/src/services/consumption.service.ts +++ b/src/services/consumption.service.ts @@ -20,7 +20,6 @@ import ConsumptionValidatorService from 'services/consumptionValidator.service' import ConverterService from 'services/converter.service' import QueryRunnerService from 'services/queryRunner.service' -// eslint-disable-next-line @typescript-eslint/interface-name-prefix export interface ISingleFluidChartData { chartData: Datachart | null chartFluid: FluidType diff --git a/src/services/consumptionFormatter.service.ts b/src/services/consumptionFormatter.service.ts index 33f4e5d99ca25b03e5b1adee2dd6604219b28aad..4b438dd72b8a187dadc68963a735baa9b71aef2d 100644 --- a/src/services/consumptionFormatter.service.ts +++ b/src/services/consumptionFormatter.service.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/interface-name-prefix */ import { DataloadState } from 'enum/dataload.enum' import { FluidType } from 'enum/fluid.enum' import { TimeStep } from 'enum/timeStep.enum' @@ -189,7 +188,6 @@ export default class ConsumptionFormatterService { switch (timeStep) { case TimeStep.HALF_AN_HOUR: return { minutes: 30 } - case TimeStep.HALF_AN_HOUR: case TimeStep.DAY: return { days: 1 } case TimeStep.MONTH: diff --git a/src/services/dateChart.service.ts b/src/services/dateChart.service.ts index 6552c7e26ee6a2de0391699086b833958c447007..5e4e5f7393a8d819a5103cd35b49e39c51dbb3bd 100644 --- a/src/services/dateChart.service.ts +++ b/src/services/dateChart.service.ts @@ -2,7 +2,7 @@ import { DateTime, Interval } from 'luxon' import { FluidType } from 'enum/fluid.enum' import { TimeStep } from 'enum/timeStep.enum' -import { Datachart, Dataload, FluidConfig, TimePeriod } from 'models' +import { FluidConfig, TimePeriod } from 'models' import ConfigService from './fluidConfig.service' export default class DateChartService { diff --git a/src/services/exploration.service.ts b/src/services/exploration.service.ts index bd5dfa119cc753ac8dc680906c203317fabca346..1bc61c88c8ded0ec3b84af5f13c2bfb30144f64b 100644 --- a/src/services/exploration.service.ts +++ b/src/services/exploration.service.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/camelcase */ import { Client, QueryDefinition, QueryResult, Q } from 'cozy-client' import { EXPLORATION_DOCTYPE } from 'doctypes' import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum' @@ -213,7 +212,6 @@ export default class ExplorationService { case UserExplorationID.EXPLORATION002: case UserExplorationID.EXPLORATION004_0: case UserExplorationID.EXPLORATION005: - case UserExplorationID.EXPLORATION007: case UserExplorationID.EXPLORATION004: case UserExplorationID.EXPLORATION003: case UserExplorationID.EXPLORATION008: diff --git a/src/services/triggers.service.spec.ts b/src/services/triggers.service.spec.ts index 46ff93de25401813253bd16e18f446317ffc9414..549f87c6f458230066fad718c225b89e13de259a 100644 --- a/src/services/triggers.service.spec.ts +++ b/src/services/triggers.service.spec.ts @@ -97,7 +97,7 @@ describe('TriggerService service', () => { const mockResult = { data: { attributes: { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase current_state: triggerStateData, }, }, @@ -110,7 +110,7 @@ describe('TriggerService service', () => { it('should return null when current_state is empty', async () => { const mockResult = { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase data: { attributes: { current_state: null } }, } mockClient.getStackClient().fetchJSON.mockResolvedValueOnce(mockResult) diff --git a/src/services/triggers.service.ts b/src/services/triggers.service.ts index fae71f7d70999a8ab541182628d46b007dc6c559..12327b1cb55326a935055e4e596f1897d9198bf1 100644 --- a/src/services/triggers.service.ts +++ b/src/services/triggers.service.ts @@ -81,7 +81,7 @@ export default class TriggerService { const triggerState = await this._client .getStackClient() .fetchJSON('GET', `/jobs/triggers/${trigger._id}`) - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase return triggerState.data.attributes.current_state ? triggerState.data.attributes.current_state : null diff --git a/src/targets/browser/index.tsx b/src/targets/browser/index.tsx index d1e86be12e9e35ea6b5cd2946f0e108a69ec9e14..92e2c8fec643ce85948c9e3320c1228eeff5b74e 100644 --- a/src/targets/browser/index.tsx +++ b/src/targets/browser/index.tsx @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/no-var-requires */ -/* global cozy */ declare let cozy: any declare let __PIWIK_TRACKER_URL__: string declare let __PIWIK_SITEID__: number diff --git a/src/targets/services/aggregatorUsageEvents.ts b/src/targets/services/aggregatorUsageEvents.ts index c9473a704dc67b98b1bbe708fc16b2106ec3189b..2599c301592f58005bb59c91cd41d4700a5b83b0 100644 --- a/src/targets/services/aggregatorUsageEvents.ts +++ b/src/targets/services/aggregatorUsageEvents.ts @@ -171,9 +171,9 @@ const handleQuizStars = async (events: UsageEvent[], client: Client) => { measureName: DaccEvent.QUIZ_STARS, startDate: event.startDate ? event.startDate.toISODate() : '', value: parseInt(event.result ? event.result : '0'), - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { challenge_id: event.context ? event.context : '' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { quiz_id: event.target ? event.target : '' }, } const result = await sendIndicator(indicator, client) @@ -203,9 +203,9 @@ const calculSessionTime = async (events: UsageEvent[], client: Client) => { measureName: DaccEvent.SESSION_DURATION, startDate: startSessionDate.toISODate(), value: duration === undefined ? 0 : duration, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { number_pages: navigationCount.toString() }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { session_type: isFirstConnection ? 'first' : 'any' }, } await sendIndicator(sessionIndicator, client) @@ -229,9 +229,9 @@ const calculSessionTime = async (events: UsageEvent[], client: Client) => { measureName: DaccEvent.SESSION_DURATION, startDate: startSessionDate.toISODate(), value: duration === undefined ? 0 : duration, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { number_pages: navigationCount.toString() }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { session_type: isFirstConnection ? 'first' : 'any' }, } await sendIndicator(sessionIndicator, client) @@ -259,9 +259,9 @@ const calculPeriodBetweenFirstConnectionAndFirstChallenge = async ( value: challengeLaunchEvents[0].eventDate.diff( firstConnectionEvent.eventDate ).seconds, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { start_event: 'first_session' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { end_event: 'first_challenge' }, group3: { params: '' }, } @@ -307,9 +307,9 @@ const calculPeriodBetweenChallenge = async ( value: event.eventDate.diff( allEndedChallengeEvents[previousEndedChallengeIndex].eventDate ).seconds, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { start_event: 'first_session' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { end_event: 'first_challenge' }, group3: { params: event.target + ':' + prevChallengeId }, } @@ -527,12 +527,12 @@ const calculateConsumptionVariation = async (client: Client) => { consumptionData[fluidType].percentageVariation ? consumptionData[fluidType].percentageVariation : 0, // in percent - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { fluid_type: FluidType[fluidType].toLowerCase() }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { seniority: Math.round(seniority).toString() }, group3: { - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase fluid_usage: await buildProfileWithFuildType( client, getFluidType(FluidType[fluidType]) @@ -661,7 +661,7 @@ const sendEmailSubscription = async (client: Client) => { .startOf('day') .toISODate(), value: profile.sendAnalysisNotification ? 1 : 0, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { event_type: 'subscribed' }, } await sendIndicator(cameBackFromEmail, client) @@ -684,9 +684,9 @@ const sendHalfHourConsumption = async (client: Client) => { const halfHourConsumption: Indicator = { createdBy: 'ecolyo', measureName: DaccEvent.FLUID_DATA_GRANULARITY, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { fluid_type: 'electricity' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { granularity: 'half_hour' }, startDate: DateTime.local() .setZone('utc', { @@ -772,7 +772,7 @@ const sendKonnectorEvents = async (client: Client) => { const konnectorSuccess: Indicator = { createdBy: 'ecolyo', measureName: DaccEvent.PARTNER_SUCESS_MONTHLY, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { fluid_type: slug }, startDate: DateTime.local() .setZone('utc', { @@ -824,7 +824,7 @@ const sendKonnectorAttemptsMonthly = async (client: Client) => { const konnectorAttempts: Indicator = { createdBy: 'ecolyo', measureName: DaccEvent.UNINITIALIZED_KONNECTOR_ATTEMPTS_MONTHLY, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { slug: slug }, group2: { success: success }, startDate: DateTime.local() @@ -991,9 +991,9 @@ const aggregateEvents = async ( value: event.startDate ? event.eventDate.diff(event.startDate, ['seconds']).seconds : 0, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { start_event: 'start_challenge' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { end_event: 'end_challenge' }, group3: { params: event.target ? event.target : '' }, } @@ -1016,9 +1016,9 @@ const aggregateEvents = async ( value: event.startDate ? event.eventDate.diff(event.startDate, ['seconds']).seconds : 0, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { start_event: 'start_exploration' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { end_event: 'end_exploration' }, group3: { params: event.context + ':' + event.target }, } @@ -1038,9 +1038,9 @@ const aggregateEvents = async ( value: event.startDate ? event.eventDate.diff(event.startDate, ['seconds']).seconds : 0, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { start_event: 'start_action' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { end_event: 'end_action' }, group3: { params: event.target + ':' + event.context }, } @@ -1060,9 +1060,9 @@ const aggregateEvents = async ( value: event.startDate ? event.eventDate.diff(event.startDate, ['seconds']).seconds : 0, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { start_event: 'start_duel' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { end_event: 'end_duel' }, group3: { params: event.target + ':' + event.context + ':' + event.result, @@ -1105,9 +1105,9 @@ const aggregateEvents = async ( value: event.startDate ? event.eventDate.diff(event.startDate, ['seconds']).seconds : 0, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { start_event: 'start_duel' }, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group2: { end_event: 'start_duel' }, group3: { params: event.target + ':' + event.context + ':' + starNumbers, @@ -1135,7 +1135,7 @@ const aggregateEvents = async ( measureName: DaccEvent.SUMMARY_SUBSCRIPTION_MONTHLY, startDate: event.eventDate.toISODate(), value: 1, - // eslint-disable-next-line @typescript-eslint/camelcase + // eslint-disable-next-line camelcase group1: { event_type: 'email' }, } const result = await sendIndicator(cameBackFromEmail, client) diff --git a/src/targets/services/fluidsPrices.ts b/src/targets/services/fluidsPrices.ts index f8ba71ff41315bb690c8f18d97ab91454dd64509..09fd3376070000745f82b04ce27c48802db66803 100644 --- a/src/targets/services/fluidsPrices.ts +++ b/src/targets/services/fluidsPrices.ts @@ -152,6 +152,7 @@ const aggregatePrices = async ( ) await Promise.all( tsa.map(async ts => { + // eslint-disable-next-line no-async-promise-executor return new Promise<void>(async resolve => { let date: DateTime = DateTime.local() Object.assign(date, firstDate) @@ -285,6 +286,7 @@ const applyPrices = async (client: Client, fluidType: FluidType) => { // Hourly and daily prices await Promise.all( tsa.map(async timeStep => { + // eslint-disable-next-line no-async-promise-executor return new Promise<void>(async resolve => { let date: DateTime = DateTime.local().setZone('utc', { keepLocalTime: true, diff --git a/src/targets/services/monthlyReportNotification.ts b/src/targets/services/monthlyReportNotification.ts index d41bec8bbe2b79ae41b148c2ae8acd7e95a84513..5c7501b5dc7f8c2c8398ea5b28ad889ee0e9fd4b 100644 --- a/src/targets/services/monthlyReportNotification.ts +++ b/src/targets/services/monthlyReportNotification.ts @@ -42,12 +42,13 @@ const getConsumptionValue = async ( endDate: analysisDate.minus({ month: 2 }).endOf('month'), }, } - const fetchedPerformanceIndicators = await consumptionService.getPerformanceIndicators( - periods.timePeriod, - TimeStep.MONTH, - fluidType, - periods.comparisonTimePeriod - ) + const fetchedPerformanceIndicators = + await consumptionService.getPerformanceIndicators( + periods.timePeriod, + TimeStep.MONTH, + fluidType, + periods.comparisonTimePeriod + ) return fetchedPerformanceIndicators } @@ -178,9 +179,7 @@ const monthlyReportNotification = async ({ // Init mail token for user in case he don't have one if (!userProfil.mailToken || userProfil.mailToken === '') { - const token: string = require('crypto') - .randomBytes(48) - .toString('hex') + const token: string = require('crypto').randomBytes(48).toString('hex') try { await upm.updateProfile({ diff --git a/src/targets/vendor/assets/serviceWorker.js b/src/targets/vendor/assets/serviceWorker.js index 0f14f5b13d69bb7fad30392b70a118150352a9ce..15a90d79b460d82998693aea1a1fc403f0e478d8 100644 --- a/src/targets/vendor/assets/serviceWorker.js +++ b/src/targets/vendor/assets/serviceWorker.js @@ -1,3 +1,4 @@ +/* eslint-disable no-undef */ const staticCacheName = 'ecolyo-v1' const urlsToCache = ['index.html', 'offline.html'] diff --git a/src/utils/logger.js b/src/utils/logger.js index 7494134c7470e33cc8460af95d095d3e2a77425b..ee502e362b00210c8f0f70a50e84451f171227c9 100644 --- a/src/utils/logger.js +++ b/src/utils/logger.js @@ -2,6 +2,7 @@ import minilog_ from '@cozy/minilog' const inBrowser = typeof window !== 'undefined' +// eslint-disable-next-line no-undef const minilog = (inBrowser && window.minilog) || minilog_ const log = minilog('ecolyo') diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 2a7a70595f8270beb83fd52d3b0f4f375caef892..a14861d1aa25c1440e11c8d2763ae0b3f8ee31fb 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -120,6 +120,7 @@ export const importIconbyId = async (id: string, pathType: string) => { importedChallengeIcon = await import( /* webpackMode: "eager" */ `assets/icons/visu/${pathType}/${id}.svg` ) + // eslint-disable-next-line no-empty } catch (e) {} if (importedChallengeIcon) { return importedChallengeIcon.default diff --git a/yarn.lock b/yarn.lock index b7cf0612d38d1acd6fa1df93b693193b1c3a16ad..d52fafd8f6251b31826caaa0cb3b57b420678b57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -141,10 +141,10 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/eslint-parser@^7.17.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz#e14dee36c010edfb0153cf900c2b0815e82e3245" - integrity sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A== +"@babel/eslint-parser@7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031" + integrity sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ== dependencies: eslint-scope "^5.1.1" eslint-visitor-keys "^2.1.0" @@ -1672,11 +1672,35 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356" + integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@gar/promisify@^1.0.1": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@humanwhocodes/config-array@^0.10.4": + version "0.10.4" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" + integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + "@humanwhocodes/config-array@^0.9.2": version "0.9.5" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" @@ -1686,6 +1710,16 @@ debug "^4.1.1" minimatch "^3.0.4" +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" @@ -2847,14 +2881,14 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.19.0", "@typescript-eslint/eslint-plugin@^5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.0.tgz#524a11e15c09701733033c96943ecf33f55d9ca1" - integrity sha512-lvhRJ2pGe2V9MEU46ELTdiHgiAFZPKtLhiU5wlnaYpMc2+c1R8fh8i80ZAa665drvjHKUJyRRGg3gEm1If54ow== +"@typescript-eslint/eslint-plugin@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.0.tgz#8f159c4cdb3084eb5d4b72619a2ded942aa109e5" + integrity sha512-X3In41twSDnYRES7hO2xna4ZC02SY05UN9sGW//eL1P5k4CKfvddsdC2hOq0O3+WU1wkCPQkiTY9mzSnXKkA0w== dependencies: - "@typescript-eslint/scope-manager" "5.30.0" - "@typescript-eslint/type-utils" "5.30.0" - "@typescript-eslint/utils" "5.30.0" + "@typescript-eslint/scope-manager" "5.36.0" + "@typescript-eslint/type-utils" "5.36.0" + "@typescript-eslint/utils" "5.36.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -2862,30 +2896,106 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.10.0", "@typescript-eslint/parser@^5.19.0", "@typescript-eslint/parser@^5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.0.tgz#a2184fb5f8ef2bf1db0ae61a43907e2e32aa1b8f" - integrity sha512-2oYYUws5o2liX6SrFQ5RB88+PuRymaM2EU02/9Ppoyu70vllPnHVO7ioxDdq/ypXHA277R04SVjxvwI8HmZpzA== +"@typescript-eslint/eslint-plugin@^5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz#5ccdd5d9004120f28fc6e717fb4b5c9bddcfbc04" + integrity sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og== + dependencies: + "@typescript-eslint/scope-manager" "5.37.0" + "@typescript-eslint/type-utils" "5.37.0" + "@typescript-eslint/utils" "5.37.0" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/eslint-plugin@^5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz#5ccdd5d9004120f28fc6e717fb4b5c9bddcfbc04" + integrity sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og== + dependencies: + "@typescript-eslint/scope-manager" "5.37.0" + "@typescript-eslint/type-utils" "5.37.0" + "@typescript-eslint/utils" "5.37.0" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.36.0.tgz#c08883073fb65acaafd268a987fd2314ce80c789" + integrity sha512-dlBZj7EGB44XML8KTng4QM0tvjI8swDh8MdpE5NX5iHWgWEfIuqSfSE+GPeCrCdj7m4tQLuevytd57jNDXJ2ZA== + dependencies: + "@typescript-eslint/scope-manager" "5.36.0" + "@typescript-eslint/types" "5.36.0" + "@typescript-eslint/typescript-estree" "5.36.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^5.10.0": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.5.tgz#f667c34e4e4c299d98281246c9b1e68c03a92522" + integrity sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q== dependencies: "@typescript-eslint/scope-manager" "5.30.0" "@typescript-eslint/types" "5.30.0" "@typescript-eslint/typescript-estree" "5.30.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.0.tgz#bf585ee801ab4ad84db2f840174e171a6bb002c7" - integrity sha512-3TZxvlQcK5fhTBw5solQucWSJvonXf5yua5nx8OqK94hxdrT7/6W3/CS42MLd/f1BmlmmbGEgQcTHHCktUX5bQ== +"@typescript-eslint/parser@^5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.37.0.tgz#c382077973f3a4ede7453fb14cadcad3970cbf3b" + integrity sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw== + dependencies: + "@typescript-eslint/scope-manager" "5.37.0" + "@typescript-eslint/types" "5.37.0" + "@typescript-eslint/typescript-estree" "5.37.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz#7f90b9d6800552c856a5f3644f5e55dd1469d964" + integrity sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg== dependencies: "@typescript-eslint/types" "5.30.0" "@typescript-eslint/visitor-keys" "5.30.0" -"@typescript-eslint/type-utils@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.0.tgz#98f3af926a5099153f092d4dad87148df21fbaae" - integrity sha512-GF8JZbZqSS+azehzlv/lmQQ3EU3VfWYzCczdZjJRxSEeXDQkqFhCBgFhallLDbPwQOEQ4MHpiPfkjKk7zlmeNg== +"@typescript-eslint/scope-manager@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.0.tgz#f4f859913add160318c0a5daccd3a030d1311530" + integrity sha512-PZUC9sz0uCzRiuzbkh6BTec7FqgwXW03isumFVkuPw/Ug/6nbAqPUZaRy4w99WCOUuJTjhn3tMjsM94NtEj64g== + dependencies: + "@typescript-eslint/types" "5.36.0" + "@typescript-eslint/visitor-keys" "5.36.0" + +"@typescript-eslint/scope-manager@5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz#044980e4f1516a774a418dafe701a483a6c9f9ca" + integrity sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q== + dependencies: + "@typescript-eslint/types" "5.37.0" + "@typescript-eslint/visitor-keys" "5.37.0" + +"@typescript-eslint/type-utils@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.36.0.tgz#5d2f94a36a298ae240ceca54b3bc230be9a99f0a" + integrity sha512-W/E3yJFqRYsjPljJ2gy0YkoqLJyViWs2DC6xHkXcWyhkIbCDdaVnl7mPLeQphVI+dXtY05EcXFzWLXhq8Mm/lQ== dependencies: - "@typescript-eslint/utils" "5.30.0" + "@typescript-eslint/typescript-estree" "5.36.0" + "@typescript-eslint/utils" "5.36.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/type-utils@5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz#43ed2f567ada49d7e33a6e4b6f9babd060445fe5" + integrity sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ== + dependencies: + "@typescript-eslint/utils" "5.30.5" debug "^4.3.4" tsutils "^3.21.0" @@ -2894,10 +3004,20 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.0.tgz#db7d81d585a3da3801432a9c1d2fafbff125e110" integrity sha512-vfqcBrsRNWw/LBXyncMF/KrUTYYzzygCSsVqlZ1qGu1QtGs6vMkt3US0VNSQ05grXi5Yadp3qv5XZdYLjpp8ag== -"@typescript-eslint/typescript-estree@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.0.tgz#4565ee8a6d2ac368996e20b2344ea0eab1a8f0bb" - integrity sha512-hDEawogreZB4n1zoqcrrtg/wPyyiCxmhPLpZ6kmWfKF5M5G0clRLaEexpuWr31fZ42F96SlD/5xCt1bT5Qm4Nw== +"@typescript-eslint/types@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.36.0.tgz#cde7b94d1c09a4f074f46db99e7bd929fb0a5559" + integrity sha512-3JJuLL1r3ljRpFdRPeOtgi14Vmpx+2JcR6gryeORmW3gPBY7R1jNYoq4yBN1L//ONZjMlbJ7SCIwugOStucYiQ== + +"@typescript-eslint/types@5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.37.0.tgz#09e4870a5f3af7af3f84e08d792644a87d232261" + integrity sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA== + +"@typescript-eslint/typescript-estree@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz#c520e4eba20551c4ec76af8d344a42eb6c9767bb" + integrity sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ== dependencies: "@typescript-eslint/types" "5.30.0" "@typescript-eslint/visitor-keys" "5.30.0" @@ -2907,15 +3027,53 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.0.tgz#1dac771fead5eab40d31860716de219356f5f754" - integrity sha512-0bIgOgZflLKIcZsWvfklsaQTM3ZUbmtH0rJ1hKyV3raoUYyeZwcjQ8ZUJTzS7KnhNcsVT1Rxs7zeeMHEhGlltw== +"@typescript-eslint/typescript-estree@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.0.tgz#0acce61b4850bdb0e578f0884402726680608789" + integrity sha512-EW9wxi76delg/FS9+WV+fkPdwygYzRrzEucdqFVWXMQWPOjFy39mmNNEmxuO2jZHXzSQTXzhxiU1oH60AbIw9A== + dependencies: + "@typescript-eslint/types" "5.36.0" + "@typescript-eslint/visitor-keys" "5.36.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz#956dcf5c98363bcb97bdd5463a0a86072ff79355" + integrity sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA== + dependencies: + "@typescript-eslint/types" "5.37.0" + "@typescript-eslint/visitor-keys" "5.37.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.36.0.tgz#104c864ecc1448417606359275368bf3872bbabb" + integrity sha512-wAlNhXXYvAAUBbRmoJDywF/j2fhGLBP4gnreFvYvFbtlsmhMJ4qCKVh/Z8OP4SgGR3xbciX2nmG639JX0uw1OQ== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.30.0" - "@typescript-eslint/types" "5.30.0" - "@typescript-eslint/typescript-estree" "5.30.0" + "@typescript-eslint/scope-manager" "5.36.0" + "@typescript-eslint/types" "5.36.0" + "@typescript-eslint/typescript-estree" "5.36.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/utils@5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.37.0.tgz#7784cb8e91390c4f90ccaffd24a0cf9874df81b2" + integrity sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.37.0" + "@typescript-eslint/types" "5.37.0" + "@typescript-eslint/typescript-estree" "5.37.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -2927,6 +3085,22 @@ "@typescript-eslint/types" "5.30.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.36.0": + version "5.36.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.0.tgz#565d35a5ca00d00a406a942397ead2cb190663ba" + integrity sha512-pdqSJwGKueOrpjYIex0T39xarDt1dn4p7XJ+6FqBWugNQwXlNGC5h62qayAIYZ/RPPtD+ButDWmpXT1eGtiaYg== + dependencies: + "@typescript-eslint/types" "5.36.0" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@5.37.0": + version "5.37.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz#7b72dd343295ea11e89b624995abc7103c554eee" + integrity sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA== + dependencies: + "@typescript-eslint/types" "5.37.0" + eslint-visitor-keys "^3.3.0" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -3141,6 +3315,11 @@ acorn@^8.2.4, acorn@^8.7.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== +acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + add-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" @@ -7022,23 +7201,22 @@ eslint-config-cozy-app@1.5.0: eslint-plugin-vue "5.2.3" prettier "1.18.2" -eslint-config-cozy-app@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-cozy-app/-/eslint-config-cozy-app-4.2.0.tgz#d6e41ebe7e924e885c78926ef497030550a383e1" - integrity sha512-naYjf9j2idGbfzrEbtCjg0Xb5J5Cgb/JhV88+S5gzK67YHEZm12FZ0pDVUwarj7+kDa64wfEaznhDHWRJb0gyw== - dependencies: - "@babel/eslint-parser" "^7.17.0" - "@typescript-eslint/eslint-plugin" "^5.19.0" - "@typescript-eslint/parser" "^5.19.0" - eslint "^8.13.0" - eslint-config-prettier "^8.5.0" - eslint-plugin-prettier "^4.0.0" - eslint-plugin-promise "^6.0.0" - eslint-plugin-react "^7.29.4" - eslint-plugin-react-hooks "^4.5.0" - eslint-plugin-vue "^8.6.0" - prettier "^2.6.2" - typescript "^4.6.3" +eslint-config-cozy-app@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-cozy-app/-/eslint-config-cozy-app-5.1.0.tgz#17cf39c01edf587512164aaf340a139f65bc9bb7" + integrity sha512-S5dILPftGUzbFJM8bLCegTqj6kHyU+9mXMoa+jd06ARenvcqE8TQuDhGLhI6z/EdpIlXBNBED/eBQZ+fyyhDXQ== + dependencies: + "@babel/eslint-parser" "7.18.9" + "@typescript-eslint/eslint-plugin" "5.36.0" + "@typescript-eslint/parser" "5.36.0" + eslint "8.23.0" + eslint-config-prettier "8.5.0" + eslint-plugin-prettier "4.2.1" + eslint-plugin-promise "6.0.1" + eslint-plugin-react "7.31.1" + eslint-plugin-react-hooks "4.6.0" + prettier "2.7.1" + typescript "4.8.2" eslint-config-prettier@4.3.0: version "4.3.0" @@ -7047,7 +7225,7 @@ eslint-config-prettier@4.3.0: dependencies: get-stdin "^6.0.0" -eslint-config-prettier@^8.5.0: +eslint-config-prettier@8.5.0, eslint-config-prettier@^8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== @@ -7070,17 +7248,17 @@ eslint-plugin-prettier@3.1.2: dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-prettier@^4.0.0, eslint-plugin-prettier@^4.2.1: +eslint-plugin-prettier@4.2.1, eslint-plugin-prettier@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== dependencies: prettier-linter-helpers "^1.0.0" -eslint-plugin-promise@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.0.tgz#017652c07c9816413a41e11c30adc42c3d55ff18" - integrity sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw== +eslint-plugin-promise@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz#a8cddf96a67c4059bdabf4d724a29572188ae423" + integrity sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw== eslint-plugin-react-hooks@2.3.0: version "2.3.0" @@ -7092,11 +7270,16 @@ eslint-plugin-react-hooks@4.0.4: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.4.tgz#aed33b4254a41b045818cacb047b81e6df27fa58" integrity sha512-equAdEIsUETLFNCmmCkiCGq6rkSK5MoJhXFPFYeUebcjKgBmWWcgVOqZyQC8Bv1BwVCnTq9tBxgJFgAJTWoJtA== -eslint-plugin-react-hooks@^4.2.0, eslint-plugin-react-hooks@^4.5.0: +eslint-plugin-react-hooks@4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== +eslint-plugin-react-hooks@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" + integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== + eslint-plugin-react@7.14.3: version "7.14.3" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13" @@ -7130,7 +7313,7 @@ eslint-plugin-react@7.19.0: string.prototype.matchall "^4.0.2" xregexp "^4.3.0" -eslint-plugin-react@7.30.1, eslint-plugin-react@^7.29.4: +eslint-plugin-react@7.30.1: version "7.30.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== @@ -7150,6 +7333,26 @@ eslint-plugin-react@7.30.1, eslint-plugin-react@^7.29.4: semver "^6.3.0" string.prototype.matchall "^4.0.7" +eslint-plugin-react@7.31.1: + version "7.31.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.1.tgz#d29793ed27743f3ed8a473c347b1bf5a0a8fb9af" + integrity sha512-j4/2xWqt/R7AZzG8CakGHA6Xa/u7iR8Q3xCxY+AUghdT92bnIDOBEefV456OeH0QvBcroVc0eyvrrLSyQGYIfg== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + eslint-plugin-vue@5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz#3ee7597d823b5478804b2feba9863b1b74273961" @@ -7157,18 +7360,6 @@ eslint-plugin-vue@5.2.3: dependencies: vue-eslint-parser "^5.0.0" -eslint-plugin-vue@^8.6.0: - version "8.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz#f13c53547a0c9d64588a675cc5ecc6ccaf63703f" - integrity sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg== - dependencies: - eslint-utils "^3.0.0" - natural-compare "^1.4.0" - nth-check "^2.0.1" - postcss-selector-parser "^6.0.9" - semver "^7.3.5" - vue-eslint-parser "^8.0.1" - eslint-scope@3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" @@ -7316,10 +7507,55 @@ eslint@5.9.0: table "^5.0.2" text-table "^0.2.0" -eslint@^8.13.0, eslint@^8.18.0, eslint@^8.7.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" - integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== +eslint@8.23.0: + version "8.23.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.0.tgz#a184918d288820179c6041bb3ddcc99ce6eea040" + integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA== + dependencies: + "@eslint/eslintrc" "^1.3.1" + "@humanwhocodes/config-array" "^0.10.4" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + "@humanwhocodes/module-importer" "^1.0.1" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +eslint@^8.18.0, eslint@^8.7.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28" + integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw== dependencies: "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" @@ -7384,6 +7620,15 @@ espree@^9.0.0, espree@^9.3.2: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.3.0" +espree@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -8354,6 +8599,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3 resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -11906,13 +12156,18 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== +nth-check@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== dependencies: boolbase "^1.0.0" +null-check@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" + integrity sha1-l33/1xdgErnsMNKjnbXPcqBDnt0= + null-loader@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.1.tgz#8e63bd3a2dd3c64236a4679428632edd0a6dbc6a" @@ -12749,14 +13004,6 @@ postcss-prefix-selector@^1.6.0: resolved "https://registry.yarnpkg.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz#ad5b56f9a73a2c090ca7161049632c9d89bcb404" integrity sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q== -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" @@ -12985,7 +13232,7 @@ prettier@1.18.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea" integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw== -prettier@^2.5.1, prettier@^2.6.2, prettier@^2.7.1: +prettier@2.7.1, prettier@^2.5.1, prettier@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== @@ -13151,7 +13398,12 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== -psl@^1.1.24, psl@^1.1.28, psl@^1.1.33: +psl@^1.1.24: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== @@ -15875,7 +16127,12 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.0.0, typescript@^4.3.5, typescript@^4.5.2, typescript@^4.5.4, typescript@^4.6.3: +typescript@4.8.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790" + integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw== + +typescript@^4.0.0, typescript@^4.5.4: version "4.7.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==