diff --git a/.eslintrc.json b/.eslintrc.json index fa1dde1145..632129451d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -24,16 +24,13 @@ "no-use-before-define": "off", // since we are using airbnb, it turns this on, we need to disabled it @see https://stackoverflow.com/a/64024916/1931451 "@typescript-eslint/no-use-before-define": "off", "no-shadow": "off", // we need to disable this @see https://stackoverflow.com/a/63961972/1931451 - "@typescript-eslint/no-shadow": ["error"], + "@typescript-eslint/no-shadow": 2, "react/jsx-filename-extension": 0, "react/jsx-props-no-spreading": 0, "react/function-component-definition": 0, "react/jsx-no-useless-fragment": 0, "react/no-unstable-nested-components": 0, - "react/boolean-prop-naming": [ - "error", - { "rule": "^(is|has|should)[A-Z]([A-Za-z0-9]?)+" } - ], + "react/boolean-prop-naming": ["error", { "rule": "^(is|has|should)[A-Z]([A-Za-z0-9]?)+" }], "react/destructuring-assignment": 2, "react/no-children-prop": 2, "react/no-deprecated": 2, @@ -153,7 +150,7 @@ ], "react/forbid-prop-types": 0, "react/jsx-no-undef": 0, - "react/no-unused-prop-types": 0, + "react/no-unused-prop-types": 2, "react/prop-types": 0, "react/react-in-jsx-scope": 0, "curly": "error", diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000000..d794772502 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,13 @@ +{ + "arrowParens": "always", + "bracketSpacing": true, + "jsxBracketSameLine": false, + "printWidth": 100, + "proseWrap": "always", + "requirePragma": false, + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false +} diff --git a/next.config.js b/next.config.js index f6673e8e52..7109962519 100644 --- a/next.config.js +++ b/next.config.js @@ -165,6 +165,7 @@ const config = { }, }; +// eslint-disable-next-line max-lines module.exports = withPlugins( [withBundleAnalyzer, withPWA, withFonts, nextTranslate, withSentryConfig], config, diff --git a/package.json b/package.json index 368561bb50..f8dfad678f 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,10 @@ "test:watch": "vitest watch", "analyze": "cross-env ANALYZE_BUNDLE=true yarn build", "lokalise": "node scripts/lokalise.js", - "chapter-data:format": "node scripts/format-chapter-data-json.js" + "chapter-data:format": "node scripts/format-chapter-data-json.js", + "postinstall": "husky", + "prepack": "pinst --disable", + "postpack": "pinst --enable" }, "dependencies": { "@babel/eslint-parser": "^7.19.1", @@ -138,12 +141,13 @@ "eslint-plugin-sonarjs": "^0.15.0", "eslint-plugin-storybook": "^0.6.15", "eslint-plugin-unicorn": "^43.0.2", - "husky": "^8.0.1", + "husky": "^9.0.11", "inquirer": "^8.0.0", "inquirer-file-tree-selection-prompt": "^1", "jsdom": "^20.0.0", "lint-staged": "^13.0.3", "next-sitemap": "^3.1.22", + "pinst": "^3.0.0", "postcss": "8", "postcss-scss": "^4.0.5", "prettier": "^2.7.1", @@ -169,6 +173,7 @@ }, "lint-staged": { "*.{tsx,ts}": "yarn lint:fix", - "*.scss": "yarn lint:scss" + "*.scss": "yarn lint:scss", + "*": "prettier --write" } } diff --git a/server.js b/server.js index 9213479dc9..05fd54620f 100644 --- a/server.js +++ b/server.js @@ -20,6 +20,7 @@ app.prepare().then(() => { }, ).listen(3000, (err) => { if (err) throw err; + // eslint-disable-next-line no-console console.log('> Server started on https://localhost:3000'); }); }); diff --git a/src/components/Collection/CollectionDetail/CollectionDetail.tsx b/src/components/Collection/CollectionDetail/CollectionDetail.tsx index b22d5b33e3..edb9c1d719 100644 --- a/src/components/Collection/CollectionDetail/CollectionDetail.tsx +++ b/src/components/Collection/CollectionDetail/CollectionDetail.tsx @@ -32,7 +32,6 @@ type CollectionDetailProps = { bookmarks: Bookmark[]; sortBy: string; onSortByChange: (sortBy: string) => void; - onUpdated: () => void; onItemDeleted: (bookmarkId: string) => void; }; diff --git a/src/components/Collection/CollectionDetailContainer/CollectionDetailContainer.tsx b/src/components/Collection/CollectionDetailContainer/CollectionDetailContainer.tsx index 415c3fcc7f..f1dec6352f 100644 --- a/src/components/Collection/CollectionDetailContainer/CollectionDetailContainer.tsx +++ b/src/components/Collection/CollectionDetailContainer/CollectionDetailContainer.tsx @@ -138,7 +138,6 @@ const CollectionDetailContainer = ({ bookmarks={bookmarks} sortBy={sortBy} onSortByChange={onSortByChange} - onUpdated={onUpdated} onItemDeleted={onItemDeleted} isOwner={isOwner} /> diff --git a/src/components/Collection/SaveToCollectionModal/SaveToCollectionModal.tsx b/src/components/Collection/SaveToCollectionModal/SaveToCollectionModal.tsx index 5318caece7..d4cb883801 100644 --- a/src/components/Collection/SaveToCollectionModal/SaveToCollectionModal.tsx +++ b/src/components/Collection/SaveToCollectionModal/SaveToCollectionModal.tsx @@ -26,7 +26,6 @@ type SaveToCollectionModalProps = { collections: Collection[]; onCollectionToggled: (collection: Collection, newValue: boolean) => void; onNewCollectionCreated: (name: string) => Promise; - isAddingNewCollection?: boolean; onClose?: () => void; verseKey: string; }; diff --git a/src/components/FormBuilder/FormBuider.stories.tsx b/src/components/FormBuilder/FormBuider.stories.tsx index 85aac95e53..21fd38db4a 100644 --- a/src/components/FormBuilder/FormBuider.stories.tsx +++ b/src/components/FormBuilder/FormBuider.stories.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ /* eslint-disable max-lines */ /* eslint-disable react/no-multi-comp */ /* eslint-disable no-alert */ diff --git a/src/components/Navbar/NavigationDrawer/NavigationDrawerItem.tsx b/src/components/Navbar/NavigationDrawer/NavigationDrawerItem.tsx index a595064fe0..3ead56b0a3 100644 --- a/src/components/Navbar/NavigationDrawer/NavigationDrawerItem.tsx +++ b/src/components/Navbar/NavigationDrawer/NavigationDrawerItem.tsx @@ -14,7 +14,6 @@ type NavigationDrawerItemProps = { isExternalLink?: boolean; href?: string; isStale?: boolean; - shouldFlipOnRTL?: boolean; onClick?: () => void; }; diff --git a/src/components/QuranReader/EndOfScrollingControls/ChapterControls.tsx b/src/components/QuranReader/EndOfScrollingControls/ChapterControls.tsx index 59801f144a..fb6702d1f9 100644 --- a/src/components/QuranReader/EndOfScrollingControls/ChapterControls.tsx +++ b/src/components/QuranReader/EndOfScrollingControls/ChapterControls.tsx @@ -12,10 +12,8 @@ import { isFirstSurah, isLastSurah } from '@/utils/chapter'; import { logButtonClick } from '@/utils/eventLogger'; import { getNextSurahNavigationUrl, getPreviousSurahNavigationUrl } from '@/utils/navigation'; import { VersesResponse } from 'types/ApiResponses'; -import Verse from 'types/Verse'; interface Props { - lastVerse: Verse; initialData: VersesResponse; } diff --git a/src/components/QuranReader/EndOfScrollingControls/index.tsx b/src/components/QuranReader/EndOfScrollingControls/index.tsx index b08e201d4b..69ea8aa2ef 100644 --- a/src/components/QuranReader/EndOfScrollingControls/index.tsx +++ b/src/components/QuranReader/EndOfScrollingControls/index.tsx @@ -46,7 +46,7 @@ const EndOfScrollingControls: React.FC = ({
{quranReaderDataType === QuranReaderDataType.Chapter && ( - + )} {(quranReaderDataType === QuranReaderDataType.Verse || quranReaderDataType === QuranReaderDataType.ChapterVerseRanges || diff --git a/src/components/QuranReader/ReadingView/Line.tsx b/src/components/QuranReader/ReadingView/Line.tsx index 76149c75c1..a66727a17e 100644 --- a/src/components/QuranReader/ReadingView/Line.tsx +++ b/src/components/QuranReader/ReadingView/Line.tsx @@ -23,6 +23,7 @@ export type LineProps = { words: Word[]; lineKey: string; isBigTextLayout: boolean; + // eslint-disable-next-line react/no-unused-prop-types quranReaderStyles: QuranReaderStyles; pageIndex: number; lineIndex: number; diff --git a/src/components/QuranReader/ReadingView/WordActionsMenu/index.tsx b/src/components/QuranReader/ReadingView/WordActionsMenu/index.tsx index 50ba6fe257..0810efb6cc 100644 --- a/src/components/QuranReader/ReadingView/WordActionsMenu/index.tsx +++ b/src/components/QuranReader/ReadingView/WordActionsMenu/index.tsx @@ -32,7 +32,6 @@ const ReadingViewWordActionsMenu: React.FC = ({ word, onActionTriggered } {word?.verse?.timestamps && ( diff --git a/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/ReflectionBody/index.tsx b/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/ReflectionBody/index.tsx index 4489b90af3..270d455569 100644 --- a/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/ReflectionBody/index.tsx +++ b/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/ReflectionBody/index.tsx @@ -25,7 +25,6 @@ interface Props { data: AyahReflectionsResponse; scrollToTop: () => void; setSelectedVerseNumber: (verseNumber: string) => void; - translationFontScale: number; } const ReflectionBody: React.FC = ({ diff --git a/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/index.tsx b/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/index.tsx index 6fd0c2c757..d9456562f3 100644 --- a/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/index.tsx +++ b/src/components/QuranReader/ReflectionView/ReflectionBodyContainer/index.tsx @@ -2,13 +2,11 @@ import { useCallback, useState } from 'react'; import dynamic from 'next/dynamic'; import useTranslation from 'next-translate/useTranslation'; -import { shallowEqual, useSelector } from 'react-redux'; import DataFetcher from '@/components/DataFetcher'; import { REFLECTIONS_OBSERVER_ID } from '@/components/QuranReader/observer'; import TafsirSkeleton from '@/components/QuranReader/TafsirView/TafsirSkeleton'; import useGlobalIntersectionObserverWithDelay from '@/hooks/useGlobalIntersectionObserverWithDelay'; -import { selectQuranReaderStyles } from '@/redux/slices/QuranReader/styles'; import { isLoggedIn } from '@/utils/auth/login'; import { postReflectionViews } from '@/utils/auth/qf/api'; import { @@ -40,7 +38,6 @@ const ReflectionBodyContainer = ({ }: ReflectionBodyProps) => { const [selectedChapterId, setSelectedChapterId] = useState(initialChapterId); const [selectedVerseNumber, setSelectedVerseNumber] = useState(initialVerseNumber); - const { translationFontScale } = useSelector(selectQuranReaderStyles, shallowEqual); const { lang } = useTranslation(); /** @@ -75,10 +72,9 @@ const ReflectionBodyContainer = ({ selectedVerseNumber={selectedVerseNumber} setSelectedVerseNumber={setSelectedVerseNumber} scrollToTop={scrollToTop} - translationFontScale={translationFontScale} /> ), - [scrollToTop, selectedChapterId, selectedVerseNumber, translationFontScale], + [scrollToTop, selectedChapterId, selectedVerseNumber], ); const body = ( diff --git a/src/components/QuranReader/TranslationView/TranslationViewCell.tsx b/src/components/QuranReader/TranslationView/TranslationViewCell.tsx index d6aeb61b5d..0486bab6cf 100644 --- a/src/components/QuranReader/TranslationView/TranslationViewCell.tsx +++ b/src/components/QuranReader/TranslationView/TranslationViewCell.tsx @@ -1,4 +1,4 @@ -import React, { RefObject, useEffect, memo, useContext } from 'react'; +import React, { RefObject, memo, useContext, useEffect } from 'react'; import { useSelector as useSelectorXstate } from '@xstate/react'; import classNames from 'classnames'; @@ -96,10 +96,7 @@ const TranslationViewCell: React.FC = ({
- +
diff --git a/src/components/QuranicCalendar/QuranicCalendarMonth/index.tsx b/src/components/QuranicCalendar/QuranicCalendarMonth/index.tsx index 0f8f75f19d..ef802a0340 100644 --- a/src/components/QuranicCalendar/QuranicCalendarMonth/index.tsx +++ b/src/components/QuranicCalendar/QuranicCalendarMonth/index.tsx @@ -26,7 +26,6 @@ const QuranicCalendarMonth: React.FC = ({ monthWeeks, currentQuranicCalen key={ranges} isCurrentWeek={currentQuranicCalendarWeek === Number(weekNumber)} weekNumber={Number(weekNumber)} - currentQuranicCalendarWeek={currentQuranicCalendarWeek} localizedMonth={localizedMonth} ranges={ranges} /> diff --git a/src/components/QuranicCalendar/QuranicCalendarWeek/index.tsx b/src/components/QuranicCalendar/QuranicCalendarWeek/index.tsx index 1c1b9a573f..815926959c 100644 --- a/src/components/QuranicCalendar/QuranicCalendarWeek/index.tsx +++ b/src/components/QuranicCalendar/QuranicCalendarWeek/index.tsx @@ -23,7 +23,6 @@ import { getQuranReflectPostUrl } from '@/utils/quranReflect/navigation'; type Props = { weekNumber: number; - currentQuranicCalendarWeek: number; isCurrentWeek: boolean; localizedMonth: string; ranges: string; diff --git a/src/components/Search/PreInput/SearchItem.tsx b/src/components/Search/PreInput/SearchItem.tsx index 0dbd1766e6..5fbc125337 100644 --- a/src/components/Search/PreInput/SearchItem.tsx +++ b/src/components/Search/PreInput/SearchItem.tsx @@ -7,7 +7,6 @@ import IconContainer, { IconColor, IconSize } from '@/dls/IconContainer/IconCont type SearchItemProps = { prefix: React.ReactNode; title: string; - url: string; suffix?: React.ReactNode; onClick?: () => void; }; diff --git a/src/components/Search/PreInput/SearchQuerySuggestion/index.tsx b/src/components/Search/PreInput/SearchQuerySuggestion/index.tsx index dddf3c6e0f..181f6c6486 100644 --- a/src/components/Search/PreInput/SearchQuerySuggestion/index.tsx +++ b/src/components/Search/PreInput/SearchQuerySuggestion/index.tsx @@ -32,7 +32,6 @@ const SearchQuerySuggestion: React.FC = ({ } - url="/" onClick={() => onSearchKeywordClicked(searchQuery)} suffix={ onRemoveSearchQueryClicked && ( diff --git a/src/components/Search/PreInput/index.tsx b/src/components/Search/PreInput/index.tsx index b13f5da8ae..6cf57d01a5 100644 --- a/src/components/Search/PreInput/index.tsx +++ b/src/components/Search/PreInput/index.tsx @@ -50,7 +50,6 @@ const PreInput: React.FC = ({ onSearchKeywordClicked, isSearchDrawer }) = } title={chapterData.transliteratedName} - url={url} key={url} onClick={() => { logButtonClick( diff --git a/src/components/Verse/PlayVerseAudioButton.tsx b/src/components/Verse/PlayVerseAudioButton.tsx index 15b3b0b08e..cbf205824c 100644 --- a/src/components/Verse/PlayVerseAudioButton.tsx +++ b/src/components/Verse/PlayVerseAudioButton.tsx @@ -23,7 +23,6 @@ import { AudioPlayerMachineContext } from 'src/xstate/AudioPlayerMachineContext' interface PlayVerseAudioProps { verseKey: string; - timestamp: number; isTranslationView?: boolean; onActionTriggered?: () => void; } diff --git a/src/components/Verse/SaveToCollectionAction.tsx b/src/components/Verse/SaveToCollectionAction.tsx index f624edee31..7daa975dba 100644 --- a/src/components/Verse/SaveToCollectionAction.tsx +++ b/src/components/Verse/SaveToCollectionAction.tsx @@ -216,7 +216,6 @@ const SaveToCollectionAction = ({ verse, bookmarksRangeUrl, isTranslationView }) onCollectionToggled={onCollectionToggled} onNewCollectionCreated={onNewCollectionCreated} onClose={closeModal} - isAddingNewCollection collections={collections} verseKey={`${verse.chapterId}:${verse.verseNumber}`} /> diff --git a/src/components/Verses/RecentReadingSessions.tsx b/src/components/Verses/RecentReadingSessions.tsx index ad3fd0c77d..5cdadb9626 100644 --- a/src/components/Verses/RecentReadingSessions.tsx +++ b/src/components/Verses/RecentReadingSessions.tsx @@ -60,7 +60,6 @@ const RecentReadingSessions = () => { Number(verseNumber), lang, )}`} - verseCount={surah.versesCount} />
diff --git a/src/components/dls/ConfirmationModal/ConfirmationModal.stories.tsx b/src/components/dls/ConfirmationModal/ConfirmationModal.stories.tsx index 0fbc92ba3f..226738c590 100644 --- a/src/components/dls/ConfirmationModal/ConfirmationModal.stories.tsx +++ b/src/components/dls/ConfirmationModal/ConfirmationModal.stories.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-alert */ import Button from '../Button/Button'; import ConfirmationModal from './ConfirmationModal'; diff --git a/src/components/dls/Skeleton/Skeleton.tsx b/src/components/dls/Skeleton/Skeleton.tsx index 84e2c99da8..d6965624f4 100644 --- a/src/components/dls/Skeleton/Skeleton.tsx +++ b/src/components/dls/Skeleton/Skeleton.tsx @@ -7,7 +7,6 @@ type SkeletonProps = { isRounded?: boolean; isSquared?: boolean; isActive?: boolean; - style?: React.CSSProperties; className?: string; }; diff --git a/src/components/dls/SurahPreview/SurahPreview.tsx b/src/components/dls/SurahPreview/SurahPreview.tsx index f64791a58f..40fb3431f8 100644 --- a/src/components/dls/SurahPreview/SurahPreview.tsx +++ b/src/components/dls/SurahPreview/SurahPreview.tsx @@ -10,7 +10,6 @@ type SurahProps = { surahNumber: number; surahName: string; translatedSurahName: string; - verseCount: number; chapterId: number; display?: SurahPreviewDisplay; description?: string; diff --git a/src/pages/page/utils/getQuranReaderData.ts b/src/pages/page/utils/getQuranReaderData.ts index 9b4318252b..dd37fc6ed0 100644 --- a/src/pages/page/utils/getQuranReaderData.ts +++ b/src/pages/page/utils/getQuranReaderData.ts @@ -6,7 +6,7 @@ const getQuranReaderData = ( ) => { return { ...pageVersesData, - pageVerses: { pagesLookup: pagesLookupData }, + pagesLookup: pagesLookupData, metaData: { numberOfVerses: pageVersesData.verses.length }, }; }; diff --git a/src/pages/radio.tsx b/src/pages/radio.tsx index 601e65e247..50a870cb46 100644 --- a/src/pages/radio.tsx +++ b/src/pages/radio.tsx @@ -12,12 +12,10 @@ import ReciterStationList from '@/components/Radio/ReciterStationList'; import { getAllChaptersData } from '@/utils/chapter'; import { getLanguageAlternates } from '@/utils/locale'; import { getCanonicalUrl } from '@/utils/navigation'; -import ChaptersData from 'types/ChaptersData'; import Reciter from 'types/Reciter'; type RadioPageProps = { reciters: Reciter[]; - chaptersData: ChaptersData; }; const NAVIGATION_URL = '/radio'; diff --git a/src/pages/reciters/[reciterId]/[chapterId].tsx b/src/pages/reciters/[reciterId]/[chapterId].tsx index 6ea084e40e..c4c25915c7 100644 --- a/src/pages/reciters/[reciterId]/[chapterId].tsx +++ b/src/pages/reciters/[reciterId]/[chapterId].tsx @@ -24,7 +24,7 @@ import PauseIcon from '@/icons/pause.svg'; import PlayIcon from '@/icons/play-arrow.svg'; import ReaderIcon from '@/icons/reader.svg'; import { makeCDNUrl } from '@/utils/cdn'; -import { getChapterData, getAllChaptersData } from '@/utils/chapter'; +import { getAllChaptersData, getChapterData } from '@/utils/chapter'; import { logButtonClick } from '@/utils/eventLogger'; import { getCanonicalUrl, @@ -36,13 +36,11 @@ import { isValidChapterId } from '@/utils/validator'; import { selectCurrentAudioReciterId } from '@/xstate/actors/audioPlayer/selectors'; import { AudioPlayerMachineContext } from '@/xstate/AudioPlayerMachineContext'; import Chapter from 'types/Chapter'; -import ChaptersData from 'types/ChaptersData'; import Reciter from 'types/Reciter'; type ShareRecitationPageProps = { selectedReciter: Reciter; selectedChapter: Chapter; - chaptersData: ChaptersData; }; const RecitationPage = ({ selectedReciter, selectedChapter }: ShareRecitationPageProps) => { diff --git a/src/xstate/actors/audioPlayer/audioPlayerMachine.ts b/src/xstate/actors/audioPlayer/audioPlayerMachine.ts index 965e0d726a..05c81236e5 100644 --- a/src/xstate/actors/audioPlayer/audioPlayerMachine.ts +++ b/src/xstate/actors/audioPlayer/audioPlayerMachine.ts @@ -1140,6 +1140,7 @@ export const audioPlayerMachine = handler as MediaSessionActionHandler, ); } catch (error) { + // eslint-disable-next-line no-console console.log(`The media session action "${action}" is not supported yet.`); } } diff --git a/yarn.lock b/yarn.lock index 75cf89245a..d0004af62b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8870,10 +8870,10 @@ humps@^2.0.1: resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" integrity sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g== -husky@^8.0.1: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== +husky@^9.0.11: + version "9.0.11" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" + integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" @@ -11323,6 +11323,11 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== +pinst@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pinst/-/pinst-3.0.0.tgz#80dec0a85f1f993c6084172020f3dbf512897eec" + integrity sha512-cengSmBxtCyaJqtRSvJorIIZXMXg+lJ3sIljGmtBGUVonMnMsVJbnzl6jGN1HkOWwxNuJynCJ2hXxxqCQrFDdw== + pirates@^4.0.4, pirates@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" @@ -13077,7 +13082,16 @@ string-argv@0.3.2: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13160,7 +13174,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -13174,6 +13188,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -14682,7 +14703,7 @@ workbox-window@6.6.1, workbox-window@^6.5.4: "@types/trusted-types" "^2.0.2" workbox-core "6.6.1" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -14700,6 +14721,15 @@ wrap-ansi@^6.0.1: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"