From 3d4a8ff8dfbb8c430b23e977febabc8267f5cf48 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Mon, 26 Aug 2024 14:40:24 +1000 Subject: [PATCH] chore: cleaned package.json & string TODOs --- CONTRIBUTING.md | 6 +- package.json | 8 +-- tools/README.md | 4 +- tools/localization/crowdInPostImport.sh | 15 ---- .../message-content/ClickToTrustSender.tsx | 5 +- .../message/reactions/ReactionPopup.tsx | 2 +- .../dialog/UpdateGroupMembersDialog.tsx | 1 - .../leftpane/LeftPaneSectionHeader.tsx | 1 - .../settings/section/CategoryAppearance.tsx | 1 - .../settings/section/CategoryPermissions.tsx | 1 - .../settings/section/CategoryPrivacy.tsx | 3 - ts/state/selectors/selectedConversation.ts | 1 - ts/util/i18n/shared.ts | 16 +++-- ts/util/i18n/timeLocaleMap.ts | 25 +++---- yarn.lock | 68 ++----------------- 15 files changed, 33 insertions(+), 124 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 31c054da2..32c1631bb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -116,24 +116,24 @@ Setup instructions for Windows using Chocolatey: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` - ### Linux 1. Install build tools `apt install build-essential cmake` (this installs make, g++, gcc) 2. Depending on your distro, you might need to install `hunspell` and `hunspell-` (e.g. `hunspell-en-au`) In Ubuntu, you may also need to install + ``` sudo apt install cmake npm install cmake-js ``` In Fedora, you may also need to install + ``` sudo dnf install make automake gcc gcc-c++ kernel-devel ``` - ### All platforms Now, run these commands in your preferred terminal in a good directory for development: @@ -237,7 +237,7 @@ So you wanna make a pull request? Please observe the following guidelines. this script generates updated TypeScript type definitions to ensure you aren't using a localisation key which doesn't exist. - Please do not submit pull requests for pure translation fixes. Anyone can update - the translations at [Crowdin](https://crowdin.com/project/session-desktop). + the translations at [Crowdin](https://crowdin.com/project/session-crossplatform-strings). - [Rebase](https://nathanleclaire.com/blog/2014/09/14/dont-be-scared-of-git-rebase/) your changes on the latest `clearnet` branch, resolving any conflicts. This ensures that your changes will merge cleanly when you open your PR. diff --git a/package.json b/package.json index efd421fac..e3c8c3ad9 100644 --- a/package.json +++ b/package.json @@ -37,15 +37,12 @@ "start-prod:pretty": "cross-env NODE_ENV=production NODE_APP_INSTANCE=devprod$MULTI electron . | npx bunyan", "start-dev": "cross-env NODE_ENV=development NODE_APP_INSTANCE=devprod$MULTI electron .", "build-everything": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales && tsc && yarn build:workers", - "build-everything:en": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales-soft && tsc && yarn build:workers", - "build-everything:watch": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales && yarn build:workers && concurrently \"tsc -w\" \"yarn build-watch:locales\"", - "build-everything:watch-en": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales-soft && yarn build:workers && concurrently \"tsc -w\" \"yarn build-watch:locales-en\"", + "build-everything:soft": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales-soft && tsc && yarn build:workers", + "build-everything:watch": "yarn clean && yarn protobuf && yarn update-git-info && yarn sass && yarn build:locales-soft && yarn build:workers && yarn tsc -w", "start-dev:pretty": "cross-env NODE_ENV=production NODE_APP_INSTANCE=devprod$MULTI electron . | npx bunyan", "build:workers": "yarn worker:utils && yarn worker:libsession", "build:locales": "python3 ./tools/localization/generateLocales.py --generate-types --print-problems --error-on-problems --error-old-dynamic-variables", "build:locales-soft": "python3 ./tools/localization/generateLocales.py --generate-types --print-problems", - "build-watch:locales": "nodemon --watch _locales/en/messages.json --exec \"yarn build:locales\"", - "build-watch:locales-en": "nodemon --watch _locales/en/messages.json --exec \"yarn build:locales-soft\"", "watch": "yarn clean && yarn protobuf && yarn update-git-info && yarn build-everything:watch", "protobuf": "pbjs --target static-module --wrap commonjs --out ts/protobuf/compiled.js protos/*.proto && pbts --out ts/protobuf/compiled.d.ts ts/protobuf/compiled.js --force-long", "sass": "rimraf 'stylesheets/dist/' && webpack --config=./sass.config.js", @@ -208,7 +205,6 @@ "mini-css-extract-plugin": "^2.7.5", "mocha": "10.0.0", "node-loader": "^2.0.0", - "nodemon": "^3.1.0", "patch-package": "^6.4.7", "postinstall-prepare": "^1.0.1", "prettier": "3.2.5", diff --git a/tools/README.md b/tools/README.md index bf96d424a..6dcf9e9bd 100644 --- a/tools/README.md +++ b/tools/README.md @@ -57,10 +57,8 @@ python3 ./tools/findString.py --open --limit 5 When a CrowdIn PR is made to update the localizations the [./localization/crowdInPostInstall.sh](./localization/crowdInPostImport.sh) - This script processes the imported -files by running the following scripts: +files by running the following script: -- [./util/sortJson.py](./util/sortJson.py) - This script sorts a json file and is run for all `messages.json` files - located in `./_locales/`. - [./localization/generateLocales.py](./localization/generateLocales.py) - This script generates the TypeScript type definitions [locales.ts](../ts/localization/locales.ts). This script also validates the dynamic variables in each locale file and flags any errors. diff --git a/tools/localization/crowdInPostImport.sh b/tools/localization/crowdInPostImport.sh index 8e5672ca2..bfff230b2 100644 --- a/tools/localization/crowdInPostImport.sh +++ b/tools/localization/crowdInPostImport.sh @@ -2,22 +2,7 @@ echo 'Cleaning up CrowdIn import' -SORT_JSON_FILE=$PWD/tools/util/sortJson.py GENERATE_LOCALES_FILE=$PWD/tools/localization/generateLocales.py -# Sort all the messages.json files -for dir in $PWD/_locales/*/ -do - dir=${dir%*/} - file="${dir}/messages.json" - if [ -f "$file" ] - then - python $SORT_JSON_FILE "$file" - else - echo "$file not found." - - fi -done - # Generate Types and find problems if the python script exists with a non-zero exit code then the build will fail python3 $GENERATE_LOCALES_FILE --print-problems --error-on-problems --error-old-dynamic-variables --print-old-dynamic-variables diff --git a/ts/components/conversation/message/message-content/ClickToTrustSender.tsx b/ts/components/conversation/message/message-content/ClickToTrustSender.tsx index df963df6f..eb117136f 100644 --- a/ts/components/conversation/message/message-content/ClickToTrustSender.tsx +++ b/ts/components/conversation/message/message-content/ClickToTrustSender.tsx @@ -129,10 +129,11 @@ export const ClickToTrustSender = (props: { messageId: string }) => { // eslint-disable-next-line @typescript-eslint/no-misused-promises - {/** TODO - Add file type */} {window.i18n('attachmentsClickToDownload', { - file_type: fileType, + // Note: we don't want to change the case of a localized string, but as an exception this one is approved. + // The reason is that the attachments logic is scheduled to be changed soon :tm: + file_type: fileType.toLocaleLowerCase(), })} diff --git a/ts/components/conversation/message/reactions/ReactionPopup.tsx b/ts/components/conversation/message/reactions/ReactionPopup.tsx index 63128539d..aac55aeca 100644 --- a/ts/components/conversation/message/reactions/ReactionPopup.tsx +++ b/ts/components/conversation/message/reactions/ReactionPopup.tsx @@ -59,7 +59,7 @@ const generateContactsString = ( let hasMe = false; let numberOfReactors = 0; senders.forEach(sender => { - // TODO - make sure to truncate with ellipsis if too long @will + // TODO truncate with ellipsis if too long? const contact = findAndFormatContact(sender); if (contact.isMe) { hasMe = true; diff --git a/ts/components/dialog/UpdateGroupMembersDialog.tsx b/ts/components/dialog/UpdateGroupMembersDialog.tsx index 1068b5c8f..27fc49b14 100644 --- a/ts/components/dialog/UpdateGroupMembersDialog.tsx +++ b/ts/components/dialog/UpdateGroupMembersDialog.tsx @@ -184,7 +184,6 @@ export const UpdateGroupMembersDialog = (props: Props) => { const showNoMembersMessage = existingMembers.length === 0; const okText = window.i18n('okay'); const cancelText = window.i18n('cancel'); - // TODO: String localization - remove const titleText = window.i18n('groupName'); return ( diff --git a/ts/components/leftpane/LeftPaneSectionHeader.tsx b/ts/components/leftpane/LeftPaneSectionHeader.tsx index 1b3c46e14..e9940ce7f 100644 --- a/ts/components/leftpane/LeftPaneSectionHeader.tsx +++ b/ts/components/leftpane/LeftPaneSectionHeader.tsx @@ -149,7 +149,6 @@ export const LeftPaneBanner = () => { padding={'var(--margins-md)'} > - {/** TODO: String localization - remove */} {window.i18n('recoveryPasswordBannerTitle')} { ? true : window.getSettingValue(SettingsKey.settingsMenuBar); - // TODO: strings - verify this merge return ( <> diff --git a/ts/components/settings/section/CategoryPermissions.tsx b/ts/components/settings/section/CategoryPermissions.tsx index 439f87253..60b595ce7 100644 --- a/ts/components/settings/section/CategoryPermissions.tsx +++ b/ts/components/settings/section/CategoryPermissions.tsx @@ -56,7 +56,6 @@ export const SettingsCategoryPermissions = () => { const forceUpdate = useUpdate(); const isStartInTrayActive = Boolean(window.getSettingValue(SettingsKey.settingsStartInTray)); - // TODO: strings - verify merge return ( <> - {/* TODO: strings - verify merge */} {!props.hasPassword ? ( {/* We have a password, let's show the 'change' and 'remove' password buttons */} { diff --git a/ts/state/selectors/selectedConversation.ts b/ts/state/selectors/selectedConversation.ts index eda486d54..8669e21bc 100644 --- a/ts/state/selectors/selectedConversation.ts +++ b/ts/state/selectors/selectedConversation.ts @@ -331,7 +331,6 @@ export function useSelectedShortenedPubkeyOrFallback() { if (isPrivate) { return window.i18n('anonymous'); } - // TODO: String localization - remove return window.i18n('unknown'); } diff --git a/ts/util/i18n/shared.ts b/ts/util/i18n/shared.ts index 0575acea4..583f511e7 100644 --- a/ts/util/i18n/shared.ts +++ b/ts/util/i18n/shared.ts @@ -1,15 +1,17 @@ import { timeLocaleMap } from './timeLocaleMap'; +let mappedBrowserLocaleDisplayed = false; +let initialLocale: Locale | undefined; + /** * Logs an i18n message to the console. * @param message - The message to log. * - * TODO - Replace this logging method when the new logger is created */ export function i18nLog(message: string) { // eslint:disable: no-console // eslint-disable-next-line no-console - (window?.log?.error ?? console.log)(`i18n: ${message}`); + (window?.log?.info ?? console.log)(`i18n: ${message}`); } export type Locale = keyof typeof timeLocaleMap; @@ -37,16 +39,16 @@ export function getBrowserLocale() { const userLocaleDashed = getLocale(); const matchinglocales = Intl.DateTimeFormat.supportedLocalesOf(userLocaleDashed); + const mappingTo = matchinglocales?.[0] || 'en'; - if (matchinglocales.length) { - return matchinglocales[0]; + if (!mappedBrowserLocaleDisplayed) { + mappedBrowserLocaleDisplayed = true; + i18nLog(`userLocaleDashed: '${userLocaleDashed}', mapping to browser locale: ${mappingTo}`); } - return 'en'; + return mappingTo; } -let initialLocale: Locale | undefined; - export function setInitialLocale(locale: Locale) { initialLocale = locale; } diff --git a/ts/util/i18n/timeLocaleMap.ts b/ts/util/i18n/timeLocaleMap.ts index bcd0321fc..89b499248 100644 --- a/ts/util/i18n/timeLocaleMap.ts +++ b/ts/util/i18n/timeLocaleMap.ts @@ -1,5 +1,8 @@ import timeLocales from 'date-fns/locale'; +// Note: to find new mapping you can use: +// https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes + export const timeLocaleMap = { ar: timeLocales.ar, be: timeLocales.be, @@ -12,45 +15,38 @@ export const timeLocaleMap = { en: timeLocales.enUS, eo: timeLocales.eo, es: timeLocales.es, - /** TODO - Check this */ 'es-419': timeLocales.es, et: timeLocales.et, fa: timeLocales.faIR, fi: timeLocales.fi, - /** TODO - Check this */ fil: timeLocales.fi, fr: timeLocales.fr, he: timeLocales.he, hi: timeLocales.hi, hr: timeLocales.hr, hu: timeLocales.hu, - /** TODO - Check this */ 'hy-AM': timeLocales.hy, id: timeLocales.id, it: timeLocales.it, ja: timeLocales.ja, ka: timeLocales.ka, km: timeLocales.km, - /** TODO - Check this */ - kmr: timeLocales.km, + kmr: timeLocales.km, // central khmer, mapped to date-fns khmer: km kn: timeLocales.kn, ko: timeLocales.ko, lt: timeLocales.lt, lv: timeLocales.lv, mk: timeLocales.mk, - nb: timeLocales.nb, - nl: timeLocales.nl, - /** TODO - Find this this */ - no: timeLocales.enUS, - /** TODO - Find this this */ - pa: timeLocales.enUS, + nb: timeLocales.nb, // Norwegian Bokmål, mapped to date-fns "Norwegian Bokmål": nb + nl: timeLocales.nl, // dutch/flemish + no: timeLocales.nb, // norwegian, mapped to date-fns "Norwegian Bokmål": nb + pa: timeLocales.hi, // punjabi: not supported by date-fns, mapped to Hindi: hi pl: timeLocales.pl, 'pt-BR': timeLocales.ptBR, 'pt-PT': timeLocales.pt, ro: timeLocales.ro, ru: timeLocales.ru, - /** TODO - Find this this */ - si: timeLocales.enUS, + si: timeLocales.enUS, // sinhala, not suported by date-fns, mapped to english for now sk: timeLocales.sk, sl: timeLocales.sl, sq: timeLocales.sq, @@ -58,8 +54,7 @@ export const timeLocaleMap = { sv: timeLocales.sv, ta: timeLocales.ta, th: timeLocales.th, - /** TODO - Find this this */ - tl: timeLocales.enUS, + tl: timeLocales.enUS, // tagalog, not suported by date-fns, mapped to english for now tr: timeLocales.tr, uk: timeLocales.uk, uz: timeLocales.uz, diff --git a/yarn.lock b/yarn.lock index 6d35901cb..2dc1d4db0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -765,13 +765,6 @@ resolved "https://registry.yarnpkg.com/@types/filesize/-/filesize-3.6.0.tgz#5f1a25c7b4e3d5ee2bc63133d374d096b7008c8d" integrity sha512-rOWxCKMjt2DBuwddUnl5GOpf/jAkkqteB+XldncpVxVX+HPTmK2c5ACMOVEbp9gaH81IlhTdC3TwvRa5nopasw== -"@types/firstline@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/firstline/-/firstline-2.0.4.tgz#b8d3f8f7396d1589efea89db183c047a42efaf04" - integrity sha512-EYoMzk783ncj3soLGADXD/rklDMw1PAO5Hc3lRZa5G21vkfacwkdTlIdhTJ39omqDLezTSmxjDG1psd4A/mUHg== - dependencies: - "@types/node" "*" - "@types/fs-extra@5.0.5": version "5.0.5" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.5.tgz#080d90a792f3fa2c5559eb44bd8ef840aae9104b" @@ -2174,7 +2167,7 @@ chokidar@3.5.3: optionalDependencies: fsevents "~2.3.2" -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2: +"chokidar@>=3.0.0 <4.0.0": version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3696,11 +3689,6 @@ find-yarn-workspace-root@^2.0.0: dependencies: micromatch "^4.0.2" -firstline@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/firstline/-/firstline-1.2.1.tgz#b88673c42009f8821fac2926e99720acee924fae" - integrity sha512-6eMQNJtDzyXSC1yeCBWspqA6LeV5la2XHGTXQq4O0xkglAutpyny/sB+zVdXTZ9nzcDW9ZGLxwXXkB+ZEtJuPw== - flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -4260,11 +4248,6 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - ignore@^5.2.0, ignore@^5.2.4: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" @@ -5467,7 +5450,7 @@ mocha@10.0.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" -moment@^2.19.3, moment@^2.29.4: +moment@^2.19.3: version "2.30.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== @@ -5585,22 +5568,6 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== -nodemon@^3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.4.tgz#c34dcd8eb46a05723ccde60cbdd25addcc8725e4" - integrity sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -6151,11 +6118,6 @@ psl@^1.1.33: resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -6429,11 +6391,6 @@ read-config-file@6.2.0: json5 "^2.2.0" lazy-val "^1.0.4" -read-last-lines-ts@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/read-last-lines-ts/-/read-last-lines-ts-1.2.1.tgz#99e46288c5373c06e16e90e666a46b595dad80a1" - integrity sha512-1VcCrAU38DILYiF4sbNY13zdrMGwrFqjGQnXJy28G1zLJItvnWtgCbqoAJlnZZSiEICMKdM4Ol7LYvVMEoKrAg== - read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -6894,7 +6851,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4: +semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0, semver@^7.5.4: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -7008,13 +6965,6 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - sinon@9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.0.2.tgz#b9017e24633f4b1c98dfb6e784a5f0509f5fd85d" @@ -7329,7 +7279,7 @@ supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: dependencies: has-flag "^4.0.0" -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -7467,11 +7417,6 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== -touch@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" - integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== - tough-cookie@^4.1.2: version "4.1.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" @@ -7701,11 +7646,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - underscore@>=1.8.3, underscore@~1.13.2: version "1.13.6" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441"