From 92a0bb6415b3aabe18f39598164ed7a1b960098d Mon Sep 17 00:00:00 2001 From: Mikko Tapionlinna Date: Fri, 19 Jan 2024 15:19:18 +0200 Subject: [PATCH 01/29] Fix rounded links buttons on iOS 15.5 --- packages/core/src/components/button/button.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/components/button/button.css b/packages/core/src/components/button/button.css index 428cf57e4e..b09e6e36a8 100644 --- a/packages/core/src/components/button/button.css +++ b/packages/core/src/components/button/button.css @@ -12,7 +12,6 @@ * Normalize.css rules * Correct the inability to style clickable types in iOS and Safari. */ - -webkit-appearance: button; background-color: var(--background-color, transparent); border: var(--border-width) solid var(--border-color, transparent); border-radius: 0; @@ -63,6 +62,7 @@ * Normalize.css rules * Correct the inability to style clickable types in iOS and Safari. */ +button.hds-button, .hds-button[type="button"], .hds-button[type="reset"], .hds-button[type="submit"] { From fbd8b16eb66aee812df916254c3ae3c655d51755 Mon Sep 17 00:00:00 2001 From: Tuomo Kivinen Date: Tue, 6 Feb 2024 11:45:02 +0200 Subject: [PATCH 02/29] () add empty changelog --- CHANGELOG.md | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4251d421ba..13e40be6b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,122 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.X.X] - Month, XX, 202X + +### React + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Core + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Documentation + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Figma + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Sketch/Abstract + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Hds-js + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + ## [3.5.0] - February, 6, 2024 ### React From 7efb89cee09b2210914b82505802f9a706b6230c Mon Sep 17 00:00:00 2001 From: Tuomo Kivinen Date: Thu, 8 Feb 2024 11:58:30 +0200 Subject: [PATCH 03/29] () add update-changelog with template --- CHANGELOG.md | 116 ++++++++++++++++++++++++ package.json | 3 +- scripts/changelog/CHANGELOG.template.md | 116 ++++++++++++++++++++++++ scripts/changelog/update-changelog.js | 13 +++ 4 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 scripts/changelog/CHANGELOG.template.md create mode 100644 scripts/changelog/update-changelog.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 4251d421ba..13e40be6b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,122 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.X.X] - Month, XX, 202X + +### React + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Core + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Documentation + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Figma + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Sketch/Abstract + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Hds-js + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + ## [3.5.0] - February, 6, 2024 ### React diff --git a/package.json b/package.json index 77aa43891d..9d042960af 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "start:core": "lerna run --scope hds-core start", "start:react": "lerna run --scope hds-react start", "release": "lerna publish from-package --yes", - "update-versions": "lerna version --exact --no-git-tag-version --no-push --amend --yes" + "update-versions": "lerna version --exact --no-git-tag-version --no-push --amend --yes", + "update-changelog": "node ./scripts/changelog/update-changelog.js" }, "devDependencies": { "lerna": "^7.0.1", diff --git a/scripts/changelog/CHANGELOG.template.md b/scripts/changelog/CHANGELOG.template.md new file mode 100644 index 0000000000..1e22f7edf3 --- /dev/null +++ b/scripts/changelog/CHANGELOG.template.md @@ -0,0 +1,116 @@ +## [3.X.X] - Month, XX, 202X + +### React + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Core + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Documentation + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Figma + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Sketch/Abstract + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + +### Hds-js + +#### Breaking + +- [Component] What are the breaking changes? + +#### Added + +- [Component] What is added? + +#### Changed + +Changes that are not related to specific components +- [Component] What has been changed + +#### Fixed + +- [Component] What bugs/typos are fixed? + diff --git a/scripts/changelog/update-changelog.js b/scripts/changelog/update-changelog.js new file mode 100644 index 0000000000..5ef331934b --- /dev/null +++ b/scripts/changelog/update-changelog.js @@ -0,0 +1,13 @@ +/** + * This takes the CHANGELOG.md and prepends the CHANGELOG.template.md to it. + */ + +const fs = require('fs'); +const changeLogFile = './CHANGELOG.md'; + +const old = fs.readFileSync(changeLogFile, 'utf8'); +const template = fs.readFileSync('./scripts/changelog/CHANGELOG.template.md', 'utf8'); +const latestVersionPosition = old.indexOf('## ['); +changeLogWithTemplate = old.substring(0, latestVersionPosition) + template + old.substring(latestVersionPosition); + +fs.writeFileSync(changeLogFile, changeLogWithTemplate); \ No newline at end of file From abb4bba0b9ee18232ad17c4f82bfdd0c7aa12462 Mon Sep 17 00:00:00 2001 From: Tuomo Kivinen Date: Thu, 8 Feb 2024 12:51:10 +0200 Subject: [PATCH 04/29] () remove & replace individual lodash dependencies --- .github/workflows/patchrelease.yml | 47 +++++++++ CHANGELOG.md | 15 +-- packages/hds-js/package.json | 4 +- packages/react/package.json | 12 +-- .../src/components/accordion/Accordion.tsx | 3 +- .../cookieConsent/content.builder.test.ts | 99 ++----------------- .../cookieConsent/content.builder.ts | 35 +------ .../cookieConsent/cookieConsentController.ts | 18 ++-- .../dropdown/combobox/Combobox.stories.tsx | 2 +- .../components/dropdown/combobox/Combobox.tsx | 3 +- .../src/components/dropdown/dropdownUtils.ts | 2 +- .../dropdown/select/Select.stories.tsx | 2 +- .../src/components/dropdown/select/Select.tsx | 3 +- .../src/components/fileInput/FileInput.tsx | 2 +- packages/react/src/components/koros/Koros.tsx | 2 +- .../loadingSpinner/useNotificationArea.ts | 2 +- packages/react/src/hooks/useTheme.tsx | 2 +- packages/react/src/hooks/useThrottledWheel.ts | 2 +- .../internal/dropdownMenu/DropdownMenu.tsx | 2 +- .../src/internal/menuButton/MenuButton.tsx | 2 +- .../internal/selectedItems/SelectedItems.tsx | 2 +- packages/react/src/utils/getChildren.ts | 2 +- .../src/utils/mergeRefWithInternalRef.ts | 2 +- yarn.lock | 55 ----------- 24 files changed, 94 insertions(+), 226 deletions(-) create mode 100644 .github/workflows/patchrelease.yml diff --git a/.github/workflows/patchrelease.yml b/.github/workflows/patchrelease.yml new file mode 100644 index 0000000000..0e9ba83acc --- /dev/null +++ b/.github/workflows/patchrelease.yml @@ -0,0 +1,47 @@ +name: patchrelease + +on: + push: + branches: + - patchrelease + +jobs: + build-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Read .nvmrc + run: echo "NODE_VERSION=$(cat .nvmrc)" >> $GITHUB_OUTPUT + id: nvmrc + + - name: setup node ${{ steps.nvmrc.outputs.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: '${{ steps.nvmrc.outputs.NODE_VERSION }}' + registry-url: 'https://registry.npmjs.org' + + - name: install dependencies + run: yarn + + - name: build design tokens package + run: yarn build + working-directory: ./packages/design-tokens + + - name: build core package + run: yarn build + working-directory: ./packages/core + + - name: build react package + run: yarn build + working-directory: ./packages/react + + - name: build hds-js package + run: yarn build:hds-js + working-directory: ./packages/react + + - name: release npm packages + run: yarn release --dist-tag patch + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 13e40be6b8..df0da114fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,5 @@ # Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - ## [3.X.X] - Month, XX, 202X ### React @@ -24,7 +19,7 @@ Changes that are not related to specific components #### Fixed -- [Component] What bugs/typos are fixed? +- Removed old & deprecated individual `lodash` dependencies and replaced with the full package and importing the needed functions only. ### Core @@ -603,6 +598,14 @@ There is a brand new Figma library available. The licenses are checked and provi - [Header] Add HDS Header.sketch file to shared libraries for HDS 3.0.0 Alpha release purposes. The shared library file includes new Header and Side navigation symbols. +## [2.17.1] - Feb, 7, 2024 + +### React + +#### Fixed + +- Removed old & deprecated individual `lodash` dependencies and replaced with the full package and importing the needed functions only. + ## [2.17.0] - Aug, 18, 2023 ### React diff --git a/packages/hds-js/package.json b/packages/hds-js/package.json index 3e949e7f28..de62bf8de6 100644 --- a/packages/hds-js/package.json +++ b/packages/hds-js/package.json @@ -13,9 +13,7 @@ "cookie": "^0.4.1", "http-status-typed": "^1.0.1", "jwt-decode": "^3.1.2", - "lodash.isobject": "3.0.2", - "lodash.isundefined": "3.0.1", - "lodash.pick": "^4.4.0", + "lodash": "^4.17.21", "oidc-client-ts": "^2.2.2" }, "scripts": { diff --git a/packages/react/package.json b/packages/react/package.json index 402a1b4ed0..fcd9aa237f 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -135,17 +135,7 @@ "http-status-typed": "^1.0.1", "jwt-decode": "^3.1.2", "kashe": "1.0.4", - "lodash.flatten": "^4.4.0", - "lodash.get": "^4.4.2", - "lodash.isequal": "4.5.0", - "lodash.isfunction": "3.0.9", - "lodash.isobject": "3.0.2", - "lodash.isundefined": "3.0.1", - "lodash.pick": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.throttle": "^4.1.1", - "lodash.uniqueid": "4.0.1", - "lodash.xor": "^4.5.0", + "lodash": "^4.17.21", "memoize-one": "5.2.1", "oidc-client-ts": "^2.2.2", "react-hook-form": "^7.43.3", diff --git a/packages/react/src/components/accordion/Accordion.tsx b/packages/react/src/components/accordion/Accordion.tsx index 2214eb2279..43a29b948b 100644 --- a/packages/react/src/components/accordion/Accordion.tsx +++ b/packages/react/src/components/accordion/Accordion.tsx @@ -1,6 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import uniqueId from 'lodash.uniqueid'; -import pickBy from 'lodash.pickby'; +import { uniqueId, pickBy } from 'lodash'; import '../../styles/base.module.css'; import styles from './Accordion.module.scss'; diff --git a/packages/react/src/components/cookieConsent/content.builder.test.ts b/packages/react/src/components/cookieConsent/content.builder.test.ts index ccdfb54f2f..cc06acf512 100644 --- a/packages/react/src/components/cookieConsent/content.builder.test.ts +++ b/packages/react/src/components/cookieConsent/content.builder.test.ts @@ -1,6 +1,6 @@ -import _get from 'lodash.get'; +import { get } from 'lodash'; -import { CookieContentSource, ContentSourceCookieGroup, createContent, setPropsToObject } from './content.builder'; +import { CookieContentSource, ContentSourceCookieGroup, createContent } from './content.builder'; import { getCookieContent } from './getContent'; import { CookieData, CookieGroup, Content, Category } from './contexts/ContentContext'; @@ -155,7 +155,7 @@ describe(`content.builder.ts`, () => { expect(plainContent.requiredCookies).toBeUndefined(); expect(plainContent.optionalCookies).toBeUndefined(); - expect(_get(plainContent, mainTitlePath).indexOf(siteName)).toBe(0); + expect(get(plainContent, mainTitlePath).indexOf(siteName)).toBe(0); }); }); describe('contentSource.texts', () => { @@ -166,14 +166,14 @@ describe(`content.builder.ts`, () => { ...commonContentTestProps, texts: { sections: { main: { title: newMainTitle } } }, }); - expect(_get(contentWithNewMainTitle, mainTitlePath)).toBe(newMainTitle); - expect(_get(contentWithNewMainTitle, mainTextPath)).toBe(_get(defaults, mainTextPath)); + expect(get(contentWithNewMainTitle, mainTitlePath)).toBe(newMainTitle); + expect(get(contentWithNewMainTitle, mainTextPath)).toBe(get(defaults, mainTextPath)); const contentWithNewDetailsText = createContent({ ...commonContentTestProps, texts: { sections: { details: { text: newDetailsText } } }, }); - expect(_get(contentWithNewDetailsText, detailsTextPath)).toBe(newDetailsText); - expect(_get(contentWithNewDetailsText, detailsTitlePath)).toBe(_get(defaults, detailsTitlePath)); + expect(get(contentWithNewDetailsText, detailsTextPath)).toBe(newDetailsText); + expect(get(contentWithNewDetailsText, detailsTitlePath)).toBe(get(defaults, detailsTitlePath)); }); }); describe('contentSource.language', () => { @@ -893,89 +893,4 @@ describe(`content.builder.ts`, () => { ); }); }); - describe('setPropsToObject merges given value/object to the target object', () => { - type AnyObject = { [key: string]: unknown }; - type TargetObject = { [key: string]: TargetObject | string }; - it('Path indicates where to merge. Path is a given as a comma delimetered path.', () => { - const target = setPropsToObject({}, 'a', 'valueOfA'); - expect(target).toEqual({ a: 'valueOfA' }); - - const target2 = setPropsToObject({}, 'a.a', 'valueOfAA'); - expect(target2).toEqual({ a: { a: 'valueOfAA' } }); - - const target3 = setPropsToObject({}, 'a.b.c.d.e.f', 'valueOfABCDEF'); - expect(target3).toEqual({ - a: { - b: { - c: { - d: { - e: { - f: 'valueOfABCDEF', - }, - }, - }, - }, - }, - }); - }); - it('existing props are not overridden or copied', () => { - const target: TargetObject & { obj1: { obj2?: AnyObject; newObj2?: { newObj3?: AnyObject } } } = { - prop1: 'valueOfProp1', - obj1: { obj2: { value: 'valueOfObj2' } }, - }; - - // save refs to objects to check refs do not change - const { obj1: obj1Ref } = target; - const { obj2: obj2Ref } = target.obj1 as TargetObject; - - // objects added later - const obj3 = { value: 'valueOfObj3' }; - const newObj4 = { newObj5: 'valueOfNewObj5' }; - - setPropsToObject(target, 'prop2', 'valueOfProp2'); - expect(target.prop2).toBe('valueOfProp2'); - - setPropsToObject(target.obj1.obj2 as AnyObject, 'obj3', obj3); - expect((target.obj1.obj2 as AnyObject).obj3).toBe(obj3); - - setPropsToObject(target, 'obj1.newObj2.newObj3', newObj4); - expect((target.obj1.newObj2 as AnyObject).newObj3).toBe(newObj4); - - // check initial values/refs have not changed - expect(target.prop1).toBe('valueOfProp1'); - expect(target.obj1).toBe(obj1Ref); - expect(target.obj1.obj2).toBe(obj2Ref); - expect((target.obj1.obj2 as AnyObject).value).toBe('valueOfObj2'); - }); - it('object to merge is not copied, but assigned', () => { - const target: AnyObject = {}; - const mergedObject1 = { obj: 'valueOfObj', object2: {} }; - const mergedObject2 = { obj2: 'valueOfObj2' }; - const finalObject1 = { obj3: 'valueOfObj3' }; - - setPropsToObject(target, 'object1', mergedObject1); - expect(target.object1).toEqual(mergedObject1); - - setPropsToObject(target, 'object1.object2', mergedObject2); - expect((target.object1 as AnyObject).object2).toEqual(mergedObject2); - - setPropsToObject(target, 'object1', finalObject1); - expect(target.object1).toEqual(finalObject1); - expect((target.object1 as AnyObject).object2).toBeUndefined(); - }); - it('merged value can be anything', () => { - const target: AnyObject = {}; - const values = [null, undefined, 1, 'abc', () => undefined, new Map(), Object.create({})]; - values.forEach((value, index) => { - const key = `value-${index}`; - setPropsToObject(target, key, value); - expect(target[key]).toBe(value); - }); - }); - it('Using "_" is prohibited to avoid prototype pollution', () => { - const target: AnyObject = {}; - expect(() => setPropsToObject(target, '__proto__.toString', () => 'hello')).toThrow(); - expect(target.toString()).not.toBe('hello'); - }); - }); }); diff --git a/packages/react/src/components/cookieConsent/content.builder.ts b/packages/react/src/components/cookieConsent/content.builder.ts index 46c995cb4a..071c71d1bd 100644 --- a/packages/react/src/components/cookieConsent/content.builder.ts +++ b/packages/react/src/components/cookieConsent/content.builder.ts @@ -1,4 +1,4 @@ -import _get from 'lodash.get'; +import { get, set } from 'lodash'; import type { CookieData, @@ -143,40 +143,15 @@ function getCommonCookie(language: string, id: string): CookieData { return cookie; } -// lodash.set has a high vulnerability without a fix -// replaced with this custom merge function -export function setPropsToObject( - targetObject: Record, - path: string, - value: unknown, -): Record { - if (path.includes('_')) { - throw new Error('String "_" is not allowed in the path to avoid prototype pollution'); - } - const splitPath = path.split('.'); - const lastPath = splitPath.pop(); - const targetPointInObject = splitPath.reduce((currentObj, currentPath) => { - if (typeof currentObj[currentPath] === 'undefined') { - // eslint-disable-next-line no-param-reassign - currentObj[currentPath] = Object.create(null); - } - return currentObj[currentPath]; - }, targetObject); - if (lastPath) { - targetPointInObject[lastPath] = value; - } - return targetObject; -} - function mergeObjects(target: MergableContent, source: MergableContent, paths: string[]) { paths.forEach((path) => { - const pickedFromSource = _get(source, path); + const pickedFromSource = get(source, path); if (pickedFromSource) { - const pickedFromTarget = _get(target, path); + const pickedFromTarget = get(target, path); if (typeof pickedFromSource === 'string') { - setPropsToObject(target, path, pickedFromSource || pickedFromTarget); + set(target, path, pickedFromSource || pickedFromTarget); } else { - setPropsToObject(target, path, { + set(target, path, { ...pickedFromTarget, ...pickedFromSource, }); diff --git a/packages/react/src/components/cookieConsent/cookieConsentController.ts b/packages/react/src/components/cookieConsent/cookieConsentController.ts index be65eb9c11..70c4084b33 100644 --- a/packages/react/src/components/cookieConsent/cookieConsentController.ts +++ b/packages/react/src/components/cookieConsent/cookieConsentController.ts @@ -1,6 +1,4 @@ -import _pick from 'lodash.pick'; -import _isObject from 'lodash.isobject'; -import _isUndefined from 'lodash.isundefined'; +import { pick, isObject, isUndefined } from 'lodash'; import { createCookieController } from './cookieController'; @@ -48,7 +46,7 @@ function mergeConsents(set1: ConsentObject, set2: ConsentObject, set3?: ConsentO } function createConsentsString(consents: ConsentObject): string { - if (!_isObject(consents)) { + if (!isObject(consents)) { return '{}'; } return JSON.stringify(consents); @@ -107,10 +105,10 @@ export function createStorage( }; const findConsentSource = (consentName: string, targetStorage: ConsentStorage): ConsentObject | undefined => { - if (!_isUndefined(targetStorage.required[consentName])) { + if (!isUndefined(targetStorage.required[consentName])) { return targetStorage.required; } - if (!_isUndefined(targetStorage.optional[consentName])) { + if (!isUndefined(targetStorage.optional[consentName])) { return targetStorage.optional; } return undefined; @@ -168,17 +166,17 @@ export default function createConsentController(props: ConsentControllerProps): const required = mergeConsents( convertStringArrayToKeyConsentObject(requiredConsents), - _pick(currentConsentsInCookie, requiredConsents), + pick(currentConsentsInCookie, requiredConsents), ); const optional = mergeConsents( convertStringArrayToKeyConsentObject(optionalConsents), - _pick(currentConsentsInCookie, optionalConsents), + pick(currentConsentsInCookie, optionalConsents), ); const unknownConsentKeys = Object.keys(currentConsentsInCookie).filter((key) => !allConsents.includes(key)); - const unknown = unknownConsentKeys.length ? _pick(currentConsentsInCookie, unknownConsentKeys) : undefined; + const unknown = unknownConsentKeys.length ? pick(currentConsentsInCookie, unknownConsentKeys) : undefined; const storage = createStorage({ required, optional, unknown }); @@ -222,7 +220,7 @@ export default function createConsentController(props: ConsentControllerProps): rejectAll, getUnhandledConsents: () => { const storedCookies = parseConsents(cookieController.get()); - return allConsents.filter((key) => _isUndefined(storedCookies[key])); + return allConsents.filter((key) => isUndefined(storedCookies[key])); }, save, }; diff --git a/packages/react/src/components/dropdown/combobox/Combobox.stories.tsx b/packages/react/src/components/dropdown/combobox/Combobox.stories.tsx index fb11efa467..74e2f20739 100644 --- a/packages/react/src/components/dropdown/combobox/Combobox.stories.tsx +++ b/packages/react/src/components/dropdown/combobox/Combobox.stories.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { action } from '@storybook/addon-actions'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import { Button } from '../../button'; import { Combobox } from './Combobox'; diff --git a/packages/react/src/components/dropdown/combobox/Combobox.tsx b/packages/react/src/components/dropdown/combobox/Combobox.tsx index 255ce42179..fe0e4e2c52 100644 --- a/packages/react/src/components/dropdown/combobox/Combobox.tsx +++ b/packages/react/src/components/dropdown/combobox/Combobox.tsx @@ -2,8 +2,7 @@ /* eslint-disable react/destructuring-assignment */ import React, { useRef, useState, KeyboardEvent, FocusEvent, FocusEventHandler, useMemo, useCallback } from 'react'; import { useCombobox, useMultipleSelection } from 'downshift'; -import isEqual from 'lodash.isequal'; -import uniqueId from 'lodash.uniqueid'; +import { isEqual, uniqueId } from 'lodash'; import { useVirtual } from 'react-virtual'; import '../../../styles/base.module.css'; diff --git a/packages/react/src/components/dropdown/dropdownUtils.ts b/packages/react/src/components/dropdown/dropdownUtils.ts index 0dc3239342..e46fa8c925 100644 --- a/packages/react/src/components/dropdown/dropdownUtils.ts +++ b/packages/react/src/components/dropdown/dropdownUtils.ts @@ -1,4 +1,4 @@ -import isEqual from 'lodash.isequal'; +import { isEqual } from 'lodash'; export const DROPDOWN_MENU_ITEM_HEIGHT = 52; diff --git a/packages/react/src/components/dropdown/select/Select.stories.tsx b/packages/react/src/components/dropdown/select/Select.stories.tsx index 3cee16580c..c8d8ffa3c6 100644 --- a/packages/react/src/components/dropdown/select/Select.stories.tsx +++ b/packages/react/src/components/dropdown/select/Select.stories.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { action } from '@storybook/addon-actions'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import { Button } from '../../button'; import { Select } from './Select'; diff --git a/packages/react/src/components/dropdown/select/Select.tsx b/packages/react/src/components/dropdown/select/Select.tsx index 03665a902a..1bf130ed32 100644 --- a/packages/react/src/components/dropdown/select/Select.tsx +++ b/packages/react/src/components/dropdown/select/Select.tsx @@ -9,8 +9,7 @@ import { UseMultipleSelectionStateChangeOptions, UseMultipleSelectionState, } from 'downshift'; -import isEqual from 'lodash.isequal'; -import uniqueId from 'lodash.uniqueid'; +import { isEqual, uniqueId } from 'lodash'; import { useVirtual } from 'react-virtual'; import '../../../styles/base.module.css'; diff --git a/packages/react/src/components/fileInput/FileInput.tsx b/packages/react/src/components/fileInput/FileInput.tsx index bf2202e2a7..d917e599f4 100644 --- a/packages/react/src/components/fileInput/FileInput.tsx +++ b/packages/react/src/components/fileInput/FileInput.tsx @@ -1,5 +1,5 @@ import React, { ChangeEvent, useEffect, useRef, useState } from 'react'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import '../../styles/base.module.css'; import composeAriaDescribedBy from '../../utils/composeAriaDescribedBy'; diff --git a/packages/react/src/components/koros/Koros.tsx b/packages/react/src/components/koros/Koros.tsx index 34ebf96a3d..2947920d5d 100644 --- a/packages/react/src/components/koros/Koros.tsx +++ b/packages/react/src/components/koros/Koros.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import '../../styles/base.module.css'; import classNames from '../../utils/classNames'; diff --git a/packages/react/src/components/loadingSpinner/useNotificationArea.ts b/packages/react/src/components/loadingSpinner/useNotificationArea.ts index 965efe1ec5..f30005259b 100644 --- a/packages/react/src/components/loadingSpinner/useNotificationArea.ts +++ b/packages/react/src/components/loadingSpinner/useNotificationArea.ts @@ -1,5 +1,5 @@ import { useEffect, useRef, useState, useCallback } from 'react'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import styles from './LoadingSpinner.module.scss'; diff --git a/packages/react/src/hooks/useTheme.tsx b/packages/react/src/hooks/useTheme.tsx index bc6c313f57..1e691c2984 100644 --- a/packages/react/src/hooks/useTheme.tsx +++ b/packages/react/src/hooks/useTheme.tsx @@ -1,5 +1,5 @@ import { useRef } from 'react'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'; diff --git a/packages/react/src/hooks/useThrottledWheel.ts b/packages/react/src/hooks/useThrottledWheel.ts index 1776a4c78f..3a6998a1b6 100644 --- a/packages/react/src/hooks/useThrottledWheel.ts +++ b/packages/react/src/hooks/useThrottledWheel.ts @@ -1,5 +1,5 @@ import React, { useEffect } from 'react'; -import throttle from 'lodash.throttle'; +import { throttle } from 'lodash'; /* A Hook that will throttle the wheel event for 200ms or with chosen delay on given html input reference object. diff --git a/packages/react/src/internal/dropdownMenu/DropdownMenu.tsx b/packages/react/src/internal/dropdownMenu/DropdownMenu.tsx index 27c32ca321..6cc90fb93d 100644 --- a/packages/react/src/internal/dropdownMenu/DropdownMenu.tsx +++ b/packages/react/src/internal/dropdownMenu/DropdownMenu.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import isEqual from 'lodash.isequal'; +import { isEqual } from 'lodash'; import { VirtualItem } from 'react-virtual'; import { getIsInSelectedOptions } from '../../components/dropdown/dropdownUtils'; diff --git a/packages/react/src/internal/menuButton/MenuButton.tsx b/packages/react/src/internal/menuButton/MenuButton.tsx index 0fd81a1d40..13c9d73160 100644 --- a/packages/react/src/internal/menuButton/MenuButton.tsx +++ b/packages/react/src/internal/menuButton/MenuButton.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useRef, useState } from 'react'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import mergeRefs from 'react-merge-refs'; import useMeasure from 'react-use-measure'; import { ResizeObserver } from '@juggle/resize-observer'; diff --git a/packages/react/src/internal/selectedItems/SelectedItems.tsx b/packages/react/src/internal/selectedItems/SelectedItems.tsx index 0e61378f6f..72fd287185 100644 --- a/packages/react/src/internal/selectedItems/SelectedItems.tsx +++ b/packages/react/src/internal/selectedItems/SelectedItems.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useMemo, useRef, useState } from 'react'; import mergeRefs from 'react-merge-refs'; import useMeasure from 'react-use-measure'; -import uniqueId from 'lodash.uniqueid'; +import { uniqueId } from 'lodash'; import { ResizeObserver } from '@juggle/resize-observer'; import styles from './SelectedItems.module.scss'; diff --git a/packages/react/src/utils/getChildren.ts b/packages/react/src/utils/getChildren.ts index bb81148f96..c0d10fd6f6 100644 --- a/packages/react/src/utils/getChildren.ts +++ b/packages/react/src/utils/getChildren.ts @@ -1,5 +1,5 @@ import React, { isValidElement } from 'react'; -import flatten from 'lodash.flatten'; +import { flatten } from 'lodash'; import { FCWithName } from '../common/types'; diff --git a/packages/react/src/utils/mergeRefWithInternalRef.ts b/packages/react/src/utils/mergeRefWithInternalRef.ts index 8435f5b332..fdfb138d73 100644 --- a/packages/react/src/utils/mergeRefWithInternalRef.ts +++ b/packages/react/src/utils/mergeRefWithInternalRef.ts @@ -1,5 +1,5 @@ import React, { RefObject } from 'react'; -import isFunction from 'lodash.isfunction'; +import { isFunction } from 'lodash'; export default (ref: React.Ref, internalRef: RefObject): void => { if (isFunction(ref)) { diff --git a/yarn.lock b/yarn.lock index 85f286e3d5..a39b18d612 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18602,11 +18602,6 @@ lodash.every@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" integrity sha512-isF82d+65/sNvQ3aaQAW7LLHnnTxSN/2fm4rhYyuufLzA4VtHz6y6S5vFwe6PQVr2xdqUOyxBbTNKDpnmeu50w== -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== - lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" @@ -18617,36 +18612,11 @@ lodash.foreach@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ== -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - -lodash.isequal@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.isfunction@3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" - integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== - lodash.ismatch@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== -lodash.isobject@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" - integrity sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA== - -lodash.isundefined@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" - integrity sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA== - lodash.map@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" @@ -18667,16 +18637,6 @@ lodash.merge@4.6.2, lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.pick@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q== - -lodash.pickby@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - integrity sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -18697,11 +18657,6 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== - lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -18712,16 +18667,6 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash.uniqueid@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz#3268f26a7c88e4f4b1758d679271814e31fa5b26" - integrity sha512-GQQWaIeGlL6DIIr06kj1j6sSmBxyNMwI8kaX9aKpHR/XsMTiaXDVPNPAkiboOTK9OJpTJF/dXT3xYoFQnj386Q== - -lodash.xor@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6" - integrity sha512-sVN2zimthq7aZ5sPGXnSz32rZPuqcparVW50chJQe+mzTYV+IsxSsl/2gnkWWE2Of7K3myBQBqtLKOUEHJKRsQ== - lodash@4.x, lodash@^4.17.10, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.7.0, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" From 3018a5f28f87132542943e2ca28bb0b4139efed2 Mon Sep 17 00:00:00 2001 From: Tuomo Kivinen Date: Fri, 23 Feb 2024 11:29:49 +0200 Subject: [PATCH 05/29] (HDS-2108) Remove useless @layer style, update changelog --- CHANGELOG.md | 1 + ...eaderActionBarItemWithDropdown.module.scss | 118 +++++++++--------- 2 files changed, 59 insertions(+), 60 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df0da114fb..a4d0996535 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Changes that are not related to specific components #### Fixed - Removed old & deprecated individual `lodash` dependencies and replaced with the full package and importing the needed functions only. +- [HeaderActionBarItemWithDropdown] Removed useless `@layer` css style which caused Jest/jsdom tests output errors. ### Core diff --git a/packages/react/src/components/header/components/headerActionBarItem/HeaderActionBarItemWithDropdown.module.scss b/packages/react/src/components/header/components/headerActionBarItem/HeaderActionBarItemWithDropdown.module.scss index ab1f80efeb..1ac2107557 100644 --- a/packages/react/src/components/header/components/headerActionBarItem/HeaderActionBarItemWithDropdown.module.scss +++ b/packages/react/src/components/header/components/headerActionBarItem/HeaderActionBarItemWithDropdown.module.scss @@ -1,73 +1,71 @@ -@layer actionBar { - .dropdownWrapper { - bottom: 0; - overflow: hidden; - position: absolute; - right: 0; - transform: translateY(100%) translateY(1px); - transition-duration: 0ms; - transition-property: max-height, padding-bottom; - z-index: 20; - } - - .container { - display: flex; +.dropdownWrapper { + bottom: 0; + overflow: hidden; + position: absolute; + right: 0; + transform: translateY(100%) translateY(1px); + transition-duration: 0ms; + transition-property: max-height, padding-bottom; + z-index: 20; +} - .dropdownWrapper { - max-height: 0; - min-width: 300px; - padding-bottom: 0; - transition-delay: calc(var(--animation-duration-dropwdown) + var(--animation-close-delay-dropdown)); - } +.container { + display: flex; - &.visible .dropdownWrapper { - max-height: 1000vh; - padding-bottom: 20px; - transition-delay: 0ms; - } + .dropdownWrapper { + max-height: 0; + min-width: 300px; + padding-bottom: 0; + transition-delay: calc(var(--animation-duration-dropwdown) + var(--animation-close-delay-dropdown)); + } - &:not(.hasContent) { - display: none; - } + &.visible .dropdownWrapper { + max-height: 1000vh; + padding-bottom: 20px; + transition-delay: 0ms; + } - &:not(.fullWidth) { - display: flex; - position: relative; - } + &:not(.hasContent) { + display: none; + } - &.fullWidth > .dropdownWrapper { - left: 0; - } + &:not(.fullWidth) { + display: flex; + position: relative; } - .icon { - display: block; + &.fullWidth>.dropdownWrapper { + left: 0; } +} - .dropdown { - background: white; - border: 1px solid var(--color-black-10); - margin-top: -1px; - position: relative; - right: 0; - transform: translateY(-100%); - transition: var(--animation-duration-dropwdown) transform var(--animation-close-delay-dropdown), - 0ms visibility calc((var(--animation-duration-dropwdown) + var(--animation-close-delay-dropdown))); - visibility: hidden; +.icon { + display: block; +} - &.fullWidth { - left: 0; - } +.dropdown { + background: white; + border: 1px solid var(--color-black-10); + margin-top: -1px; + position: relative; + right: 0; + transform: translateY(-100%); + transition: var(--animation-duration-dropwdown) transform var(--animation-close-delay-dropdown), + 0ms visibility calc((var(--animation-duration-dropwdown) + var(--animation-close-delay-dropdown))); + visibility: hidden; - &.visible { - transform: translateY(0%); - transition: var(--animation-duration-dropwdown) transform 0ms, 0ms visibility 0ms; - visibility: visible; - } + &.fullWidth { + left: 0; + } - > * { - padding: var(--spacing-xs) var(--spacing-s); - width: 100%; - } + &.visible { + transform: translateY(0%); + transition: var(--animation-duration-dropwdown) transform 0ms, 0ms visibility 0ms; + visibility: visible; } -} + + >* { + padding: var(--spacing-xs) var(--spacing-s); + width: 100%; + } +} \ No newline at end of file From 6570b7f1e4d4f7429476b2a7adbb640741ecb156 Mon Sep 17 00:00:00 2001 From: Tuomo Kivinen Date: Fri, 23 Feb 2024 13:26:04 +0200 Subject: [PATCH 06/29] (HDS-2142) Fix checkbox layout issue, add story for external label, update reference images --- CHANGELOG.md | 1 + .../core/src/components/checkbox/checkbox.css | 2 +- ..._Components_Checkbox_With_External_Label.png | Bin 0 -> 4077 bytes ..._Components_Checkbox_With_External_Label.png | Bin 0 -> 2396 bytes .../components/checkbox/Checkbox.stories.tsx | 16 ++++++++++++++++ 5 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 packages/react/.loki/reference/chrome_iphone7_Components_Checkbox_With_External_Label.png create mode 100644 packages/react/.loki/reference/chrome_laptop_Components_Checkbox_With_External_Label.png diff --git a/CHANGELOG.md b/CHANGELOG.md index a4d0996535..4760bbb98b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ Changes that are not related to specific components - Removed old & deprecated individual `lodash` dependencies and replaced with the full package and importing the needed functions only. - [HeaderActionBarItemWithDropdown] Removed useless `@layer` css style which caused Jest/jsdom tests output errors. +- [Checkbox] Layout issue when using external label with htmlLabelFor-attribute ### Core diff --git a/packages/core/src/components/checkbox/checkbox.css b/packages/core/src/components/checkbox/checkbox.css index 0c1b8f9bcf..4c7076fe4b 100644 --- a/packages/core/src/components/checkbox/checkbox.css +++ b/packages/core/src/components/checkbox/checkbox.css @@ -136,7 +136,7 @@ } .hds-checkbox .hds-checkbox__label--hidden { - padding-left: 0; + padding-left: var(--size); } /* ERROR */ diff --git a/packages/react/.loki/reference/chrome_iphone7_Components_Checkbox_With_External_Label.png b/packages/react/.loki/reference/chrome_iphone7_Components_Checkbox_With_External_Label.png new file mode 100644 index 0000000000000000000000000000000000000000..7f364e0faf751301844ffbb98d967adb0ac616f7 GIT binary patch literal 4077 zcmeHKXH=6*-p@s^B3@*@7NiI&T%;o+ARs6xLZpOh=!l3&2_S*cgB1(SMF>J@N|BZ* zorJ0gNQZ<_LcR2a5?Uw;fp@s?`{6xj_nh6&do~|3&pcC}ng9ICf8LlF>+$jk@<1RE zUa0;pGYEtW51wCe9|HfT@VszP{DL&o(}CbSg=wI25UB&T;0C`??gy_S5WYm{Ep3ay zl*N&7LyF~2^9p~4)S*K z|6a09A6`=v{X!%X)qer2kxQxgd=!)rJ8hp|A&@7>x%XFpiR;@bP~1LO$pwMbb036* z%9*F*`H(nA2_JnePdxT4gcqLC=|NlcLZ$H=fJ~%vT2(U>ZP^= zy2CNnY4V^GMC4o4za5i-p3gARmoHxq?zD7vZVdP*Pt*#jdUG$$CA2o7}o z_(Ax^3u0nrUL)$T#GY|#nMayDcwg^qHOVu4zPh^lnmxe6-jQ#oDsPs$H}cCuASEjb z)=FwYt685iGc9dxJ;=45gO~ph7q?>R>FLdHtxT#Q8X|bjU0kxs2qK9@ipOC3mI+1E zydfJ4Js3G#3lozJ63J|&^6^b=ZEYStKDeP_)FEC$aZypxSF@WmvfgJ{dbwL$YpWS( zDEAu4kBa&&_3C3C2M33@F)@7_jOxsyxvBxS4| zVGG^!%G_9K7WHV3IZF&&`NYM=)m!2U;}zAi>(bmDM%b^_#askIJp8RJ$&W_TRjAu3 z{^J&ymh`(_0Amz!1c#uO_QXq>$H&Ey#F;1g`8`NkQ1#HQuhUjg=$kut?!;rU1&xvX z^O><)r1vl_+G^SJXV0#LYVEn|-t_bM%MaMef^EZ@XndOVJ4f+mQhfEdDk#8`2__+R1oF(#Kh0woEw{(q~+vr=cm+3 zDU$&HdREfiQ8~t``Bh8Aww%Seo=mW)cSg3iZ%0fIXJv`MjEGQyo&{ij8yQ(5blJ}`2}(Vl2rBc>N~MKFKln?18D zRii)Kq&j5ND{QspA}W^PeC-#=IQKWo8xDKZb~JNop$nX-T>powk3RwSxRNm-oF%SZ zcj88pT305URYQMGNlF@ArpyBv%7tAt{Lt-Fot5>Y_=?l+&NhZfL@nmGw;OV{CS#?g zrAhpbp&u`%1%A(g1qBf>3XV(P$Kt>aJ`<3$^r@Ejt*x!ag}R!^nJDs_hr4@kRe(2Q ztk%A{J2|17*ml*-Uc@y|cI5^`a)pIv@(5Uif^aN=Zh> zIfLY^U2~Q?v>qRU@De?iiN+^uS^1t5>Zy zhmo8(MZ}xzM>oZvIec~!AD!zUF`m5ULz)eela1#`&oEX5s z1E|meA>j`n=8P~40WC{P0kEuD5)u;bOgd#>JE~BNCr_WwiH|>NfN*hf!7v+_W;$7L zoK5!DR^aybw$!wk$pqo@N&iK(lr18?Lw?(Xgj zofj||j5_WMfl#pf`Zc$~aza*R<<&NZA!}3U6_()f7uKqHDz!Pu6l}v!=6rvdAI%Jl z=F?n%=Mb`3CQ;>$M%QK|nxX`f6`dp6`mX|Ld~aw--8gdONYVCAzhk)a&Zap`GkdVa zRYS8591&_r1GVtT4Y_{L)XM6^X<4g`BPS&0mj7(v{j;vT{I0I9E^DcZu|A#XNC%Qr zo?>fhIbEt1;G@SWDk?$^)zs9S5)$&TRtTB;c^uodB>2CS^#3H~xUKFxr4P=4_WkA2 zW9(|+Rz^f-r5?twh;IJ zeWs#wQ?6dDh>IakD_Yq$V7*vLP$8@UG-gE?#~g5Gk97FHvX`W@;yb;X+pw*ljXHxwi# zyCZmoqK1ke&32|@1R9o?eWs_TB+sA!czzw4Hl|%K5Ja;j{8m%PT8Ir6bj&D^1ZtD$PJJFM4|q zIX>PugpXJjl3(5~_sxlm^g-8jWoe%sz*|f?-oDC4#IFiyZ|(MsP(Z@;ByjPqJ|6}WWo$%qMsG{EMmLXYIic%|l{R0AlC#YNoes&67*!;K_f#Wyf= z1n60}ui_*%ibN*MIc6R@bckAr2wNy>mi0apw;RSi+lPp~@9a#;F%o*US%AY)fG;Dc zfQbnS34dI_UN@8<_VeBOWUVk3B6U&GS9K*~NF7YSKO$)8KcT(MfL+=`75WPJx30v>!;ZwXm4_n7@};MGvQCCzb+Z*-t7r$HK!K z7bzJ$4`$q}0%%B=KOxn{~=o7UtP*% zy*rbqpI!i+pEO;X{Kvc7xFsA8?+;W39qLOyJpS+P@BiQ4b`QID$RB%nDX|TN2LjbK LzJ=Gh_w0WFqH}S7 literal 0 HcmV?d00001 diff --git a/packages/react/.loki/reference/chrome_laptop_Components_Checkbox_With_External_Label.png b/packages/react/.loki/reference/chrome_laptop_Components_Checkbox_With_External_Label.png new file mode 100644 index 0000000000000000000000000000000000000000..d04ea114f9347ca58b84902552ea6b1b7a37e1ec GIT binary patch literal 2396 zcmd5;X;c$g8jbCOjf%(7X&XV9ZUan%8UY~$BDf)zVN(P;DyT;iL^M@ zL?FIh1s&XX{Brh$DByg0jFH|{d0XQ_)k>Sku0>Y)1i$;_u{o6 z!&Uh6htjSa{$O_2?whf922cEtAS3nkXA@al*9taey}O^rb?^w||N6zkG}l6Os)OTf z`u(DgLz{aQ+WR40qNpWTR#jE$fj|(C_O@1YmcgqlNq@We4ZOI%t#1Wv_1&I-3)@Xe zXEwt2pT_m(u=RFG^nmT7ODnQqyZ6Itd-#MaZ#Vp}4)EkRnUKdLG|N>ZeBDX;a@eiT zIrghNfvWk&%79a^OXN$57@uwWuQ;{;swakqhO)v%1ER3(=T_x4HmRwphAz}as1zgS zGR!?3GweA`Q~20Xrr^guV;5?IrInRVIWibgx93B=o`G@m?|-+7oOsnsZ1`;*?c50b z>E5_e(xTZrRex|ULAy9F62a|8OrbHQiS0_I(qMwONE;X&Us;eBuqEXD`DWl%(AjzKC!c3Q8ud)h!zJWqA1UyCJ`c*J z<8Rj6O8OM*>gq~t&rC(aJJL^6@%j#^*MBAosS6YH(*iFae}Dht`SA+=Gd3HelD6Z> zWU`c(!CW%a$#Xs&=#m^xcjV_j9T0vBHP3lfsNSF&V|js@&;8l3GfC zErmR$PTK19GN^^V+s=-lo*skf;E?wnjWP0`;hZ=zM0bC%>xa{n8DIO0efR3G>W%za ze-&SI`7_kcw4Fgmh_elCiBDg=utwEP?Qd;ujU4TKy#3VcU67;QQd1mKJxk804hkuA zBFvmHih*3Sd8a#tLZJ`U>zTUqAJR01FE;ZIE%oU)(^@49;YA$@Icjr&uI(DA^<@ z*+uK{sVSNNJ|7p=ff)(XX*EAtIbqd1PO_rozso6g0SC>;MDv$(i*N0l&AsHPdrUkDBLIeC)I%LF~s z7Ak^sV*Kb0XT?l>g-vJ=b9z$5iRRLD+9u|nm)e^fwjBx@s0_(KM+EkipUzd(E|f)2 zfJB-m7A`xUpnaM8fKl;mldEYnvTlezF<509qr27dH4cGgANFW_d%GJ&0uV=?A5Nc^ z_bN~dr0@d3l{QFWFgkoLg3= zlSE-MFt7x@De``uH_C~fXvLwp_mOOAW+)vAbK)hTEr}fA>+3tFGK#24kxHfS`2(*) z1wvsqKx}kKom1T8_UlP@c6R-hAwCbulk90g;z1eO&TbeWBVTd%?%jO;NG^?9#aoKs z@yVrnDd>ZsrzZ_bk`)z1&UE`*K!K#;)WxZW^-z+tNp095tE;ycMizVeJr4I+^u+bH z5-3EFLd?apF5(;S7&0y?h9b%Xdzg>gkjrUhD zjH%Ct>1H@O5-2Dx*O@{`@?CTZ7cN{-s^#ScOy+i6+I9#q(>`qAzV*4rp(nR@wlch& zGiGOJVbZ_3vMfODvJSxVzzqWrdRKRMK0q!gRZ(H#;YcOFZ`@s@>Tp7}rK7xJVqyS- zR86L|p*yx6&7eb>NYPgvy9syvVL>jnI{KRW@FS9DrZ>2&@F-+pnk9Zoz^P~C>6=d{ zSi?b*NTlN8;`db%5@bu^(L5y}RnW&jZjDLmXqJ|iHVI#*cv)zam46v_GOOFE7^DCk zvp+W)34p+@HFnqqIO*kAdLk95{}2dy`r=G|;w%#1`R;mhSC$Kny4inex@af#U!7YLwSRn_wkwavdw)y} z|IaLZv~B$B@Gfuzszr`NFO9^`4S&tb|G(M(*WX394&iofkJ$f3vH_?70&?{{ShoL6 G;=chTlV+&^ literal 0 HcmV?d00001 diff --git a/packages/react/src/components/checkbox/Checkbox.stories.tsx b/packages/react/src/components/checkbox/Checkbox.stories.tsx index 98d8bdb80c..8fd0267a95 100644 --- a/packages/react/src/components/checkbox/Checkbox.stories.tsx +++ b/packages/react/src/components/checkbox/Checkbox.stories.tsx @@ -213,6 +213,22 @@ export const GroupWithParent = () => { GroupWithParent.storyName = 'Group with a parent'; +export const WithExternalLabel = () => { + const customStyle = { + '--background-unselected': 'teal', + 'margin-right': 'var(--spacing-2-xs)', + } as React.CSSProperties; + + return ( +
+ + +
+ ); +}; + export const Playground = (args) => { const [checkedItems, setCheckedItems] = useState({}); const options = ['Option 1', 'Option 2', 'Option 3']; From 1755274bc6a3aa7d52028786ac66c2bdefab249c Mon Sep 17 00:00:00 2001 From: NikoHelle Date: Tue, 16 Jan 2024 11:25:49 +0200 Subject: [PATCH 07/29] (hds-1514) Changed multer version Gatsby uses latest (1.4.5-lts.1) but for some vulnerability reason it has been forced to be 1.4.4. Could not find open vulnerability for 1.4.4. or 1.4.5 so changed to newer --- package.json | 2 +- site/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9d042960af..0e4598bd5b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@types/react-dom/@types/react": "17.0.2", "@types/react-dom/**/@types/react": "17.0.2", "**/@types/react-dom/**/@types/react": "17.0.2", - "multer": "1.4.4-lts.1", + "multer": "1.4.5-lts.1", "jpeg-js": "0.4.4", "json5": "2.2.2" } diff --git a/site/package.json b/site/package.json index ddb4119a94..f0bdb61f57 100644 --- a/site/package.json +++ b/site/package.json @@ -57,7 +57,7 @@ "stylelint-order": "^6.0.2" }, "resolutions": { - "multer": "1.4.4-lts.1", + "multer": "1.4.5-lts.1", "jpeg-js": "0.4.4" }, "keywords": [ From c7207c842366072e299fdc374cddbb75a44ff98b Mon Sep 17 00:00:00 2001 From: NikoHelle Date: Tue, 16 Jan 2024 11:43:02 +0200 Subject: [PATCH 08/29] (hds-1514) Fix warnings with json5 Splitted the resolutions to two versions instead forcing all to v2. --- package.json | 3 ++- yarn.lock | 23 +++++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 0e4598bd5b..6b3f5c69ca 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "**/@types/react-dom/**/@types/react": "17.0.2", "multer": "1.4.5-lts.1", "jpeg-js": "0.4.4", - "json5": "2.2.2" + "json5@>=2.0.0": "2.2.3", + "json5@>=1.0.0": "1.0.2" } } diff --git a/yarn.lock b/yarn.lock index a39b18d612..114db55c8d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18125,10 +18125,17 @@ json-stringify-safe@^5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@2.2.2, json5@2.x, json5@^1.0.1, json5@^1.0.2, json5@^2.1.0, json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: - version "2.2.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" - integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ== +json5@2.x, json5@>=2.0.0@2.2.3, json5@^2.1.0, json5@^2.1.2, json5@^2.1.3, json5@^2.2.0, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +json5@>=1.0.0@1.0.2, json5@^1.0.1, json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" jsonc-parser@3.2.0: version "3.2.0" @@ -20152,10 +20159,10 @@ msgpackr@^1.5.4: optionalDependencies: msgpackr-extract "^3.0.2" -multer@1.4.4-lts.1, multer@^1.4.5-lts.1: - version "1.4.4-lts.1" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.4-lts.1.tgz#24100f701a4611211cfae94ae16ea39bb314e04d" - integrity sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg== +multer@1.4.5-lts.1, multer@^1.4.5-lts.1: + version "1.4.5-lts.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" + integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== dependencies: append-field "^1.0.0" busboy "^1.0.0" From 59a2afaee4650345c04222f681a6221cb9d43926 Mon Sep 17 00:00:00 2001 From: NikoHelle Date: Tue, 16 Jan 2024 14:34:09 +0200 Subject: [PATCH 09/29] (hds-1514) Move from react-spring to @react-spring/web --- packages/react/package.json | 2 +- .../components/notification/Notification.tsx | 2 +- yarn.lock | 60 ++----------------- 3 files changed, 6 insertions(+), 58 deletions(-) diff --git a/packages/react/package.json b/packages/react/package.json index fcd9aa237f..8b4436eaa3 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -124,6 +124,7 @@ "@juggle/resize-observer": "3.2.0", "@popperjs/core": "2.11.5", "@react-aria/visually-hidden": "3.8.0", + "@react-spring/web": "9.3.0", "@types/cookie": "^0.4.1", "@typescript-eslint/parser": "^5.56.0", "await-to-js": "^3.0.0", @@ -141,7 +142,6 @@ "react-hook-form": "^7.43.3", "react-merge-refs": "1.1.0", "react-popper": "2.2.5", - "react-spring": "9.3.0", "react-use-measure": "2.0.1", "react-virtual": "2.10.4", "uuid": "^9.0.0", diff --git a/packages/react/src/components/notification/Notification.tsx b/packages/react/src/components/notification/Notification.tsx index 544dcf9b76..c99903c12d 100644 --- a/packages/react/src/components/notification/Notification.tsx +++ b/packages/react/src/components/notification/Notification.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useState } from 'react'; -import { animated, useSpring } from 'react-spring'; +import { animated, useSpring } from '@react-spring/web'; import { VisuallyHidden } from '@react-aria/visually-hidden'; import '../../styles/base.module.css'; diff --git a/yarn.lock b/yarn.lock index 114db55c8d..19907ab389 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4011,26 +4011,6 @@ "@react-spring/shared" "~9.3.0" "@react-spring/types" "~9.3.0" -"@react-spring/konva@~9.3.0": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.3.2.tgz#726d567c68bdd4b74c8683764c662fae08321910" - integrity sha512-LLpmj6bj7Z2LYZDM75JkQ+dNasvdH56+th7VXcoMcOouAcogfI+iJ5tIFFz4yI2f2oTJzy/RkjeovmHMYIP+KQ== - dependencies: - "@react-spring/animated" "~9.3.0" - "@react-spring/core" "~9.3.0" - "@react-spring/shared" "~9.3.0" - "@react-spring/types" "~9.3.0" - -"@react-spring/native@~9.3.0": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.3.2.tgz#0d2e4e9f3383e70c7568a5dd94937794bdc669f8" - integrity sha512-UQS07N639JIEJBGNGiFre6el6Sk5QEcOQeyBFyA7JmT4ewpRH7mM6JQ7Sd3DNduplsFmypIsWg+9+lmE2d52Rw== - dependencies: - "@react-spring/animated" "~9.3.0" - "@react-spring/core" "~9.3.0" - "@react-spring/shared" "~9.3.0" - "@react-spring/types" "~9.3.0" - "@react-spring/rafz@~9.3.0": version "9.3.2" resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.3.2.tgz#0cbd296cd17bbf1e7e49d3b3616884e026d5fb67" @@ -4044,35 +4024,15 @@ "@react-spring/rafz" "~9.3.0" "@react-spring/types" "~9.3.0" -"@react-spring/three@~9.3.0": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.3.2.tgz#e4321c1253077661b1a3de74d8a38a167368ef23" - integrity sha512-nZHHjOl4GksoOFNTwvP4h5bACm5OymCUsR3nejWFigqCPep8prUHaawX4kZRwfUbWTYgkp15yM5hy7BkWNN16A== - dependencies: - "@react-spring/animated" "~9.3.0" - "@react-spring/core" "~9.3.0" - "@react-spring/shared" "~9.3.0" - "@react-spring/types" "~9.3.0" - "@react-spring/types@~9.3.0": version "9.3.2" resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.3.2.tgz#0277d436e50d7a824897dd7bb880f4842fbcd0fe" integrity sha512-u+IK9z9Re4hjNkBYKebZr7xVDYTai2RNBsI4UPL/k0B6lCNSwuqWIXfKZUDVlMOeZHtDqayJn4xz6HcSkTj3FQ== -"@react-spring/web@~9.3.0": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.3.2.tgz#07620c17bf50b5b0b8bbf9cd8f1312d13778b207" - integrity sha512-zzM95rqanap6s0udRCoI4gerONjQjyI6I0h23UZ0X36w5sXmuzv/tBtjGPbsASo377EGM7tRIg9po1KHwb6yQg== - dependencies: - "@react-spring/animated" "~9.3.0" - "@react-spring/core" "~9.3.0" - "@react-spring/shared" "~9.3.0" - "@react-spring/types" "~9.3.0" - -"@react-spring/zdog@~9.3.0": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.3.2.tgz#e25307cda0c7171119f8f536f10ce25ef607c372" - integrity sha512-E8MtTG4kNBcW/sEu0Im7L2FZXmhZDfeHSNbaL35cebfBlL5iI6+Pdlr7A/RPJ2pCUUKJRLlxYu3DVTuaqwf6hQ== +"@react-spring/web@9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.3.0.tgz#48d1ebdd1d484065e0a943dbbb343af259496427" + integrity sha512-OTAGKRdyz6fLRR1tABFyw9KMpytyATIndQrj0O6RG47GfjiInpf4+WZKxo763vpS7z1OlnkI81WLUm/sqOqAnA== dependencies: "@react-spring/animated" "~9.3.0" "@react-spring/core" "~9.3.0" @@ -23917,18 +23877,6 @@ react-sizeme@^3.0.1: shallowequal "^1.1.0" throttle-debounce "^3.0.1" -react-spring@9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.3.0.tgz#4d71eecbfd4f0823bf67e5943d2b0fb77f3e26ad" - integrity sha512-zxhMUCM4ha22724q1CshmbzKUfqdUp2HyA4P72+A0xVF/9bgaFuMukI8C8/Rjfdqw6sGg3hZNvmY9Z8n4cqWmg== - dependencies: - "@react-spring/core" "~9.3.0" - "@react-spring/konva" "~9.3.0" - "@react-spring/native" "~9.3.0" - "@react-spring/three" "~9.3.0" - "@react-spring/web" "~9.3.0" - "@react-spring/zdog" "~9.3.0" - react-syntax-highlighter@^13.5.3: version "13.5.3" resolved "https://registry.yarnpkg.com/react-syntax-highlighter/-/react-syntax-highlighter-13.5.3.tgz#9712850f883a3e19eb858cf93fad7bb357eea9c6" From b1695e161b22474253490336688c60aa814d3b91 Mon Sep 17 00:00:00 2001 From: NikoHelle Date: Tue, 16 Jan 2024 16:35:24 +0200 Subject: [PATCH 10/29] (hds-1514) Fix eslint version mismatches Also had to update plugins and prettier. Also removed some plugins/rules that have been merged into prettier/eslint-config-prettier: prettier/@typescript-eslint prettier/react Changed some rules which caused hundreds of errors in the /src. --- packages/react/.eslintrc.json | 4 +- packages/react/package.json | 25 +- yarn.lock | 939 +++++++++++++++++++++++----------- 3 files changed, 655 insertions(+), 313 deletions(-) diff --git a/packages/react/.eslintrc.json b/packages/react/.eslintrc.json index 93e0cc2b24..0c9fcf9809 100644 --- a/packages/react/.eslintrc.json +++ b/packages/react/.eslintrc.json @@ -10,8 +10,6 @@ "plugin:import/typescript", "plugin:jest/recommended", "airbnb", - "prettier/@typescript-eslint", - "prettier/react", "plugin:prettier/recommended" // this should always be the last item on this array ], "plugins": ["@typescript-eslint", "prettier", "jest", "import"], @@ -24,6 +22,7 @@ "ignorePatterns": ["*.module.css"], "rules": { "no-use-before-define": "off", + "default-param-last": "off", "@typescript-eslint/no-use-before-define": ["error"], "no-shadow": "off", // replaced by ts-eslint rule below "@typescript-eslint/no-shadow": "error", @@ -40,6 +39,7 @@ "newlines-between": "always" } ], + "react/function-component-definition": "off", "react/jsx-filename-extension": "off", "react/jsx-one-expression-per-line": "off", "react/jsx-props-no-spreading": "off", diff --git a/packages/react/package.json b/packages/react/package.json index 8b4436eaa3..e592499237 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -71,20 +71,20 @@ "@types/rollup-plugin-generate-package-json": "^3.2.8", "@types/uuid": "^9.0.1", "@types/yup": "^0.32.0", - "@typescript-eslint/eslint-plugin": "5.10.2", + "@typescript-eslint/eslint-plugin": "^6.19.0", "@wessberg/rollup-plugin-ts": "2.0.4", "babel-jest": "^26.0.1", "babel-plugin-require-context-hook": "1.0.0", "chalk": "4.0.0", - "eslint": "7.1.0", - "eslint-config-airbnb": "18.2.1", - "eslint-config-prettier": "6.11.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jest": "23.13.1", - "eslint-plugin-jsx-a11y": "6.2.3", - "eslint-plugin-prettier": "3.1.3", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "4.0.2", + "eslint": "8.56.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jest": "^27.6.3", + "eslint-plugin-jsx-a11y": "^6.6.0", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "identity-obj-proxy": "3.0.0", "inquirer": "7.1.0", "jest": "^26.0.1", @@ -94,7 +94,7 @@ "loki": "0.32.0", "path": "0.12.7", "postcss-import": "^12.0.1", - "prettier": "2.0.5", + "prettier": "3.2.2", "react": "17.0.2", "react-dom": "17.0.2", "react-scripts": "^5.0.0", @@ -126,7 +126,7 @@ "@react-aria/visually-hidden": "3.8.0", "@react-spring/web": "9.3.0", "@types/cookie": "^0.4.1", - "@typescript-eslint/parser": "^5.56.0", + "@typescript-eslint/parser": "^6.19.0", "await-to-js": "^3.0.0", "cookie": "^0.4.1", "crc-32": "1.2.0", @@ -149,7 +149,6 @@ }, "resolutions": { "babel-jest": "^26.0.1", - "eslint-plugin-react": "7.27.1", "jest": "^26.0.1", "downshift/react-is": "^16.13.1", "react-scripts": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index 19907ab389..259afba433 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1615,13 +1615,20 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.17.9", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.17.9", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.23.2": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" + integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.20.7", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" @@ -1974,7 +1981,7 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== @@ -1986,6 +1993,11 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== +"@eslint-community/regexpp@^4.5.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + "@eslint/eslintrc@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" @@ -2016,6 +2028,26 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.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" + +"@eslint/js@8.56.0": + version "8.56.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" + integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== + "@eslint/js@^8.46.0": version "8.46.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6" @@ -2305,6 +2337,15 @@ debug "^4.1.1" minimatch "^3.0.5" +"@humanwhocodes/config-array@^0.11.13": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -2324,6 +2365,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + "@hutson/parse-repository-url@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" @@ -3904,6 +3950,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.0.tgz#7d8dacb7fdef0e4387caf7396cbd77f179867d06" + integrity sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ== + "@pmmmwh/react-refresh-webpack-plugin@^0.5.1", "@pmmmwh/react-refresh-webpack-plugin@^0.5.10", "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": version "0.5.10" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" @@ -6869,11 +6920,16 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.12" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== +"@types/json-schema@^7.0.12": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -7096,6 +7152,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== +"@types/semver@^7.5.0": + version "7.5.6" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" + integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== + "@types/send@*": version "0.17.1" resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" @@ -7257,21 +7318,6 @@ dependencies: yup "*" -"@typescript-eslint/eslint-plugin@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz#f8c1d59fc37bd6d9d11c97267fdfe722c4777152" - integrity sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q== - dependencies: - "@typescript-eslint/scope-manager" "5.10.2" - "@typescript-eslint/type-utils" "5.10.2" - "@typescript-eslint/utils" "5.10.2" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.2.0" - semver "^7.3.5" - tsutils "^3.21.0" - "@typescript-eslint/eslint-plugin@^5.5.0", "@typescript-eslint/eslint-plugin@^5.59.8": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -7288,15 +7334,22 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@^2.5.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" - integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== +"@typescript-eslint/eslint-plugin@^6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz#db03f3313b57a30fbbdad2e6929e88fc7feaf9ba" + integrity sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg== dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.34.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.19.0" + "@typescript-eslint/type-utils" "6.19.0" + "@typescript-eslint/utils" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.4" + natural-compare "^1.4.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" "@typescript-eslint/experimental-utils@^5.0.0": version "5.62.0" @@ -7305,7 +7358,7 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@^5.5.0", "@typescript-eslint/parser@^5.56.0", "@typescript-eslint/parser@^5.59.8": +"@typescript-eslint/parser@^5.5.0", "@typescript-eslint/parser@^5.59.8": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== @@ -7315,13 +7368,16 @@ "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz#92c0bc935ec00f3d8638cdffb3d0e70c9b879639" - integrity sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw== +"@typescript-eslint/parser@^6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.19.0.tgz#80344086f362181890ade7e94fc35fe0480bfdf5" + integrity sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow== dependencies: - "@typescript-eslint/types" "5.10.2" - "@typescript-eslint/visitor-keys" "5.10.2" + "@typescript-eslint/scope-manager" "6.19.0" + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/typescript-estree" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" + debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" @@ -7331,14 +7387,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz#ad5acdf98a7d2ab030bea81f17da457519101ceb" - integrity sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw== +"@typescript-eslint/scope-manager@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz#b6d2abb825b29ab70cb542d220e40c61c1678116" + integrity sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ== dependencies: - "@typescript-eslint/utils" "5.10.2" - debug "^4.3.2" - tsutils "^3.21.0" + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -7350,41 +7405,25 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.2.tgz#604d15d795c4601fffba6ecb4587ff9fdec68ce8" - integrity sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w== +"@typescript-eslint/type-utils@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz#522a494ef0d3e9fdc5e23a7c22c9331bbade0101" + integrity sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w== + dependencies: + "@typescript-eslint/typescript-estree" "6.19.0" + "@typescript-eslint/utils" "6.19.0" + debug "^4.3.4" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/typescript-estree@2.34.0": - version "2.34.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" - integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz#810906056cd3ddcb35aa333fdbbef3713b0fe4a7" - integrity sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ== - dependencies: - "@typescript-eslint/types" "5.10.2" - "@typescript-eslint/visitor-keys" "5.10.2" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" +"@typescript-eslint/types@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.19.0.tgz#689b0498c436272a6a2059b09f44bcbd90de294a" + integrity sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -7399,19 +7438,21 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.2.tgz#1fcd37547c32c648ab11aea7173ec30060ee87a8" - integrity sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg== +"@typescript-eslint/typescript-estree@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz#0813ba364a409afb4d62348aec0202600cb468fa" + integrity sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ== dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.10.2" - "@typescript-eslint/types" "5.10.2" - "@typescript-eslint/typescript-estree" "5.10.2" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/visitor-keys" "6.19.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "9.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.58.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== @@ -7425,13 +7466,18 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.10.2": - version "5.10.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz#fdbf272d8e61c045d865bd6c8b41bea73d222f3d" - integrity sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q== - dependencies: - "@typescript-eslint/types" "5.10.2" - eslint-visitor-keys "^3.0.0" +"@typescript-eslint/utils@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.19.0.tgz#557b72c3eeb4f73bef8037c85dae57b21beb1a4b" + integrity sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.19.0" + "@typescript-eslint/types" "6.19.0" + "@typescript-eslint/typescript-estree" "6.19.0" + semver "^7.5.4" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -7441,6 +7487,19 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.19.0": + version "6.19.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz#4565e0ecd63ca1f81b96f1dd76e49f746c6b2b49" + integrity sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ== + dependencies: + "@typescript-eslint/types" "6.19.0" + eslint-visitor-keys "^3.4.1" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@vercel/webpack-asset-relocator-loader@^1.7.3": version "1.7.3" resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.3.tgz#e65ca1fd9feb045039788f9b4710e5acc84b01b0" @@ -8147,14 +8206,6 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw== - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - aria-query@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" @@ -8163,7 +8214,7 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -aria-query@^5.1.3: +aria-query@^5.1.3, aria-query@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== @@ -8218,7 +8269,7 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== -array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4, array-includes@^3.1.6: +array-includes@^3.0.3, array-includes@^3.1.4, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== @@ -8229,6 +8280,17 @@ array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4, array-inclu get-intrinsic "^1.1.3" is-string "^1.0.7" +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + array-iterate@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7" @@ -8277,6 +8339,17 @@ array.prototype.findlastindex@^1.2.2: es-shim-unscopables "^1.0.0" get-intrinsic "^1.1.3" +array.prototype.findlastindex@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" + integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + array.prototype.flat@^1.2.1, array.prototype.flat@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" @@ -8287,6 +8360,16 @@ array.prototype.flat@^1.2.1, array.prototype.flat@^1.3.1: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.2.5, array.prototype.flatmap@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" @@ -8297,6 +8380,16 @@ array.prototype.flatmap@^1.2.1, array.prototype.flatmap@^1.2.5, array.prototype. es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + array.prototype.map@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.5.tgz#6e43c2fee6c0fb5e4806da2dc92eb00970809e55" @@ -8380,11 +8473,16 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: +ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + ast-types@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd" @@ -8392,11 +8490,6 @@ ast-types@^0.14.2: dependencies: tslib "^2.0.1" -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -8422,6 +8515,13 @@ async@^3.2.0, async@^3.2.3, async@^3.2.4: resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -8498,6 +8598,11 @@ axe-core@4.2.1: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.2.1.tgz#2e50bcf10ee5b819014f6e342e41e45096239e34" integrity sha512-evY7DN8qSIbsW2H/TWQ1bX3sXN1d4MNb5Vb4n7BzPuCwRHdkZ1H2eNLuSh73EoQqkGKUtju2G2HCcjCfhvZIAA== +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + axe-core@^3.5.5: version "3.5.6" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.6.tgz#e762a90d7f6dbd244ceacb4e72760ff8aad521b5" @@ -8524,12 +8629,7 @@ axios@^1.0.0: form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^2.0.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -axobject-query@^3.1.1: +axobject-query@^3.1.1, axobject-query@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== @@ -9502,6 +9602,15 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + call-me-maybe@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" @@ -10304,7 +10413,7 @@ commander@2.11.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@2.x, commander@^2.11.0, commander@^2.19.0, commander@^2.20.0, commander@^2.9.0: +commander@2.x, commander@^2.19.0, commander@^2.20.0, commander@^2.9.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -11343,7 +11452,7 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -damerau-levenshtein@^1.0.4, damerau-levenshtein@^1.0.8: +damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== @@ -11391,7 +11500,7 @@ debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -11491,6 +11600,15 @@ defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" @@ -11504,6 +11622,15 @@ define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, de has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -12041,7 +12168,7 @@ emittery@^0.8.1: resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== -emoji-regex@^7.0.1, emoji-regex@^7.0.2: +emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== @@ -12288,6 +12415,26 @@ es-get-iterator@^1.0.2: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" +es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + es-module-lexer@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" @@ -12405,30 +12552,29 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-airbnb-base@^14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" - integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== dependencies: confusing-browser-globals "^1.0.10" object.assign "^4.1.2" - object.entries "^1.1.2" + object.entries "^1.1.5" + semver "^6.3.0" -eslint-config-airbnb@18.2.1: - version "18.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9" - integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg== +eslint-config-airbnb@^19.0.4: + version "19.0.4" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3" + integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew== dependencies: - eslint-config-airbnb-base "^14.2.1" + eslint-config-airbnb-base "^15.0.0" object.assign "^4.1.2" - object.entries "^1.1.2" + object.entries "^1.1.5" -eslint-config-prettier@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" - integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== - dependencies: - get-stdin "^6.0.0" +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== eslint-config-react-app@^6.0.0: version "6.0.0" @@ -12466,6 +12612,15 @@ eslint-import-resolver-node@^0.3.7: is-core-module "^2.11.0" resolve "^1.22.1" +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + eslint-module-utils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" @@ -12489,7 +12644,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.22.1, eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: version "2.28.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz#8d66d6925117b06c4018d491ae84469eb3cb1005" integrity sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q== @@ -12513,12 +12668,28 @@ eslint-plugin-import@^2.22.1, eslint-plugin-import@^2.25.3, eslint-plugin-import semver "^6.3.1" tsconfig-paths "^3.14.2" -eslint-plugin-jest@23.13.1: - version "23.13.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.13.1.tgz#b2ce83f76064ad8ba1f1f26f322b86a86e44148e" - integrity sha512-TRLJH6M6EDvGocD98a7yVThrAOCK9WJfo9phuUb0MJptcrOYZeCKzC9aOzZCD93sxXCsiJVZywaTHdI/mAi0FQ== +eslint-plugin-import@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== dependencies: - "@typescript-eslint/experimental-utils" "^2.5.0" + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" eslint-plugin-jest@^25.3.0: version "25.7.0" @@ -12527,20 +12698,12 @@ eslint-plugin-jest@^25.3.0: dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" -eslint-plugin-jsx-a11y@6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== +eslint-plugin-jest@^27.6.3: + version "27.6.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.3.tgz#8acb8b1e45597fe1f4d4cf25163d90119efc12be" + integrity sha512-+YsJFVH6R+tOiO3gCJon5oqn4KWc+mDq2leudk8mrp8RFubLOo9CVyi3cib4L7XMpxExmkmBZQTPDYVBzgpgOA== dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.2.1" + "@typescript-eslint/utils" "^5.10.0" eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: version "6.7.1" @@ -12564,17 +12727,35 @@ eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: object.fromentries "^2.0.6" semver "^6.3.0" -eslint-plugin-prettier@3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" - integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== +eslint-plugin-jsx-a11y@^6.6.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +eslint-plugin-prettier@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" + integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== dependencies: prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.2.tgz#03700ca761eacc1b6436074c456f90a8e331ff28" - integrity sha512-kAMRjNztrLW1rK+81X1NwMB2LqG+nc7Q8AibnG8/VyWhQK8SP6JotCFG+HL4u1EjziplxVz4jARdR8gGk8pLDA== + synckit "^0.8.6" eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: version "4.6.0" @@ -12622,6 +12803,28 @@ eslint-plugin-react@^7.32.2: semver "^6.3.1" string.prototype.matchall "^4.0.8" +eslint-plugin-react@^7.33.2: + version "7.33.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + eslint-plugin-testing-library@^5.0.1: version "5.11.0" resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.0.tgz#0bad7668e216e20dd12f8c3652ca353009163121" @@ -12629,7 +12832,7 @@ eslint-plugin-testing-library@^5.0.1: dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -12653,20 +12856,13 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" @@ -12677,11 +12873,16 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.2: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f" integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw== +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + eslint-webpack-plugin@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz#0525793a4f8c652c1c6d863995ce1e0f2dcbd143" @@ -12705,47 +12906,49 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.1.0.tgz#d9a1df25e5b7859b0a3d86bb05f0940ab676a851" - integrity sha512-DfS3b8iHMK5z/YLSme8K5cge168I8j8o1uiVmFCgnnjxZQbCGyraF8bMl7Ju4yfBmCuxD7shOF7eqGkcuIHfsA== +eslint@8.56.0: + version "8.56.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" + integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.56.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - eslint-visitor-keys "^1.1.0" - espree "^7.0.0" - esquery "^1.2.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" imurmurhash "^0.1.4" - inquirer "^7.0.0" is-glob "^4.0.0" - js-yaml "^3.13.1" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.14" - minimatch "^3.0.4" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" + optionator "^0.9.3" + strip-ansi "^6.0.1" text-table "^0.2.0" - v8-compile-cache "^2.0.3" eslint@^7.32.0: version "7.32.0" @@ -12836,7 +13039,7 @@ eslint@^8.3.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^7.0.0, espree@^7.3.0, espree@^7.3.1: +espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== @@ -12859,7 +13062,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.2.0, esquery@^1.4.0, esquery@^1.4.2: +esquery@^1.4.0, esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -13392,13 +13595,6 @@ figures@^1.7.0: escape-string-regexp "^1.0.5" object-assign "^4.1.0" -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -13555,15 +13751,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -13577,11 +13764,6 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - flatted@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" @@ -13850,6 +14032,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function-double@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/function-double/-/function-double-1.0.4.tgz#46074f215a171594036d816fa963c2902b482c86" @@ -14574,6 +14761,16 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@ has-proto "^1.0.1" has-symbols "^1.0.3" +get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" @@ -14604,11 +14801,6 @@ get-port@^3.2.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - get-stdin@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" @@ -14713,7 +14905,7 @@ github-slugger@^2.0.0: resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-2.0.0.tgz#52cf2f9279a21eb6c59dd385b410f0c0adda8f1a" integrity sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw== -glob-parent@5.1.2, glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -14860,13 +15052,6 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - globals@^13.19.0, globals@^13.2.0, globals@^13.6.0, globals@^13.9.0: version "13.20.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" @@ -15111,6 +15296,13 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + has-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" @@ -15201,6 +15393,13 @@ hasha@^5.2.2: is-stream "^2.0.0" type-fest "^0.8.0" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + hast-to-hyperscript@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d" @@ -15874,7 +16073,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.0, ignore@^5.0.4, ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.0.0, ignore@^5.0.4, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -16278,6 +16477,13 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -16355,6 +16561,13 @@ is-core-module@^2.11.0, is-core-module@^2.12.0, is-core-module@^2.12.1, is-core- dependencies: has "^1.0.3" +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -16369,7 +16582,7 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -16444,6 +16657,13 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + is-finite@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" @@ -16476,7 +16696,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.7: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== @@ -16538,7 +16758,7 @@ is-lower-case@^2.0.2: dependencies: tslib "^2.0.3" -is-map@^2.0.2: +is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== @@ -16690,7 +16910,7 @@ is-root@^2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-set@^2.0.2: +is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== @@ -16800,6 +17020,11 @@ is-valid-path@^0.1.1: dependencies: is-invalid-path "^0.1.0" +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -16807,6 +17032,14 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -16954,6 +17187,17 @@ iterate-value@^1.0.2: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + jackspeak@^2.0.3: version "2.2.2" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.2.tgz#707c62733924b8dc2a0a629dc6248577788b5385" @@ -18128,15 +18372,7 @@ jsonpointer@^5.0.0: resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== -jsx-ast-utils@^2.2.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3, jsx-ast-utils@^3.3.5: version "3.3.5" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== @@ -18215,7 +18451,7 @@ known-css-properties@^0.27.0: resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.27.0.tgz#82a9358dda5fe7f7bd12b5e7142c0a205393c0c5" integrity sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg== -language-subtag-registry@~0.3.2: +language-subtag-registry@^0.3.20, language-subtag-registry@~0.3.2: version "0.3.22" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== @@ -18227,6 +18463,13 @@ language-tags@=1.0.5: dependencies: language-subtag-registry "~0.3.2" +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + latest-version@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-7.0.0.tgz#843201591ea81a4d404932eeb61240fe04e9e5da" @@ -19893,6 +20136,13 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" +minimatch@9.0.3, minimatch@^9.0.0, minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^5.0.1: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" @@ -19907,13 +20157,6 @@ minimatch@^8.0.2: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.0, minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - minimist-options@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -20784,7 +21027,7 @@ object.assign@^4.1.0, object.assign@^4.1.2, object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.0, object.entries@^1.1.2, object.entries@^1.1.6: +object.entries@^1.1.0, object.entries@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== @@ -20793,7 +21036,7 @@ object.entries@^1.1.0, object.entries@^1.1.2, object.entries@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" -object.entries@^1.1.5: +object.entries@^1.1.5, object.entries@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== @@ -20811,7 +21054,7 @@ object.entries@^1.1.5: define-properties "^1.1.4" es-abstract "^1.20.4" -object.fromentries@^2.0.5: +object.fromentries@^2.0.5, object.fromentries@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== @@ -20841,6 +21084,16 @@ object.groupby@^1.0.0: es-abstract "^1.21.2" get-intrinsic "^1.2.1" +object.groupby@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" + integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + object.hasown@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" @@ -20873,7 +21126,7 @@ object.values@^1.1.0, object.values@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" -object.values@^1.1.5: +object.values@^1.1.5, object.values@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== @@ -23047,16 +23300,16 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== - prettier@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== +prettier@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.2.tgz#96e580f7ca9c96090ad054616c0c4597e2844b65" + integrity sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A== + "prettier@>=2.2.1 <=2.3.0": version "2.3.0" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" @@ -24152,6 +24405,18 @@ redux@4.2.1: dependencies: "@babel/runtime" "^7.9.2" +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + refractor@^3.1.0, refractor@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.6.0.tgz#ac318f5a0715ead790fcfb0c71f4dd83d977935a" @@ -24190,6 +24455,11 @@ regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.4, regenerator-runtime@^ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + regenerator-transform@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" @@ -24219,7 +24489,7 @@ regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: define-properties "^1.2.0" functions-have-names "^1.2.3" -regexpp@^3.1.0, regexpp@^3.2.0: +regexpp@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -24622,6 +24892,15 @@ resolve@^1.22.3: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.3, resolve@^2.0.0-next.4: version "2.0.0-next.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" @@ -24712,13 +24991,6 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg== -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -24922,6 +25194,16 @@ safe-array-concat@^1.0.0: has-symbols "^1.0.3" isarray "^2.0.5" +safe-array-concat@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -25260,6 +25542,26 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.0.tgz#2f81dc6c16c7059bda5ab7c82c11f03a515ed8e1" + integrity sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w== + dependencies: + define-data-property "^1.1.1" + function-bind "^1.1.2" + get-intrinsic "^1.2.2" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -25447,15 +25749,6 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" @@ -26556,15 +26849,13 @@ synchronous-promise@^2.0.15: resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.17.tgz#38901319632f946c982152586f2caf8ddc25c032" integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g== -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== +synckit@^0.8.6: + version "0.8.8" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" + integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" table@^6.0.9, table@^6.8.1: version "6.8.1" @@ -27093,6 +27384,11 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + ts-clone-node@^0.3.29: version "0.3.32" resolved "https://registry.yarnpkg.com/ts-clone-node/-/ts-clone-node-0.3.32.tgz#daf7f941282a6c8f89b2053bf7326d67d01401f4" @@ -27141,6 +27437,16 @@ tsconfig-paths@^3.14.2: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tsconfig-paths@^4.1.2: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -27160,12 +27466,17 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== +tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslib@~2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== -tsutils@^3.17.1, tsutils@^3.21.0: +tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== @@ -28455,6 +28766,34 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" @@ -28471,6 +28810,17 @@ which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.2: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -28927,13 +29277,6 @@ write-pkg@4.0.0, write-pkg@^4.0.0: type-fest "^0.4.1" write-json-file "^3.2.0" -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - ws@^7, ws@^7.2.0, ws@^7.4.6, ws@^7.5.5: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" From e2a95e17c5328757750c61d8bb51bd136a45bcd4 Mon Sep 17 00:00:00 2001 From: NikoHelle Date: Tue, 16 Jan 2024 16:39:57 +0200 Subject: [PATCH 11/29] (hds-1514) Fixed eslint errors Autofixed what could, and the manually. Fix warnings for missing labels The warning was: "A control must be associated with a text label" --- packages/react/.eslintrc.json | 7 +- .../components/breadcrumb/Breadcrumb.test.tsx | 1 + .../src/components/card/Card.stories.tsx | 9 +-- .../cookieConsent/CookieConsent.stories.tsx | 9 +-- .../__mocks__/mockWindowLocation.ts | 2 +- .../cookieConsent/content.builder.test.ts | 2 +- .../cookieConsent/content.builder.ts | 21 +++--- .../contexts/ContextComponent.test.tsx | 10 +-- .../cookieConsent/cookieConsentController.ts | 4 +- .../cookieConsent/cookieController.test.ts | 2 +- .../cookieModal/CookieModal.test.tsx | 4 +- .../cookieConsent/cookieModal/Portal.tsx | 1 + .../cookiePage/CookiePage.test.tsx | 14 ++-- .../components/cookieConsent/getContent.ts | 69 +++++++------------ .../src/components/cookieConsent/test.util.ts | 8 +-- .../useModalPlaceHolder.test.tsx | 2 +- .../react/src/components/dialog/Dialog.tsx | 6 +- .../dropdown/combobox/Combobox.test.tsx | 2 +- .../components/dropdown/combobox/Combobox.tsx | 13 ++-- .../src/components/fileInput/FileInput.tsx | 53 +++++++------- .../src/components/header/Header.stories.tsx | 2 +- .../header/LanguageContext.test.tsx | 2 +- .../headerActionBar/HeaderActionBar.tsx | 6 +- .../HeaderActionBarNavigationMenu.test.tsx | 29 ++------ .../HeaderActionBarNavigationMenu.tsx | 2 +- .../HeaderLanguageSelector.test.tsx | 2 +- .../HeaderLanguageSelector.tsx | 2 + .../HeaderLanguageSelector.test.tsx.snap | 2 +- .../highlight/Highlight.stories.tsx | 3 +- .../login/__mocks__/mockWindowLocation.ts | 1 - .../apiTokensClient/apiTokenClient.test.ts | 18 ++--- .../apiTokensClient/apiTokensClientError.ts | 6 +- .../login/apiTokensClient/hooks.test.tsx | 13 ++-- .../components/login/beacon/beacon.test.ts | 4 +- .../src/components/login/beacon/beacon.ts | 6 +- .../src/components/login/beacon/hooks.ts | 2 +- .../components/login/beacon/signals.test.ts | 18 ++--- .../src/components/login/beacon/signals.ts | 2 +- .../components/login/client/hooks.test.tsx | 2 +- .../login/client/oidcClient.test.ts | 16 ++--- .../src/components/login/client/oidcClient.ts | 6 +- .../login/client/oidcClientError.ts | 6 +- .../login/components/LoginButton.tsx | 20 +++--- .../components/LoginCallbackHandler.test.tsx | 2 +- .../login/components/LoginCallbackHandler.tsx | 1 + .../components/WithoutAuthenticatedUser.tsx | 1 + .../login/sessionPoller/hooks.test.tsx | 9 +-- .../login/sessionPoller/sessionPoller.test.ts | 2 +- .../login/sessionPoller/sessionPollerError.ts | 6 +- .../login/sessionPoller/signals.test.ts | 8 +-- .../login/testUtils/oidcClientTestUtil.ts | 10 +-- .../login/testUtils/timerTestUtil.ts | 2 +- .../login/testUtils/userTestUtil.ts | 6 +- .../components/login/utils/httpPoller.test.ts | 22 +++--- .../login/utils/userRenewalPromise.test.ts | 4 +- .../src/components/pagination/Pagination.tsx | 9 ++- .../components/searchInput/SearchInput.tsx | 11 +-- .../sideNavigation/mainLevel/MainLevel.tsx | 5 +- .../react/src/components/stepper/Stepper.tsx | 2 + packages/react/src/components/table/Table.tsx | 1 + .../react/src/components/tabs/TabList.tsx | 7 +- .../src/components/timeInput/TimeInput.tsx | 2 + .../react/src/components/tooltip/Tooltip.tsx | 38 +++++----- .../input-wrapper/InputWrapper.test.tsx | 2 + .../src/internal/skipLink/SkipLink.test.tsx | 2 +- .../__snapshots__/SkipLink.test.tsx.snap | 4 +- .../react/src/utils/getIsElementLoaded.ts | 4 +- .../src/utils/partiallyCompareObjects.test.ts | 1 + .../src/utils/sequentialAsyncLoop.test.ts | 2 +- .../react/src/utils/sequentialAsyncLoop.ts | 31 +++++---- 70 files changed, 290 insertions(+), 313 deletions(-) diff --git a/packages/react/.eslintrc.json b/packages/react/.eslintrc.json index 0c9fcf9809..93023f760c 100644 --- a/packages/react/.eslintrc.json +++ b/packages/react/.eslintrc.json @@ -53,7 +53,12 @@ "react/prop-types": "off", "import/extensions": "off", "import/prefer-default-export": "off", - "jsx-a11y/control-has-associated-label": "warn", + "jsx-a11y/control-has-associated-label": [ + 1, + { + "ignoreElements": ["td"] + } + ], "jsx-a11y/no-interactive-element-to-noninteractive-role": "warn", "jsx-a11y/label-has-associated-control": [ 2, diff --git a/packages/react/src/components/breadcrumb/Breadcrumb.test.tsx b/packages/react/src/components/breadcrumb/Breadcrumb.test.tsx index 264b1c7330..d53c1da98c 100644 --- a/packages/react/src/components/breadcrumb/Breadcrumb.test.tsx +++ b/packages/react/src/components/breadcrumb/Breadcrumb.test.tsx @@ -1,3 +1,4 @@ +/* eslint-disable jest/no-conditional-expect */ import React from 'react'; import { render } from '@testing-library/react'; import { axe } from 'jest-axe'; diff --git a/packages/react/src/components/card/Card.stories.tsx b/packages/react/src/components/card/Card.stories.tsx index 1b3bf9d3d6..da10ad12e4 100644 --- a/packages/react/src/components/card/Card.stories.tsx +++ b/packages/react/src/components/card/Card.stories.tsx @@ -29,8 +29,7 @@ export const TextHeading = (args) => ; TextHeading.storyName = 'With text & heading'; TextHeading.args = { heading: 'Card', - text: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', }; export const WithOtherComponents = (args) => ( @@ -43,8 +42,7 @@ export const WithOtherComponents = (args) => ( WithOtherComponents.storyName = 'With other components'; WithOtherComponents.args = { heading: 'Card', - text: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', }; export const WithCustomTheme = (args) => ; @@ -52,8 +50,7 @@ WithCustomTheme.storyName = 'With custom theme'; WithCustomTheme.args = { border: true, heading: 'Card', - text: - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', + text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', theme: { '--background-color': 'var(--color-white)', '--border-color': 'var(--color-black-90)', diff --git a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx index 9276a74edf..a05ae989a6 100644 --- a/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx +++ b/packages/react/src/components/cookieConsent/CookieConsent.stories.tsx @@ -1050,8 +1050,7 @@ export const TunnistamoLoginCookies = (args) => { sections: { main: { title: 'List all cookies used in Tunnistamo login', - text: - 'This is an example how to get consents for all cookies when using Tunnistamo login flow. All used session, language, load balancer and csrf cookies are listed. Tunnistamo uses Tunnistus and Suomi.fi services and cookies of those services are also listed as they have no consent queries of their own.', + text: 'This is an example how to get consents for all cookies when using Tunnistamo login flow. All used session, language, load balancer and csrf cookies are listed. Tunnistamo uses Tunnistus and Suomi.fi services and cookies of those services are also listed as they have no consent queries of their own.', }, }, }, @@ -1076,11 +1075,7 @@ export const TunnistamoLoginCookies = (args) => { focusTargetSelector: '#focused-element-after-cookie-consent-closed', }; - return ( - <> - - - ); + return ; }; TunnistamoLoginCookies.parameters = { diff --git a/packages/react/src/components/cookieConsent/__mocks__/mockWindowLocation.ts b/packages/react/src/components/cookieConsent/__mocks__/mockWindowLocation.ts index 9943edca33..299daada6b 100644 --- a/packages/react/src/components/cookieConsent/__mocks__/mockWindowLocation.ts +++ b/packages/react/src/components/cookieConsent/__mocks__/mockWindowLocation.ts @@ -3,7 +3,7 @@ export type MockedWindowLocationActions = { restore: () => void; }; export default function mockWindowLocation(): MockedWindowLocationActions { - const globalWin = (global as unknown) as Window; + const globalWin = global as unknown as Window; let oldWindowLocation: Location | undefined = globalWin.location; let urlObject = new URL('https://default.domain.com'); const location = Object.defineProperties( diff --git a/packages/react/src/components/cookieConsent/content.builder.test.ts b/packages/react/src/components/cookieConsent/content.builder.test.ts index cc06acf512..85c5dc1998 100644 --- a/packages/react/src/components/cookieConsent/content.builder.test.ts +++ b/packages/react/src/components/cookieConsent/content.builder.test.ts @@ -884,7 +884,7 @@ describe(`content.builder.ts`, () => { }); }); describe('Automatically adds the consent storage cookie to required consents', () => { - it('when noCommonConsentCookie is not true ', () => { + it('when noCommonConsentCookie is not true', () => { const content = createContent({ siteName, currentLanguage: 'fi' }); expect(content.requiredCookies).toBeDefined(); expect(content.requiredCookies?.groups[0].title).toBe(commonContent.commonGroups.sharedConsents.fi.title); diff --git a/packages/react/src/components/cookieConsent/content.builder.ts b/packages/react/src/components/cookieConsent/content.builder.ts index 071c71d1bd..22d9f2280b 100644 --- a/packages/react/src/components/cookieConsent/content.builder.ts +++ b/packages/react/src/components/cookieConsent/content.builder.ts @@ -92,9 +92,10 @@ function getLanguage(lang: SupportedLanguage, overrides: CookieContentSource['la } as Content['language']; } -function getCategoryDescriptions( - language: SupportedLanguage, -): { requiredCookies: Description; optionalCookies: Description } { +function getCategoryDescriptions(language: SupportedLanguage): { + requiredCookies: Description; + optionalCookies: Description; +} { const { requiredCookies, optionalCookies } = commonContent; return { requiredCookies: requiredCookies[language], @@ -160,9 +161,10 @@ function mergeObjects(target: MergableContent, source: MergableContent, paths: s }); } -function buildCookieGroups( - props: CookieContentSource, -): { requiredCookies: CookieGroup[]; optionalCookies: CookieGroup[] } { +function buildCookieGroups(props: CookieContentSource): { + requiredCookies: CookieGroup[]; + optionalCookies: CookieGroup[]; +} { const requiredCookies = []; const optionalCookies = []; const groupMap = new Map(); @@ -309,9 +311,10 @@ export function createContent(props: CookieContentSource): Content { return content as Content; } -export function pickConsentIdsFromContentSource( - contentSource: Partial, -): { required: string[]; optional: string[] } { +export function pickConsentIdsFromContentSource(contentSource: Partial): { + required: string[]; + optional: string[]; +} { let required: string[] = []; let optional: string[] = []; diff --git a/packages/react/src/components/cookieConsent/contexts/ContextComponent.test.tsx b/packages/react/src/components/cookieConsent/contexts/ContextComponent.test.tsx index 6c594107b0..ce7711a0f0 100644 --- a/packages/react/src/components/cookieConsent/contexts/ContextComponent.test.tsx +++ b/packages/react/src/components/cookieConsent/contexts/ContextComponent.test.tsx @@ -17,7 +17,7 @@ type TestConsentData = { cookieDomain?: string; }; -describe('ContextComponent ', () => { +describe('ContextComponent', () => { const mockedCookieControls = mockDocumentCookie(); const mockedWindowControls = mockWindowLocation(); const getSetCookieArguments = (index = -1) => extractSetCookieArguments(mockedCookieControls, index); @@ -166,7 +166,7 @@ describe('ContextComponent ', () => { ); }; - describe('Consumers should not ask for consents when hasUserHandledAllConsents() returns true. It ', () => { + describe('Consumers should not ask for consents when hasUserHandledAllConsents() returns true. It', () => { it('returns false if all required consents are not true.', () => { const consentsWithUnApprovedRequiredConsent = createConsentData({ requiredConsentCookieValue: false, @@ -203,7 +203,7 @@ describe('ContextComponent ', () => { }); }); - describe('onConsentsParsed is called when context is created and controller has read the cookie. ', () => { + describe('onConsentsParsed is called when context is created and controller has read the cookie.', () => { it('Arguments are ({consents}, false) when user has not handled all consents', () => { renderCookieConsent(allNotApprovedConsentData); expect(onConsentsParsed).toHaveBeenCalledTimes(1); @@ -227,7 +227,7 @@ describe('ContextComponent ', () => { }); }); - describe('onAllConsentsGiven ', () => { + describe('onAllConsentsGiven', () => { it('is called after user has given all consents.', () => { const result = renderCookieConsent(allNotApprovedConsentData); expect(onAllConsentsGiven).toHaveBeenCalledTimes(0); @@ -246,7 +246,7 @@ describe('ContextComponent ', () => { }); }); - describe('Saving ', () => { + describe('Saving', () => { it('by clicking "Approve all" sends also unknown consents', () => { mockedWindowControls.setUrl('https://subdomain.hel.fi'); const result = renderCookieConsent(allNotApprovedConsentData); diff --git a/packages/react/src/components/cookieConsent/cookieConsentController.ts b/packages/react/src/components/cookieConsent/cookieConsentController.ts index 70c4084b33..ca415e4e98 100644 --- a/packages/react/src/components/cookieConsent/cookieConsentController.ts +++ b/packages/react/src/components/cookieConsent/cookieConsentController.ts @@ -82,9 +82,7 @@ export const getCookieDomainFromUrl = (): string => { return window.location.hostname.split('.').slice(-2).join('.'); }; -export function createStorage( - initialValues: ConsentStorage, -): { +export function createStorage(initialValues: ConsentStorage): { getAll: () => ConsentStorage; getConsentByName: (consentName: string) => boolean; approve: (keys: string[]) => ConsentStorage; diff --git a/packages/react/src/components/cookieConsent/cookieController.test.ts b/packages/react/src/components/cookieConsent/cookieController.test.ts index 5461623351..6e27c02fc9 100644 --- a/packages/react/src/components/cookieConsent/cookieController.test.ts +++ b/packages/react/src/components/cookieConsent/cookieController.test.ts @@ -107,7 +107,7 @@ describe(`cookieController.ts`, () => { }); it('throws when setting invalid options', () => { const options: CookieSetOptions = { - expires: (1111 as unknown) as Date, + expires: 1111 as unknown as Date, }; expect(() => setNamedCookie(dummyKey, dummyValue, options)).toThrow(); }); diff --git a/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx b/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx index 3791aeb942..3d1909e240 100644 --- a/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx +++ b/packages/react/src/components/cookieConsent/cookieModal/CookieModal.test.tsx @@ -159,7 +159,7 @@ describe(' spec', () => { }, 15000); }); -describe(' ', () => { +describe('', () => { afterEach(() => { mockedCookieControls.clear(); jest.clearAllMocks(); @@ -169,7 +169,7 @@ describe(' ', () => { mockedCookieControls.restore(); }); - describe('Portal and modal ', () => { + describe('Portal and modal', () => { it('and child components are rendered when consents have not been handled', () => { const result = renderCookieConsent(defaultConsentData); verifyElementExistsByTestId(result, dataTestIds.container); diff --git a/packages/react/src/components/cookieConsent/cookieModal/Portal.tsx b/packages/react/src/components/cookieConsent/cookieModal/Portal.tsx index f15678dae4..ab59d7079a 100644 --- a/packages/react/src/components/cookieConsent/cookieModal/Portal.tsx +++ b/packages/react/src/components/cookieConsent/cookieModal/Portal.tsx @@ -72,5 +72,6 @@ export function Portal({ rootId, children }: { rootId: string; children: React.R return null; } wasPortalCreated.current = true; + // eslint-disable-next-line react/jsx-no-useless-fragment return createPortal(<>{children}, containerElementRef.current as HTMLElement); } diff --git a/packages/react/src/components/cookieConsent/cookiePage/CookiePage.test.tsx b/packages/react/src/components/cookieConsent/cookiePage/CookiePage.test.tsx index 2c9993189f..60682dd446 100644 --- a/packages/react/src/components/cookieConsent/cookiePage/CookiePage.test.tsx +++ b/packages/react/src/components/cookieConsent/cookiePage/CookiePage.test.tsx @@ -61,7 +61,7 @@ describe(' spec', () => { }, 15000); }); -describe(' ', () => { +describe('', () => { afterEach(() => { mockedCookieControls.clear(); }); @@ -72,7 +72,7 @@ describe(' ', () => { const getSetCookieArguments = (index = -1) => extractSetCookieArguments(mockedCookieControls, index); - describe('Cookie consent ', () => { + describe('Cookie consent', () => { it('and child components are rendered even if consents have been handled', () => { const result = renderCookieConsent({ ...defaultConsentData, @@ -115,7 +115,7 @@ describe(' ', () => { }); }); - describe('Details are shown and ', () => { + describe('Details are shown and', () => { it('required and optional consent groups are rendered', async () => { const result = renderCookieConsent(defaultConsentData); verifyElementExistsByTestId(result, dataTestIds.getConsentsCheckboxId(requiredGroupParent)); @@ -148,13 +148,13 @@ describe(' ', () => { }); }); }); - describe('Accordions of each consent group can be opened and ', () => { + describe('Accordions of each consent group can be opened and', () => { it('all consents in the group are rendered', async () => { const result = renderCookieConsent(defaultConsentData); const checkConsentsExist = async (groupParent: TestGroupParent) => { - const list = (groupParent === 'required' - ? content.requiredCookies?.groups - : content.optionalCookies?.groups) as CookieGroup[]; + const list = ( + groupParent === 'required' ? content.requiredCookies?.groups : content.optionalCookies?.groups + ) as CookieGroup[]; let index = 0; // cannot use async/await with array.forEach // eslint-disable-next-line no-restricted-syntax diff --git a/packages/react/src/components/cookieConsent/getContent.ts b/packages/react/src/components/cookieConsent/getContent.ts index 8d0d956085..2b9c973364 100644 --- a/packages/react/src/components/cookieConsent/getContent.ts +++ b/packages/react/src/components/cookieConsent/getContent.ts @@ -99,35 +99,29 @@ export function getCookieContent() { main: { fi: { title: '{{siteName}} käyttää evästeitä', - text: - 'Tämä sivusto käyttää välttämättömiä evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.', + text: 'Tämä sivusto käyttää välttämättömiä evästeitä sivun perustoimintojen ja suorituskyvyn varmistamiseksi. Lisäksi käytämme kohdennusevästeitä käyttäjäkokemuksen parantamiseksi, analytiikkaan ja yksilöidyn sisällön näyttämiseen.', }, sv: { title: '{{siteName}} använder kakor', - text: - 'Denna webbplats använder obligatoriska kakor för att säkerställa de grundläggande funktionerna och prestandan. Dessutom använder vi inriktningskakor för bättre användarupplevelse, analytik och individualiserat innehåll.', + text: 'Denna webbplats använder obligatoriska kakor för att säkerställa de grundläggande funktionerna och prestandan. Dessutom använder vi inriktningskakor för bättre användarupplevelse, analytik och individualiserat innehåll.', }, en: { title: '{{siteName}} uses cookies', - text: - 'This website uses required cookies to ensure the basic functionality and performance. In addition, we use targeting cookies to improve the user experience, perform analytics and display personalised content.', + text: 'This website uses required cookies to ensure the basic functionality and performance. In addition, we use targeting cookies to improve the user experience, perform analytics and display personalised content.', }, }, details: { fi: { title: 'Tietoa sivustolla käytetyistä evästeistä', - text: - 'Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.', + text: 'Sivustolla käytetyt evästeet on luokiteltu käyttötarkoituksen mukaan. Alla voit lukea eri luokista ja sallia tai kieltää evästeiden käytön.', }, sv: { title: 'Information om kakor som används på webbplatsen', - text: - 'Kakorna som används på webbplatsen har klassificerats enligt användningsändamål. Du kan läsa om de olika klasserna och acceptera eller förbjuda användningen av kakor.', + text: 'Kakorna som används på webbplatsen har klassificerats enligt användningsändamål. Du kan läsa om de olika klasserna och acceptera eller förbjuda användningen av kakor.', }, en: { title: 'About the cookies used on the website', - text: - 'The cookies used on the website have been classified according to their intended use. Below, you can read about the various categories and accept or reject the use of cookies.', + text: 'The cookies used on the website have been classified according to their intended use. Below, you can read about the various categories and accept or reject the use of cookies.', }, }, }, @@ -192,22 +186,19 @@ export function getCookieContent() { requiredCookies: { fi: { title: 'Välttämättömät evästeet', - text: - 'Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat käytettävyyteen.', + text: 'Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat käytettävyyteen.', checkboxAriaDescription: 'Välttämättömien evästeiden käyttöä ei voi kieltää. Ne mahdollistavat sivuston toiminnan ja vaikuttavat käytettävyyteen.', }, sv: { title: 'Nödvändig kakor', - text: - 'Du kan inte förbjuda användningen av nödvändiga kakorna. De möjliggör webbplatsens funktioner och påverkar användbarheten.', + text: 'Du kan inte förbjuda användningen av nödvändiga kakorna. De möjliggör webbplatsens funktioner och påverkar användbarheten.', checkboxAriaDescription: 'Du kan inte förbjuda användningen av nödvändiga kakorna. De möjliggör webbplatsens funktioner och påverkar användbarheten.', }, en: { title: 'Necessary cookies', - text: - 'Necessary cookies cannot be rejected. They enable the proper functioning of the website and affect the usability.', + text: 'Necessary cookies cannot be rejected. They enable the proper functioning of the website and affect the usability.', checkboxAriaDescription: 'Necessary cookies cannot be rejected. They enable the proper functioning of the website and affect the usability.', }, @@ -254,8 +245,7 @@ export function getCookieContent() { preferences: { fi: { title: 'Mieltymykset', - text: - 'Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän tekemien valintojen perusteella.', + text: 'Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän tekemien valintojen perusteella.', expandAriaLabel: 'Näytä mieltymyksiin liittyvien evästeiden tiedot', checkboxAriaDescription: 'Mieltymysevästeet mukauttavat sivuston ulkoasua ja toimintaa käyttäjän tekemien valintojen perusteella.', @@ -269,8 +259,7 @@ export function getCookieContent() { }, en: { title: 'Preferences', - text: - 'Preference cookies customise the layout and operation of the website based on the choices made by the user.', + text: 'Preference cookies customise the layout and operation of the website based on the choices made by the user.', expandAriaLabel: 'Show cookie information related to preferences', checkboxAriaDescription: 'Preference cookies customise the layout and operation of the website based on the choices made by the user.', @@ -365,24 +354,21 @@ export function getCookieContent() { deviceInfo: { fi: { title: 'Laitetiedot', - text: - 'Laitetietoevästeet sisältävät sellaisia käyttäjän laitteelta kerättyjä tietoja, joilla varmistetaan palvelun toiminta.', + text: 'Laitetietoevästeet sisältävät sellaisia käyttäjän laitteelta kerättyjä tietoja, joilla varmistetaan palvelun toiminta.', expandAriaLabel: 'Näytä laitetietoihin liittyvien evästeiden tiedot', checkboxAriaDescription: 'Laitetietoevästeet sisältävät sellaisia käyttäjän laitteelta kerättyjä tietoja, joilla varmistetaan palvelun toiminta.', }, sv: { title: 'Enhetsuppgifter', - text: - 'Kakor för enhetsuppgifterna innehåller sådana uppgifter som samlats in från användarens enhet med vilka tjänstens funktioner säkerställs.', + text: 'Kakor för enhetsuppgifterna innehåller sådana uppgifter som samlats in från användarens enhet med vilka tjänstens funktioner säkerställs.', expandAriaLabel: 'Visa information om kakor för enhetsuppgifterna', checkboxAriaDescription: 'Kakor för enhetsuppgifterna innehåller sådana uppgifter som samlats in från användarens enhet med vilka tjänstens funktioner säkerställs.', }, en: { title: 'Device information', - text: - "Device information cookies contain information collected from the user's device that ensures the functionality of the service.", + text: "Device information cookies contain information collected from the user's device that ensures the functionality of the service.", expandAriaLabel: 'Show cookie information related to device information', checkboxAriaDescription: "Device information cookies contain information collected from the user's device that ensures the functionality of the service.", @@ -412,16 +398,14 @@ export function getCookieContent() { thirdParty: { fi: { title: 'Kolmannen osapuolen palvelut', - text: - 'Evästeet mahdollistavat ulkopuolisten palvelujen (kuten sosiaalisen median alustojen) toiminnan tällä sivustolla.', + text: 'Evästeet mahdollistavat ulkopuolisten palvelujen (kuten sosiaalisen median alustojen) toiminnan tällä sivustolla.', expandAriaLabel: 'Näytä kolmansiin osapuoliin liittyvien evästeiden tiedot', checkboxAriaDescription: 'Evästeet mahdollistavat ulkopuolisten palvelujen (kuten sosiaalisen median alustojen) toiminnan tällä sivustolla.', }, sv: { title: 'Tredje parts tjänster', - text: - 'Kakor möjliggör utomstående tjänsters (såsom sociala medie-plattformar) funktioner på denna webbplats.', + text: 'Kakor möjliggör utomstående tjänsters (såsom sociala medie-plattformar) funktioner på denna webbplats.', expandAriaLabel: 'Visa information om tredjepartskakor', checkboxAriaDescription: 'Kakor möjliggör utomstående tjänsters (såsom sociala medie-plattformar) funktioner på denna webbplats.', @@ -487,8 +471,7 @@ export function getCookieContent() { }, sv: { title: 'Belastningsutjämning', - text: - 'Med hjälp av belastningsutjämningskakor säkerställer man att tjänsten laddas och fungerar snabbt och effektivt.', + text: 'Med hjälp av belastningsutjämningskakor säkerställer man att tjänsten laddas och fungerar snabbt och effektivt.', expandAriaLabel: 'Visa information om belastningsutjämningskakor', checkboxAriaDescription: 'Med hjälp av belastningsutjämningskakor säkerställer man att tjänsten laddas och fungerar snabbt och effektivt.', @@ -504,23 +487,20 @@ export function getCookieContent() { essential: { fi: { title: 'Perustoimintoihin liittyvät evästeet', - text: - 'Perustoimintoihin liittyviä evästeitä ei voi hylätä. Ne mahdollistavat sivuston kunnollisen toimivuuden ja vaikuttavat käytettävyyteen.', + text: 'Perustoimintoihin liittyviä evästeitä ei voi hylätä. Ne mahdollistavat sivuston kunnollisen toimivuuden ja vaikuttavat käytettävyyteen.', expandAriaLabel: 'Näytä perustoimintoihin liittyvien evästeiden tiedot', checkboxAriaDescription: 'Sivusto ei toimi ilman näitä', }, sv: { title: 'Kakor för grundläggande funktioner', - text: - 'Du kan inte förbjuda användningen av kakor för grundläggande funktioner. De möjliggör webbplatsens funktioner och påverkar användbarheten.', + text: 'Du kan inte förbjuda användningen av kakor för grundläggande funktioner. De möjliggör webbplatsens funktioner och påverkar användbarheten.', expandAriaLabel: 'Visa information om kakor för grundläggande funktioner', checkboxAriaDescription: 'Du kan inte förbjuda användningen av kakor för grundläggande funktioner. De möjliggör webbplatsens funktioner och påverkar användbarheten.', }, en: { title: 'Cookies related to basic functionalities', - text: - 'Cookies related to basic functionalities cannot be rejected. They enable the proper functioning of the website and affect the usability.', + text: 'Cookies related to basic functionalities cannot be rejected. They enable the proper functioning of the website and affect the usability.', expandAriaLabel: 'Show cookie information related to basic functionalities', checkboxAriaDescription: 'Cookies related to basic functionalities cannot be rejected. They enable the proper functioning of the website and affect the usability', @@ -549,24 +529,21 @@ export function getCookieContent() { sharedConsents: { fi: { title: 'Yhteiset evästeet', - text: - 'Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen kaupungin muissa palveluissa.', + text: 'Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen kaupungin muissa palveluissa.', expandAriaLabel: 'Näytä yhteisiin evästesuostumuksiin liittyvien evästeiden tiedot', checkboxAriaDescription: 'Helsingin kaupungin palvelut käyttävät yhteisiä evästeitä. Tallennamme nämä suostumukset, jottei sinun tarvitse hyväksyä samoja evästeitä uudelleen muissa kaupungin palveluissa.', }, sv: { title: 'Gemensamma kakor', - text: - 'Helsingfors stads tjänster använder gemensamma kakor . Vi lagrar dessa samtycken så att du inte behöver godkänna samma kakor igen i stadens andra tjänster.', + text: 'Helsingfors stads tjänster använder gemensamma kakor . Vi lagrar dessa samtycken så att du inte behöver godkänna samma kakor igen i stadens andra tjänster.', expandAriaLabel: 'Visa information om kakor för gemensamt samtycke', checkboxAriaDescription: 'Helsingfors stads tjänster använder gemensamma kakor . Vi lagrar dessa samtycken så att du inte behöver godkänna samma kakor igen i stadens andra tjänster.', }, en: { title: 'Shared consent', - text: - 'City of Helsinki services use shared consent. We will store these consents so that you do not have to accept the same cookies again on other City services.', + text: 'City of Helsinki services use shared consent. We will store these consents so that you do not have to accept the same cookies again on other City services.', expandAriaLabel: 'Show cookie information related to shared cookie consent', checkboxAriaDescription: 'City of Helsinki services use shared consent. We will store these consents so that you do not have to accept the same cookies again on other City services.', diff --git a/packages/react/src/components/cookieConsent/test.util.ts b/packages/react/src/components/cookieConsent/test.util.ts index a2c14a2f99..67318f55ac 100644 --- a/packages/react/src/components/cookieConsent/test.util.ts +++ b/packages/react/src/components/cookieConsent/test.util.ts @@ -186,12 +186,12 @@ export function createConsentObjectWithSelectedRejections( export async function openAllAccordions( result: RenderResult, content: Content, - dataTestIds: typeof commonTestProps['dataTestIds'], + dataTestIds: (typeof commonTestProps)['dataTestIds'], ): Promise { const openAccordions = async (groupParent: TestGroupParent) => { - const list = (groupParent === 'required' - ? content.requiredCookies?.groups - : content.optionalCookies?.groups) as CookieGroup[]; + const list = ( + groupParent === 'required' ? content.requiredCookies?.groups : content.optionalCookies?.groups + ) as CookieGroup[]; let index = 0; /* eslint-disable no-restricted-syntax */ // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/packages/react/src/components/cookieConsent/useModalPlaceHolder.test.tsx b/packages/react/src/components/cookieConsent/useModalPlaceHolder.test.tsx index ee0219fd68..479834c289 100644 --- a/packages/react/src/components/cookieConsent/useModalPlaceHolder.test.tsx +++ b/packages/react/src/components/cookieConsent/useModalPlaceHolder.test.tsx @@ -117,7 +117,7 @@ afterAll(() => { jest.clearAllMocks(); }); -describe('useModalPlaceHolder ', () => { +describe('useModalPlaceHolder', () => { describe('creates a placeholder element', () => { it('and matches its height to the observed element height every time element change is detected', async () => { const result = renderElements(); diff --git a/packages/react/src/components/dialog/Dialog.tsx b/packages/react/src/components/dialog/Dialog.tsx index 46762f89de..a6f0c30065 100644 --- a/packages/react/src/components/dialog/Dialog.tsx +++ b/packages/react/src/components/dialog/Dialog.tsx @@ -40,9 +40,9 @@ const focusToDialogElement = (position: TabBarrierPosition, dialogElement?: HTML if (dialogElement) { const focusableElements = findFocusableDialogElements(dialogElement); if (focusableElements.length) { - (focusableElements[ - position === TabBarrierPosition.top ? 0 : focusableElements.length - 1 - ] as HTMLElement).focus(); + ( + focusableElements[position === TabBarrierPosition.top ? 0 : focusableElements.length - 1] as HTMLElement + ).focus(); } } }; diff --git a/packages/react/src/components/dropdown/combobox/Combobox.test.tsx b/packages/react/src/components/dropdown/combobox/Combobox.test.tsx index fcf81c6b2f..c2cdf26a1b 100644 --- a/packages/react/src/components/dropdown/combobox/Combobox.test.tsx +++ b/packages/react/src/components/dropdown/combobox/Combobox.test.tsx @@ -59,7 +59,7 @@ describe('', () => { expect(results).toHaveNoViolations(); }); - it('user should be able to search and choose an option ', async () => { + it('user should be able to search and choose an option', async () => { const onChange = jest.fn(); const { getAllByLabelText, getAllByRole, getByDisplayValue } = getWrapper({ onChange }); const input = getAllByLabelText(label)[0]; diff --git a/packages/react/src/components/dropdown/combobox/Combobox.tsx b/packages/react/src/components/dropdown/combobox/Combobox.tsx index fe0e4e2c52..e62573ec57 100644 --- a/packages/react/src/components/dropdown/combobox/Combobox.tsx +++ b/packages/react/src/components/dropdown/combobox/Combobox.tsx @@ -316,13 +316,12 @@ export const Combobox = (props: ComboboxProps) => { } }; - const ignoreFocusHandlerWhenClickingItem = (handler: FocusEventHandler) => ( - event: FocusEvent, - ) => { - if (!isClicking) { - handler(event); - } - }; + const ignoreFocusHandlerWhenClickingItem = + (handler: FocusEventHandler) => (event: FocusEvent) => { + if (!isClicking) { + handler(event); + } + }; const handleWrapperFocus = (e: FocusEvent) => { if (getIsElementFocused(e)) { diff --git a/packages/react/src/components/fileInput/FileInput.tsx b/packages/react/src/components/fileInput/FileInput.tsx index d917e599f4..b6111e74bf 100644 --- a/packages/react/src/components/fileInput/FileInput.tsx +++ b/packages/react/src/components/fileInput/FileInput.tsx @@ -297,32 +297,37 @@ const getExtension = (path: string): string => { return extensionWithDot; }; -const validateAccept = (language: Language, accept: string) => (file: File): true | ValidationError => { - const extension: string = getExtension(file.name); - const fileType: string = file.type; - const acceptedExtensions = accept.split(',').map((str) => str.trim()); - const isMatchingType = !!acceptedExtensions.find( - (acceptExtension) => acceptExtension.includes(fileType) || acceptExtension.includes(`${fileType.split('/')[0]}/*`), - ); - const hasMatchingFileExtension = !!acceptedExtensions.find((acceptExtension) => acceptExtension === extension); +const validateAccept = + (language: Language, accept: string) => + (file: File): true | ValidationError => { + const extension: string = getExtension(file.name); + const fileType: string = file.type; + const acceptedExtensions = accept.split(',').map((str) => str.trim()); + const isMatchingType = !!acceptedExtensions.find( + (acceptExtension) => + acceptExtension.includes(fileType) || acceptExtension.includes(`${fileType.split('/')[0]}/*`), + ); + const hasMatchingFileExtension = !!acceptedExtensions.find((acceptExtension) => acceptExtension === extension); - return ( - isMatchingType || - hasMatchingFileExtension || { - type: ValidationErrorType.accept, - text: getAcceptErrorMessage(language, file, accept), - } - ); -}; + return ( + isMatchingType || + hasMatchingFileExtension || { + type: ValidationErrorType.accept, + text: getAcceptErrorMessage(language, file, accept), + } + ); + }; -const validateMaxSize = (language: Language, maxSize: number) => (file: File): true | ValidationError => { - return ( - file.size <= maxSize || { - type: ValidationErrorType.maxSize, - text: getMaxSizeErrorMessage(language, file, maxSize), - } - ); -}; +const validateMaxSize = + (language: Language, maxSize: number) => + (file: File): true | ValidationError => { + return ( + file.size <= maxSize || { + type: ValidationErrorType.maxSize, + text: getMaxSizeErrorMessage(language, file, maxSize), + } + ); + }; export const FileInput = ({ id, diff --git a/packages/react/src/components/header/Header.stories.tsx b/packages/react/src/components/header/Header.stories.tsx index 154e7a543e..67784bec63 100644 --- a/packages/react/src/components/header/Header.stories.tsx +++ b/packages/react/src/components/header/Header.stories.tsx @@ -281,7 +281,7 @@ const FullFeaturedNavigationMenu = ({ href, setHref, }: { - I18n: typeof translations['fi']; + I18n: (typeof translations)['fi']; href: string; setHref: (anchor: string) => void; }) => { diff --git a/packages/react/src/components/header/LanguageContext.test.tsx b/packages/react/src/components/header/LanguageContext.test.tsx index 23a9d6f62e..89d54064ae 100644 --- a/packages/react/src/components/header/LanguageContext.test.tsx +++ b/packages/react/src/components/header/LanguageContext.test.tsx @@ -180,7 +180,7 @@ describe('', () => { cleanup(); }); - it('Sets the defaultLanguage to DEFAULT_LANGUAGE by default. onDidChangeLanguage is not called ', async () => { + it('Sets the defaultLanguage to DEFAULT_LANGUAGE by default. onDidChangeLanguage is not called', async () => { const { getActiveLanguage } = renderTestScenario(); expect(getActiveLanguage()).toBe(DEFAULT_LANGUAGE); expect(handleLanguageChange.mock.calls.length).toBe(0); diff --git a/packages/react/src/components/header/components/headerActionBar/HeaderActionBar.tsx b/packages/react/src/components/header/components/headerActionBar/HeaderActionBar.tsx index 3c830583fe..e17bff679b 100644 --- a/packages/react/src/components/header/components/headerActionBar/HeaderActionBar.tsx +++ b/packages/react/src/components/header/components/headerActionBar/HeaderActionBar.tsx @@ -45,9 +45,9 @@ const focusToActionBar = (position: TabBarrierPosition, element?: HTMLElement) = const focusableElements = findFocusableElementsWithin(element); if (focusableElements.length) { - (focusableElements[ - position === TabBarrierPosition.top ? 0 : focusableElements.length - 1 - ] as HTMLElement).focus(); + ( + focusableElements[position === TabBarrierPosition.top ? 0 : focusableElements.length - 1] as HTMLElement + ).focus(); } } }; diff --git a/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.test.tsx b/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.test.tsx index d3bf4e2c6d..6de214b280 100644 --- a/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.test.tsx +++ b/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.test.tsx @@ -397,14 +397,8 @@ describe(' spec', () => { expect(getNavSections()).toHaveLength(1); }); it('Nav sections are rendered and visible only when needed and removed when not needed', async () => { - const { - openMobileMenu, - navigateTo, - getNavSections, - navigateBack, - closeMobileMenu, - getCSSVisibleSections, - } = renderHeader(); + const { openMobileMenu, navigateTo, getNavSections, navigateBack, closeMobileMenu, getCSSVisibleSections } = + renderHeader(); // one is always rendered expect(getNavSections()).toHaveLength(1); // but it is hidden @@ -425,14 +419,8 @@ describe(' spec', () => { expect(getNavSections()).toHaveLength(1); }); it('Previous and active links change while navigating', async () => { - const { - openMobileMenu, - navigateTo, - navigateBack, - verifyActiveItem, - verifyPreviousItem, - getCSSVisibleSections, - } = renderHeader(); + const { openMobileMenu, navigateTo, navigateBack, verifyActiveItem, verifyPreviousItem, getCSSVisibleSections } = + renderHeader(); const menu3 = getMenuItem([3]); const menu31 = getMenuItem([3, 1]); const menu32 = getMenuItem([3, 2]); @@ -491,13 +479,8 @@ describe(' spec', () => { }); }); it('If a lower level active link is clicked, menu is closed and onClick handler is called.', async () => { - const { - openMobileMenu, - getActiveLink, - selectMenuItem, - getCSSVisibleSections, - triggerMenuAnimationEnd, - } = renderHeader(); + const { openMobileMenu, getActiveLink, selectMenuItem, getCSSVisibleSections, triggerMenuAnimationEnd } = + renderHeader(); await openMobileMenu(); await selectMenuItem(getMenuItem([0])); diff --git a/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.tsx b/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.tsx index 48d44da911..b52ef9d465 100644 --- a/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.tsx +++ b/packages/react/src/components/header/components/headerActionBar/HeaderActionBarNavigationMenu.tsx @@ -321,7 +321,7 @@ export const HeaderActionBarNavigationMenu = ({ const getLinksOrChildren = (parent: React.ReactElement) => { return parent.props && parent.props.dropdownLinks ? parent.props.dropdownLinks - : getChildrenAsArray(((parent as unknown) as React.PropsWithChildren).children); + : getChildrenAsArray((parent as unknown as React.PropsWithChildren).children); }; // Picks given child by MenuInfo.index diff --git a/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.test.tsx b/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.test.tsx index 6c706e55fe..a3851b78b3 100644 --- a/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.test.tsx +++ b/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.test.tsx @@ -120,7 +120,7 @@ describe(' spec', () => { expect(asFragment()).toMatchSnapshot(); }); - it('renders the consumer component with props and children passed from the LanguageSelector ', () => { + it('renders the consumer component with props and children passed from the LanguageSelector', () => { const { asFragment } = render(); expect(asFragment()).toMatchSnapshot(); }); diff --git a/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.tsx b/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.tsx index df6ca3fe2f..eaeb15aace 100644 --- a/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.tsx +++ b/packages/react/src/components/header/components/headerLanguageSelector/HeaderLanguageSelector.tsx @@ -9,6 +9,7 @@ import classes from './HeaderLanguageSelector.module.scss'; import { useHeaderContext } from '../../HeaderContext'; import { getComponentFromChildren } from '../../../../utils/getChildren'; +/* eslint-disable react/no-unused-prop-types */ type LanguageSelectorComponentProps = { /** * Aria-label attribute for the dropdown button. @@ -23,6 +24,7 @@ type LanguageSelectorComponentProps = { */ sortLanguageOptions?: (options: LanguageOption[], selectedLanguage: string) => [LanguageOption[], LanguageOption[]]; }; +/* eslint-enable react/no-unused-prop-types */ export type LanguageSelectorProps = PropsWithChildren; diff --git a/packages/react/src/components/header/components/headerLanguageSelector/__snapshots__/HeaderLanguageSelector.test.tsx.snap b/packages/react/src/components/header/components/headerLanguageSelector/__snapshots__/HeaderLanguageSelector.test.tsx.snap index 099b477533..09cd60671f 100644 --- a/packages/react/src/components/header/components/headerLanguageSelector/__snapshots__/HeaderLanguageSelector.test.tsx.snap +++ b/packages/react/src/components/header/components/headerLanguageSelector/__snapshots__/HeaderLanguageSelector.test.tsx.snap @@ -152,7 +152,7 @@ exports[` spec renders the consumer component correct `; -exports[` spec renders the consumer component with props and children passed from the LanguageSelector 1`] = ` +exports[` spec renders the consumer component with props and children passed from the LanguageSelector 1`] = `
; diff --git a/packages/react/src/components/login/__mocks__/mockWindowLocation.ts b/packages/react/src/components/login/__mocks__/mockWindowLocation.ts index cbb998e2dc..7cc1882a1d 100644 --- a/packages/react/src/components/login/__mocks__/mockWindowLocation.ts +++ b/packages/react/src/components/login/__mocks__/mockWindowLocation.ts @@ -39,7 +39,6 @@ export default function mockWindowLocation(): MockedWindowLocationActions { }); const getCalls = () => { - // console.log('calls', tracker.mock.calls); return (tracker.mock.calls as unknown) as string[]; }; diff --git a/packages/react/src/components/login/apiTokensClient/apiTokenClient.test.ts b/packages/react/src/components/login/apiTokensClient/apiTokenClient.test.ts index 1999d7159b..d730a55029 100644 --- a/packages/react/src/components/login/apiTokensClient/apiTokenClient.test.ts +++ b/packages/react/src/components/login/apiTokensClient/apiTokenClient.test.ts @@ -118,14 +118,8 @@ describe(`apiTokenClient`, () => { removeUserAfterInit: false, }; - const { - waitUntilRequestFinished, - waitUntilRequestStarted, - cleanUp, - setResponders, - addResponse, - getRequestCount, - } = createControlledFetchMockUtil([{ path: endPointPath }]); + const { waitUntilRequestFinished, waitUntilRequestStarted, cleanUp, setResponders, addResponse, getRequestCount } = + createControlledFetchMockUtil([{ path: endPointPath }]); const getApiTokenResponseBody = () => { return { @@ -256,6 +250,7 @@ describe(`apiTokenClient`, () => { await advanceUntilPromiseResolvedAndReturnValue(apiTokenClient.fetch(currentUser as User)); const fetchCalls = getFetchMockCalls(); expect(fetchCalls).toHaveLength(1); + // eslint-disable-next-line jest/no-interpolation-in-snapshots expect(fetchCalls[0]).toMatchInlineSnapshot(` Array [ "${defaultClientProps.url}", @@ -340,7 +335,7 @@ describe(`apiTokenClient`, () => { expect(emittedErrors).toHaveLength(1); expect(emittedErrors[0].isInvalidTokensError).toBeTruthy(); }); - it('Returns a fetch error when fetch fails for a network error or other status. An error is emitted. ', async () => { + it('Returns a fetch error when fetch fails for a network error or other status. An error is emitted.', async () => { const apiTokenClient = initTests({ apiTokenClientProps: { maxRetries: 0 }, responses: [{ error: true }, errorResponse], @@ -379,6 +374,7 @@ describe(`apiTokenClient`, () => { const fetchCalls = getFetchMockCalls(); const fetchCallBodies = fetchCalls.map(getFetchRequestBodyAsString); expect(fetchCallBodies[0]).toBe(`grant_type=${grantType}&permission=${permission}`); + // eslint-disable-next-line jest/no-interpolation-in-snapshots expect(fetchCalls[0]).toMatchInlineSnapshot(` Array [ "${defaultClientProps.url}", @@ -500,7 +496,7 @@ describe(`apiTokenClient`, () => { }); }); }); - describe(`When init signal is received `, () => { + describe(`When init signal is received`, () => { it('and user matches api token reference, tokens are restored from storage. API_TOKENS_UPDATED event is emitted', async () => { const tokens = { token: 'a token' }; const userAccessToken = 'an access token'; @@ -609,7 +605,7 @@ describe(`apiTokenClient`, () => { expect(apiTokenClient.isRenewing()).toBeFalsy(); }); - it('tokens are not renewed, if USER_UPDATED event has no valid user ', async () => { + it('tokens are not renewed, if USER_UPDATED event has no valid user', async () => { const apiTokenClient = await initTestsWithDefaultPropsAndWaitForInit({ removeUserAfterInit: true }); const eventPayloads = getEmittedEventPayloads(); expect(eventPayloads).toHaveLength(2); diff --git a/packages/react/src/components/login/apiTokensClient/apiTokensClientError.ts b/packages/react/src/components/login/apiTokensClient/apiTokensClientError.ts index 0f0c796b6f..409c4e96cc 100644 --- a/packages/react/src/components/login/apiTokensClient/apiTokensClientError.ts +++ b/packages/react/src/components/login/apiTokensClient/apiTokensClientError.ts @@ -7,7 +7,11 @@ export const apiTokensClientError = { } as const; export class ApiTokensClientError extends Error { - constructor(public message: string, public type: ApiTokensClientErrorType, public originalError?: Error | null) { + constructor( + public message: string, + public type: ApiTokensClientErrorType, + public originalError?: Error | null, + ) { super(message); this.type = type; this.originalError = originalError; diff --git a/packages/react/src/components/login/apiTokensClient/hooks.test.tsx b/packages/react/src/components/login/apiTokensClient/hooks.test.tsx index 1c3730674f..9134e880f2 100644 --- a/packages/react/src/components/login/apiTokensClient/hooks.test.tsx +++ b/packages/react/src/components/login/apiTokensClient/hooks.test.tsx @@ -58,13 +58,8 @@ describe('apiToken hooks testing', () => { const apiTokensResponder: Responder = { id: 'apiTokensResponder', path: endPointPath, delay: 10000 }; - const { - waitUntilRequestFinished, - waitUntilRequestStarted, - cleanUp, - setResponders, - addResponse, - } = createControlledFetchMockUtil([apiTokensResponder]); + const { waitUntilRequestFinished, waitUntilRequestStarted, cleanUp, setResponders, addResponse } = + createControlledFetchMockUtil([apiTokensResponder]); const getApiTokenResponseBody = () => { return { @@ -218,7 +213,7 @@ describe('apiToken hooks testing', () => { }); }); describe('useApiTokens hook', () => { - describe('Returns getStoredApiTokens function ', () => { + describe('Returns getStoredApiTokens function', () => { it('which returns apiTokens, if user is authenticated and apiTokens are fetched', async () => { const user = createUserAndPlaceUserToStorage(defaultOidcClientProps.userManagerSettings); @@ -241,7 +236,7 @@ describe('apiToken hooks testing', () => { expect(getTokensError()).not.toBeUndefined(); }); }); - describe('Returns isRenewing function ', () => { + describe('Returns isRenewing function', () => { it('which returns true, if apiTokens are renewing', async () => { createUserAndPlaceUserToStorage(defaultOidcClientProps.userManagerSettings); init({ component: 'tokens' }); diff --git a/packages/react/src/components/login/beacon/beacon.test.ts b/packages/react/src/components/login/beacon/beacon.test.ts index a67708eb64..f68fb62ede 100644 --- a/packages/react/src/components/login/beacon/beacon.test.ts +++ b/packages/react/src/components/login/beacon/beacon.test.ts @@ -173,7 +173,7 @@ describe(`beacon`, () => { expect(trigger({ type: '*', namespace: '*' })).toBeFalsy(); expect(trigger({ type: '', namespace: '' })).toBeFalsy(); }); - it(`Trigger with signal type "*" and given namespace listens to all signals in that namespace `, async () => { + it(`Trigger with signal type "*" and given namespace listens to all signals in that namespace`, async () => { const trigger = createSignalTrigger('*:signalNamespace'); expect(trigger({ type: 'signalType', namespace: 'signalNamespace' })).toBeTruthy(); expect(trigger({ type: 'any', namespace: 'signalNamespace' })).toBeTruthy(); @@ -451,7 +451,7 @@ describe(`beacon`, () => { }); }); - describe(`When emitting signals, the signal.context is `, () => { + describe(`When emitting signals, the signal.context is`, () => { const syncListener = jest.fn(); const syncListener2 = jest.fn(); const syncSignalType = 'sync'; diff --git a/packages/react/src/components/login/beacon/beacon.ts b/packages/react/src/components/login/beacon/beacon.ts index df9ccf2e9a..a66906a05a 100644 --- a/packages/react/src/components/login/beacon/beacon.ts +++ b/packages/react/src/components/login/beacon/beacon.ts @@ -65,7 +65,7 @@ export function convertToComparableSignals( // If source has context, it is a deep object with unnecessary key/values to compare. // Only important prop is the namespace, so just pick that if (!source.context) { - return (source as unknown) as SignalTriggerProps; + return source as unknown as SignalTriggerProps; } return { ...source, context: source.context ? { namespace: source.context.namespace } : undefined }; } @@ -87,7 +87,7 @@ export function compareSignals(signalOrJustType: SignalType | Partial, s // If source has no context, it is not compared to the target, so no need to convert it. const target = source.context ? convertToComparableSignals(signalToCheckFrom) - : ((signalToCheckFrom as unknown) as SignalTriggerProps); + : (signalToCheckFrom as unknown as SignalTriggerProps); return compareSignalTriggers(source, target); } @@ -103,7 +103,7 @@ export function createSignalTrigger(signalOrJustSignalType: SignalType | Signal } const target = source.context ? convertToComparableSignals(incomingSignal) - : ((incomingSignal as unknown) as SignalTriggerProps); + : (incomingSignal as unknown as SignalTriggerProps); return compareSignalTriggers(source, target); }; } diff --git a/packages/react/src/components/login/beacon/hooks.ts b/packages/react/src/components/login/beacon/hooks.ts index 94e97711b2..e9f375d16e 100644 --- a/packages/react/src/components/login/beacon/hooks.ts +++ b/packages/react/src/components/login/beacon/hooks.ts @@ -59,7 +59,7 @@ const useSignalTracking = (signalProps: SignalListenerSource, callback?: SignalL return signalProps as SignalTrigger; } return (signal: Signal) => { - return compareSignalTriggers(signalProps as SignalTriggerProps, (signal as unknown) as SignalTriggerProps); + return compareSignalTriggers(signalProps as SignalTriggerProps, signal as unknown as SignalTriggerProps); }; }, []); const callbackRef = useRef(callback); diff --git a/packages/react/src/components/login/beacon/signals.test.ts b/packages/react/src/components/login/beacon/signals.test.ts index d68c1e7427..2ca3636250 100644 --- a/packages/react/src/components/login/beacon/signals.test.ts +++ b/packages/react/src/components/login/beacon/signals.test.ts @@ -61,7 +61,7 @@ describe(`signals`, () => { const allSignals = [...eventSignals, ...errorSignals]; const allSources = [...plainObjects, ...allSignals]; - describe(`and returns true, `, () => { + describe(`and returns true,`, () => { it(`if all source object key/value pairs match target key/value pairs`, async () => { allSources.forEach((signal) => { expect(compareSignals(signal, signal as Signal)).toBeTruthy(); @@ -69,7 +69,7 @@ describe(`signals`, () => { }); it(`also when target has more keys that source`, async () => { allSources.forEach((signal) => { - expect(compareSignals(signal, ({ ...signal, extra: 'value' } as unknown) as Signal)).toBeTruthy(); + expect(compareSignals(signal, { ...signal, extra: 'value' } as unknown as Signal)).toBeTruthy(); }); eventSignals.forEach((signal) => { expect(compareSignals(signal, { ...eventSignalWithNamespaceBPayloadBContextB, ...signal })).toBeTruthy(); @@ -99,7 +99,7 @@ describe(`signals`, () => { }); }); }); - describe(`and returns false, `, () => { + describe(`and returns false,`, () => { it(`if all source object key/value pairs does not match target key/value pairs`, async () => { allSignals.forEach((signal) => { expect(compareSignals({ ...signal, type: 'X' }, signal)).toBeFalsy(); @@ -107,7 +107,7 @@ describe(`signals`, () => { expect(compareSignals({ ...signal, payload: { ...payloadA, ...payloadB } }, signal)).toBeFalsy(); expect( compareSignals( - { ...signal, context: ({ ...contextA, namespace: 'Z' } as unknown) as ConnectedModule }, + { ...signal, context: { ...contextA, namespace: 'Z' } as unknown as ConnectedModule }, signal, ), ).toBeFalsy(); @@ -120,7 +120,7 @@ describe(`signals`, () => { }); it(`also when source has more keys that target`, async () => { allSignals.forEach((signal) => { - expect(compareSignals(({ ...signal, extra: 'value' } as unknown) as Signal, signal)).toBeFalsy(); + expect(compareSignals({ ...signal, extra: 'value' } as unknown as Signal, signal)).toBeFalsy(); }); }); }); @@ -194,7 +194,7 @@ describe(`signals`, () => { signalListTypes[0], ]); }); - it(`if options.allowSkipping is true (default), then all listed signals before the triggered one are marked as triggered. Results have only triggered signals. `, async () => { + it(`if options.allowSkipping is true (default), then all listed signals before the triggered one are marked as triggered. Results have only triggered signals.`, async () => { const promise = waitForSignals(beacon, signalList) .then((signals) => { result = signals; @@ -205,7 +205,7 @@ describe(`signals`, () => { await promise; expect(result.map((signal) => signal.type)).toEqual([signalListTypes[1], signalListTypes[3]]); }); - it(`if options.allowSkipping is true (default), then one signal can fulfill the promise `, async () => { + it(`if options.allowSkipping is true (default), then one signal can fulfill the promise`, async () => { const promise = waitForSignals(beacon, [...signalList, ...signalList, fulfillingSignal]) .then((signals) => { result = signals; @@ -215,7 +215,7 @@ describe(`signals`, () => { await promise; expect(result.map((signal) => signal.type)).toEqual([fulfillingSignal.type]); }); - it(`if options.rejectsOn has triggers, any of the triggers will reject the promise `, async () => { + it(`if options.rejectsOn has triggers, any of the triggers will reject the promise`, async () => { const promise = waitForSignals(beacon, signalList, { rejectOn: signalList }) .then((signals) => { result = signals; @@ -226,7 +226,7 @@ describe(`signals`, () => { expect(result).toHaveLength(0); expect(rejections).toHaveLength(1); }); - it(`if options.allowSkipping is false, catching a signal in wrong order will reject `, async () => { + it(`if options.allowSkipping is false, catching a signal in wrong order will reject`, async () => { const promise = waitForSignals(beacon, signalList, { strictOrder: true }) .then((signals) => { result = signals; diff --git a/packages/react/src/components/login/beacon/signals.ts b/packages/react/src/components/login/beacon/signals.ts index de1789a5a0..fe561b58a4 100644 --- a/packages/react/src/components/login/beacon/signals.ts +++ b/packages/react/src/components/login/beacon/signals.ts @@ -209,7 +209,7 @@ export function createTriggerForAllNamespaces(): Pick { export function convertSignalToTrigger(signal: Signal): SignalTriggerProps { if (!Object.prototype.hasOwnProperty.call(signal, 'context')) { - return (signal as unknown) as SignalTriggerProps; + return signal as unknown as SignalTriggerProps; } const { type, namespace, payload } = signal; return { type, namespace, payload }; diff --git a/packages/react/src/components/login/client/hooks.test.tsx b/packages/react/src/components/login/client/hooks.test.tsx index d41039b08b..a99e6ea3bb 100644 --- a/packages/react/src/components/login/client/hooks.test.tsx +++ b/packages/react/src/components/login/client/hooks.test.tsx @@ -40,7 +40,7 @@ describe('Client hooks', () => { }); it('Returns an user object, if valid user is found', async () => { init({ invalidUser: false }); - expect(((getUser() as unknown) as User).access_token).not.toBeUndefined(); + expect((getUser() as unknown as User).access_token).not.toBeUndefined(); }); it('Returns null, if a valid user is not found', async () => { init({ diff --git a/packages/react/src/components/login/client/oidcClient.test.ts b/packages/react/src/components/login/client/oidcClient.test.ts index d529a7b8f0..85947448a7 100644 --- a/packages/react/src/components/login/client/oidcClient.test.ts +++ b/packages/react/src/components/login/client/oidcClient.test.ts @@ -47,14 +47,8 @@ import { Signal, SignalNamespace } from '../beacon/beacon'; import { getAllMockCallArgs, getLastMockCallArgs } from '../../../utils/testHelpers'; import { waitForFetchMockRequestsToFinish } from '../testUtils/fetchMockTestUtil'; -const { - initTests, - waitForLoginToTimeout, - waitForLogoutToTimeout, - cleanUp, - setSignInResponse, - placeUserToStorage, -} = createOidcClientTestSuite(); +const { initTests, waitForLoginToTimeout, waitForLogoutToTimeout, cleanUp, setSignInResponse, placeUserToStorage } = + createOidcClientTestSuite(); describe('oidcClient', () => { let testData: InitTestResult; @@ -303,12 +297,12 @@ describe('oidcClient', () => { const { oidcClient } = await initTests(createUserProps('invalid')); expect(oidcClient.getAmr()).toBeUndefined(); }); - it('returns undefined, if amr has invalid value and id_token is not set ', async () => { + it('returns undefined, if amr has invalid value and id_token is not set', async () => { const amrValue = 'notAnArray'; const initProps = { ...createUserProps(undefined), }; - ((initProps.userProps.signInResponseProfileProps as unknown) as Record).amr = amrValue; + (initProps.userProps.signInResponseProfileProps as unknown as Record).amr = amrValue; const { oidcClient } = await initTests(initProps); expect(oidcClient.getAmr()).toBeUndefined(); }); @@ -739,7 +733,7 @@ describe('oidcClient', () => { }); }); describe('Manual renewal can be started with renewUser()', () => { - it('It is handled like the automatic renewal', async () => { + it('is handled like the automatic renewal', async () => { const { oidcClient, waitForRefreshToEnd, refreshTokens } = await initRenewalTests(true, true); expect(oidcClient.isRenewing()).toBeFalsy(); const initialUser = oidcClient.getUser() as User; diff --git a/packages/react/src/components/login/client/oidcClient.ts b/packages/react/src/components/login/client/oidcClient.ts index cc055d72ca..39fd17428b 100644 --- a/packages/react/src/components/login/client/oidcClient.ts +++ b/packages/react/src/components/login/client/oidcClient.ts @@ -175,9 +175,9 @@ export function createOidcClient(props: OidcClientProps): OidcClient { ]); }; - const handleUserRenewal = async ({ triggerSigninSilent = false }: { triggerSigninSilent?: boolean } = {}): Promise< - RenewalResult - > => { + const handleUserRenewal = async ({ + triggerSigninSilent = false, + }: { triggerSigninSilent?: boolean } = {}): Promise => { if (isRenewing()) { return renewPromise; } diff --git a/packages/react/src/components/login/client/oidcClientError.ts b/packages/react/src/components/login/client/oidcClientError.ts index 699acaa6af..c49fbbc785 100644 --- a/packages/react/src/components/login/client/oidcClientError.ts +++ b/packages/react/src/components/login/client/oidcClientError.ts @@ -6,7 +6,11 @@ export const oidcClientErrors = { } as const; export class OidcClientError extends Error { - constructor(public message: string, public type: OidcClientErrorType, public originalError?: Error | null) { + constructor( + public message: string, + public type: OidcClientErrorType, + public originalError?: Error | null, + ) { super(message); this.type = type; this.originalError = originalError; diff --git a/packages/react/src/components/login/components/LoginButton.tsx b/packages/react/src/components/login/components/LoginButton.tsx index e2dc26f526..9c25510fb5 100644 --- a/packages/react/src/components/login/components/LoginButton.tsx +++ b/packages/react/src/components/login/components/LoginButton.tsx @@ -46,16 +46,14 @@ export function LoginButton({ }, }; return ( - <> -
- - {loginError && ( -
- - {errorText} -
- )} -
- +
+ + {loginError && ( +
+ + {errorText} +
+ )} +
); } diff --git a/packages/react/src/components/login/components/LoginCallbackHandler.test.tsx b/packages/react/src/components/login/components/LoginCallbackHandler.test.tsx index c9fa6e3d20..1e6f555163 100644 --- a/packages/react/src/components/login/components/LoginCallbackHandler.test.tsx +++ b/packages/react/src/components/login/components/LoginCallbackHandler.test.tsx @@ -59,7 +59,7 @@ describe('LoginCallbackHandler', () => { ); }; - it('calls onSuccess with user object, if user already exists ', async () => { + it('calls onSuccess with user object, if user already exists', async () => { renderComponent(oidcClientStates.VALID_SESSION, true); expect(onSuccess).toHaveBeenCalledTimes(1); expect(isValidUser(getLastMockCallArgs(onSuccess)[0])).toBeTruthy(); diff --git a/packages/react/src/components/login/components/LoginCallbackHandler.tsx b/packages/react/src/components/login/components/LoginCallbackHandler.tsx index e9a635bb5f..89723f64d2 100644 --- a/packages/react/src/components/login/components/LoginCallbackHandler.tsx +++ b/packages/react/src/components/login/components/LoginCallbackHandler.tsx @@ -41,5 +41,6 @@ export function LoginCallbackHandler({ ), ); } + // eslint-disable-next-line react/jsx-no-useless-fragment return <>{children}; } diff --git a/packages/react/src/components/login/components/WithoutAuthenticatedUser.tsx b/packages/react/src/components/login/components/WithoutAuthenticatedUser.tsx index e21ccb7bcd..3afc4b75c8 100644 --- a/packages/react/src/components/login/components/WithoutAuthenticatedUser.tsx +++ b/packages/react/src/components/login/components/WithoutAuthenticatedUser.tsx @@ -8,6 +8,7 @@ import { WithAuthentication } from './WithAuthentication'; */ export function WithoutAuthenticatedUser(props: React.PropsWithChildren): React.ReactElement | null { const UnauthorisedComponent = () => { + // eslint-disable-next-line react/jsx-no-useless-fragment return <>{props.children}; }; return ; diff --git a/packages/react/src/components/login/sessionPoller/hooks.test.tsx b/packages/react/src/components/login/sessionPoller/hooks.test.tsx index 170cec3136..e0992dbf91 100644 --- a/packages/react/src/components/login/sessionPoller/hooks.test.tsx +++ b/packages/react/src/components/login/sessionPoller/hooks.test.tsx @@ -37,13 +37,8 @@ describe('sessionPoller hooks testing', () => { const endPointPath = '/userInfoEndPoint'; const successfulResponse: ResponseType = { returnedStatus: HttpStatusCode.OK }; const unauthorizedResponse: ResponseType = { returnedStatus: HttpStatusCode.UNAUTHORIZED }; - const { - waitUntilRequestStarted, - waitUntilRequestFinished, - cleanUp, - setResponders, - addResponse, - } = createControlledFetchMockUtil([{ path: endPointPath }]); + const { waitUntilRequestStarted, waitUntilRequestFinished, cleanUp, setResponders, addResponse } = + createControlledFetchMockUtil([{ path: endPointPath }]); const openIdResponse = { status: HttpStatusCode.OK, diff --git a/packages/react/src/components/login/sessionPoller/sessionPoller.test.ts b/packages/react/src/components/login/sessionPoller/sessionPoller.test.ts index 771c7585db..4993933303 100644 --- a/packages/react/src/components/login/sessionPoller/sessionPoller.test.ts +++ b/packages/react/src/components/login/sessionPoller/sessionPoller.test.ts @@ -382,7 +382,7 @@ describe(`sessionPoller`, () => { await waitForFetchMockResultFulfillment(0); }); - it('when fetch fails and statusCode indicates an auth error, the error signal is sent and polling is stopped ', async () => { + it('when fetch fails and statusCode indicates an auth error, the error signal is sent and polling is stopped', async () => { initTests({ setValidSession: true, responses: [successfulResponse, unauthorizedResponse, forbiddenResponse] }); await waitUntilRequestFinished(); const result = (await waitForFetchMockResultFulfillment(0)) as Response; diff --git a/packages/react/src/components/login/sessionPoller/sessionPollerError.ts b/packages/react/src/components/login/sessionPoller/sessionPollerError.ts index 0ae0105588..a3d320bd18 100644 --- a/packages/react/src/components/login/sessionPoller/sessionPollerError.ts +++ b/packages/react/src/components/login/sessionPoller/sessionPollerError.ts @@ -6,7 +6,11 @@ export const sessionPollerErrors = { } as const; export class SessionPollerError extends Error { - constructor(public message: string, public type: SessionPollerErrorType, public originalError?: Error | null) { + constructor( + public message: string, + public type: SessionPollerErrorType, + public originalError?: Error | null, + ) { super(message); this.type = type; this.originalError = originalError; diff --git a/packages/react/src/components/login/sessionPoller/signals.test.ts b/packages/react/src/components/login/sessionPoller/signals.test.ts index 9550db8b2a..45347b0b63 100644 --- a/packages/react/src/components/login/sessionPoller/signals.test.ts +++ b/packages/react/src/components/login/sessionPoller/signals.test.ts @@ -30,11 +30,9 @@ import { oidcClientNamespace } from '../client'; describe(`signals`, () => { const eventData = { tokens: 'token' }; - const eventChecks: Array<[ - typeof isSessionPollerStartedSignal, - SessionPollerEvent, - typeof sessionPollingStartedTrigger, - ]> = [ + const eventChecks: Array< + [typeof isSessionPollerStartedSignal, SessionPollerEvent, typeof sessionPollingStartedTrigger] + > = [ [isSessionPollerStartedSignal, sessionPollerEvents.SESSION_POLLING_STARTED, sessionPollingStartedTrigger], [isSessionPollerStoppedSignal, sessionPollerEvents.SESSION_POLLING_STOPPED, sessionPollingStoppedTrigger], ]; diff --git a/packages/react/src/components/login/testUtils/oidcClientTestUtil.ts b/packages/react/src/components/login/testUtils/oidcClientTestUtil.ts index 6c1f60f79b..10b7277702 100644 --- a/packages/react/src/components/login/testUtils/oidcClientTestUtil.ts +++ b/packages/react/src/components/login/testUtils/oidcClientTestUtil.ts @@ -50,9 +50,11 @@ export function getDefaultOidcClientTestProps(): OidcClientProps { } export function getPrivateUserManagerClient(userManager: UserManager): OidcClientFromNpm { - const client = ((userManager as unknown) as { - _client: OidcClientFromNpm; - })._client; + const client = ( + userManager as unknown as { + _client: OidcClientFromNpm; + } + )._client; return client; } @@ -174,7 +176,7 @@ export function createMockUserManager(userMock: jest.Mock): UserManager { getUser: userMock, }; - return (manager as unknown) as UserManager; + return manager as unknown as UserManager; } export function createMockOidcClient() { diff --git a/packages/react/src/components/login/testUtils/timerTestUtil.ts b/packages/react/src/components/login/testUtils/timerTestUtil.ts index 5e60243f3e..ce8a5063eb 100644 --- a/packages/react/src/components/login/testUtils/timerTestUtil.ts +++ b/packages/react/src/components/login/testUtils/timerTestUtil.ts @@ -18,7 +18,7 @@ export function createTimedPromise(response: unknown, delay = 1000) { export async function advanceUntilListenerCalled(listener: jest.Mock, advanceTime = 200) { await waitFor(() => { jest.advanceTimersByTime(advanceTime); - expect(listener).toBeCalledTimes(1); + expect(listener).toHaveBeenCalledTimes(1); }); return getLastMockCallArgs(listener); } diff --git a/packages/react/src/components/login/testUtils/userTestUtil.ts b/packages/react/src/components/login/testUtils/userTestUtil.ts index 5e6b35cb2d..52c2f15433 100644 --- a/packages/react/src/components/login/testUtils/userTestUtil.ts +++ b/packages/react/src/components/login/testUtils/userTestUtil.ts @@ -72,12 +72,12 @@ export function createUser(userCreationProps: UserCreationProps = {}): User { ...response, expired: userCreationProps.expiredUser, }; - return ({ + return { ...user, toStorageString() { return JSON.stringify(this); }, - } as unknown) as User; + } as unknown as User; } export function createUserAndPlaceUserToStorage( @@ -91,7 +91,7 @@ export function createUserAndPlaceUserToStorage( } export function raiseUserUserManagerEvent(targetUserManager: UserManager, eventType: keyof PublicUserManagerEvents) { - const events = (targetUserManager.events as unknown) as PublicUserManagerEvents; + const events = targetUserManager.events as unknown as PublicUserManagerEvents; events[eventType].raise(); } diff --git a/packages/react/src/components/login/utils/httpPoller.test.ts b/packages/react/src/components/login/utils/httpPoller.test.ts index f24f8eb3cd..cd483c3514 100644 --- a/packages/react/src/components/login/utils/httpPoller.test.ts +++ b/packages/react/src/components/login/utils/httpPoller.test.ts @@ -79,7 +79,9 @@ describe(`httpPoller`, () => { await advanceOneInterval(); await advanceOneInterval(); // https://stackoverflow.com/questions/52177631/jest-timer-and-promise-dont-work-well-settimeout-and-async-function - await new Promise((resolve) => setImmediate(resolve)); + await new Promise((resolve) => { + setImmediate(resolve); + }); }; const advanceFromStartTimerToLoadEnd = async () => { await advanceToTimerEnd(); @@ -103,15 +105,15 @@ describe(`httpPoller`, () => { beforeEach(() => { jest.useFakeTimers(); }); - describe('Calling start() starts the timer and when timer ends ', () => { + describe('Calling start() starts the timer and when timer ends', () => { it('the pollFunction and shouldPoll have been called continuously', async () => { poller = createPoller({ ...pollerDefaultTestProps, }); poller.start(); - expect(shouldPollMockCallback).not.toBeCalled(); - expect(pollFunctionMockCallback).not.toBeCalled(); - expect(onErrorMockCallback).not.toBeCalled(); + expect(shouldPollMockCallback).not.toHaveBeenCalled(); + expect(pollFunctionMockCallback).not.toHaveBeenCalled(); + expect(onErrorMockCallback).not.toHaveBeenCalled(); await advanceToTimerEnd(); expect(shouldPollMockCallback).toHaveBeenCalledTimes(1); expect(pollFunctionMockCallback).toHaveBeenCalledTimes(1); @@ -144,7 +146,7 @@ describe(`httpPoller`, () => { await advanceFromStartTimerToLoadEnd(); expect(shouldPollMockCallback).toHaveBeenCalledTimes(1); expect(onErrorMockCallback).toHaveBeenCalledTimes(1); - expect(onErrorMockCallback).toBeCalledWith(HttpStatusCode.FORBIDDEN, null); + expect(onErrorMockCallback).toHaveBeenCalledWith(HttpStatusCode.FORBIDDEN, null); await advanceToTimerEnd(); expect(shouldPollMockCallback).toHaveBeenCalledTimes(2); }); @@ -158,14 +160,14 @@ describe(`httpPoller`, () => { poller.start(); await advanceFromStartTimerToLoadEnd(); expect(onErrorMockCallback).toHaveBeenCalledTimes(1); - expect(onErrorMockCallback).toBeCalledWith(undefined, expect.any(Error)); + expect(onErrorMockCallback).toHaveBeenCalledWith(undefined, expect.any(Error)); expect(shouldPollMockCallback).toHaveBeenCalledTimes(1); expect(pollFunctionMockCallback).toHaveBeenCalledTimes(1); await advanceToTimerEnd(); expect(shouldPollMockCallback).toHaveBeenCalledTimes(1); expect(pollFunctionMockCallback).toHaveBeenCalledTimes(1); }); - it(`neither onError or onSuccess are called if request is aborted, if onErrorStatusWhenAborted is not defined `, async () => { + it(`neither onError or onSuccess are called if request is aborted, if onErrorStatusWhenAborted is not defined`, async () => { const fetchAborter = createFetchAborter(); const timeoutListener = jest.fn(); fetchMock.mockOnce( @@ -203,7 +205,7 @@ describe(`httpPoller`, () => { expect(onErrorMockCallback).toHaveBeenCalledTimes(0); expect(onSuccessMockCallback).toHaveBeenCalledTimes(0); }); - it(`onError is called when aborted, if onErrorStatusWhenAborted is defined `, async () => { + it(`onError is called when aborted, if onErrorStatusWhenAborted is defined`, async () => { const onErrorStatusWhenAborted = -100; const fetchAborter = createFetchAborter(); const timeoutListener = jest.fn(); @@ -293,7 +295,7 @@ describe(`httpPoller`, () => { await advanceFromStartTimerToLoadEnd(); expect(shouldPollMockCallback).toHaveBeenCalledTimes(1); expect(onSuccessMockCallback).toHaveBeenCalledTimes(1); - expect(onSuccessMockCallback).toBeCalledWith(pollerDefaultTestProps.requestResponses[0]); + expect(onSuccessMockCallback).toHaveBeenCalledWith(pollerDefaultTestProps.requestResponses[0]); await advanceToTimerEnd(); expect(shouldPollMockCallback).toHaveBeenCalledTimes(2); expect(onSuccessMockCallback).toHaveBeenCalledTimes(1); diff --git a/packages/react/src/components/login/utils/userRenewalPromise.test.ts b/packages/react/src/components/login/utils/userRenewalPromise.test.ts index 9d3bd6bf55..269ab8c1ce 100644 --- a/packages/react/src/components/login/utils/userRenewalPromise.test.ts +++ b/packages/react/src/components/login/utils/userRenewalPromise.test.ts @@ -55,7 +55,7 @@ describe(`createRenewalTrackingPromise`, () => { raiseExpiringEvent(); await advanceUntilListenerCalled(fulfillmentListener); await waitFor(() => { - expect(promiseListener).toBeCalledTimes(1); + expect(promiseListener).toHaveBeenCalledTimes(1); }); expect(getLastMockCallArgs(promiseListener)[0]).toBeInstanceOf(Error); expect(fulfillmentListener).toHaveBeenCalledTimes(1); @@ -74,7 +74,7 @@ describe(`createRenewalTrackingPromise`, () => { raiseUnloadedEvent(); await advanceUntilListenerCalled(fulfillmentListener); await waitFor(() => { - expect(promiseListener).toBeCalledTimes(1); + expect(promiseListener).toHaveBeenCalledTimes(1); }); expect(getLastMockCallArgs(promiseListener)[0]).toBeInstanceOf(Error); expect(fulfillmentListener).toHaveBeenCalledTimes(1); diff --git a/packages/react/src/components/pagination/Pagination.tsx b/packages/react/src/components/pagination/Pagination.tsx index 5934c99662..0059fd8d6a 100644 --- a/packages/react/src/components/pagination/Pagination.tsx +++ b/packages/react/src/components/pagination/Pagination.tsx @@ -209,11 +209,10 @@ export const Pagination = ({ } }, [pageIndex, hasUserChangedPage]); - const itemList = useMemo(() => createPaginationItemList({ pageCount, pageIndex, siblingCount }), [ - pageCount, - pageIndex, - siblingCount, - ]); + const itemList = useMemo( + () => createPaginationItemList({ pageCount, pageIndex, siblingCount }), + [pageCount, pageIndex, siblingCount], + ); const customThemeClass = useTheme(styles.pagination, theme); diff --git a/packages/react/src/components/searchInput/SearchInput.tsx b/packages/react/src/components/searchInput/SearchInput.tsx index 603d29ff2e..bd84ac8356 100644 --- a/packages/react/src/components/searchInput/SearchInput.tsx +++ b/packages/react/src/components/searchInput/SearchInput.tsx @@ -221,10 +221,13 @@ export const SearchInput = ({ } if (event.key === 'Home' || event.key === 'End') { // When preventDownshiftDefault = true, downshift does not alter native behavior - // eslint-disable-next-line no-param-reassign - (event.nativeEvent as typeof event.nativeEvent & { - preventDownshiftDefault: boolean; - }).preventDownshiftDefault = true; + /* eslint-disable no-param-reassign */ + ( + event.nativeEvent as typeof event.nativeEvent & { + preventDownshiftDefault: boolean; + } + ).preventDownshiftDefault = true; + /* eslint-enable no-param-reassign */ } }; diff --git a/packages/react/src/components/sideNavigation/mainLevel/MainLevel.tsx b/packages/react/src/components/sideNavigation/mainLevel/MainLevel.tsx index d8a6050f36..0f5776f1c2 100644 --- a/packages/react/src/components/sideNavigation/mainLevel/MainLevel.tsx +++ b/packages/react/src/components/sideNavigation/mainLevel/MainLevel.tsx @@ -154,9 +154,8 @@ export const MainLevel = ({ ...rest }: MainLevelProps) => { const menuId = `${id}-menu`; - const { defaultOpenMainLevels, activeParentLevel, setActiveParentLevel, setMobileMenuOpen } = useContext( - SideNavigationContext, - ); + const { defaultOpenMainLevels, activeParentLevel, setActiveParentLevel, setMobileMenuOpen } = + useContext(SideNavigationContext); const [isOpen, setIsOpen] = useState(defaultOpenMainLevels.includes(index as number)); const [isActiveParent, setIsActiveParent] = useState(false); diff --git a/packages/react/src/components/stepper/Stepper.tsx b/packages/react/src/components/stepper/Stepper.tsx index 4c6bad5c64..0f338ee7e1 100644 --- a/packages/react/src/components/stepper/Stepper.tsx +++ b/packages/react/src/components/stepper/Stepper.tsx @@ -189,6 +189,7 @@ export const Stepper = ({
{showPreviousButton && ( {showNextButton && (