diff --git a/.github/workflows/cd_pipeline.yaml b/.github/workflows/cd_pipeline.yaml index 009c825..304067f 100644 --- a/.github/workflows/cd_pipeline.yaml +++ b/.github/workflows/cd_pipeline.yaml @@ -23,9 +23,9 @@ jobs: $manifest.version = $package.version; $manifest | ConvertTo-Json -Depth 10 | Out-File "public/manifest.json" - $manifest = Get-Content "public/manifest.firefox.json" | ConvertFrom-Json; + $manifest = Get-Content "public/manifest.v2.json" | ConvertFrom-Json; $manifest.version = $package.version; - $manifest | ConvertTo-Json -Depth 10 | Out-File "public/manifest.firefox.json" + $manifest | ConvertTo-Json -Depth 10 | Out-File "public/manifest.v2.json" - name: Setup Node.js uses: actions/setup-node@v3 @@ -54,7 +54,7 @@ jobs: - name: Configure manifest uses: Amadevus/pwsh-script@v2 with: - script: Remove-Item "manifest.firefox.json" + script: Remove-Item "manifest.v2.json" - name: Pack extension uses: TheDoctor0/zip-release@0.6.2 @@ -90,7 +90,7 @@ jobs: with: script: | Remove-Item "manifest.json" - Rename-Item "manifest.firefox.json" "manifest.json" + Rename-Item "manifest.v2.json" "manifest.json" - name: Pack extension uses: TheDoctor0/zip-release@0.6.2 diff --git a/.github/workflows/pr_pipeline.yaml b/.github/workflows/pr_pipeline.yaml index 89b335a..3acd017 100644 --- a/.github/workflows/pr_pipeline.yaml +++ b/.github/workflows/pr_pipeline.yaml @@ -28,9 +28,9 @@ jobs: [PSCustomObject] $manifest = Get-Content "public/manifest.json" | ConvertFrom-Json; $manifest.version = $package.version; $manifest | ConvertTo-Json -Depth 10 | Out-File "public/manifest.json" - $manifest = Get-Content "public/manifest.firefox.json" | ConvertFrom-Json; + $manifest = Get-Content "public/manifest.v2.json" | ConvertFrom-Json; $manifest.version = $package.version; - $manifest | ConvertTo-Json -Depth 10 | Out-File "public/manifest.firefox.json" + $manifest | ConvertTo-Json -Depth 10 | Out-File "public/manifest.v2.json" - name: Setup Node.js uses: actions/setup-node@v3 @@ -61,8 +61,8 @@ jobs: with: script: | Remove-Item "manifest.json" - Rename-Item "manifest.firefox.json" "manifest.json" - + Rename-Item "manifest.v2.json" "manifest.json" + - name: "web-ext lint" uses: kewisch/action-web-ext@e0ea88d527a8a90bc10d600f80ac667d219e6bf1 with: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e0048c..1b94ae9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -112,7 +112,7 @@ This section represents how contributors should interact with codebase implement 7. Done #### Release -Next stage is release. Release performs on every push to main (which makes functional changes to the source code). Release performs manually by @XFox111 into: Chrome webstore, Edge webstore and GitHub releases +Next stage is release. Release performs on every push to main (which makes functional changes to the source code). Release performs manually by @XFox111 into: Chrome, Firefox, Edge webstores as well as GitHub releases ### Coding guidelines #### Indentation @@ -121,7 +121,8 @@ We use tabs, not spaces. #### Names The project naming rules inherit [.NET Naming Guidelines](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/naming-guidelines). Nevertheless there'is some distinction with the guidelines as well as additions to the one: - Use `camelCase` for variables instead of `CamelCase` stated in [Capitalization Conventions](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/capitalization-conventions#capitalization-rules-for-identifiers) -- Use `snake_case` for file names +- Use `camelCase` for files in `public` directory +- Use `PascalCase` for files in `src` directory #### Comments Leave as more comments as you can. Remember: the more detailed documentation your code has the less programmers will curse you in the future @@ -131,43 +132,48 @@ Use "double quotes" wherever it's possible #### Style - Prefer to use lambda functions -- Put curly braces on new lines +- Always put curly braces on new lines - Wrong: - ``` + ```js if (condition) { ... } ``` - Correct: - ``` + ```js if (condition) { ... } ``` -- Put spaces between operators and before braces in methods declarations, conditionals and loops + > **Note:** For JSON files put opening brace on the same line as the key +- Put spaces between operators, conditionals and loops - Wrong: - - `y=k*x+b` - - `function FunctionName()` + ```js + y=k*x+b; + if(condition) { ... } + ``` - Correct: - - `y = k * x + b` - - `function FunctionName ()` -- Use ternary conditionals wherever it's possible + ```js + y = k * x + b; + if (condition) { ... } + ``` +- Use ternary conditionals wherever it's possible, unless it's too long - Wrong: - ``` + ```js var s; if (condition) s = "Life"; else - s = "Death" + s = "Death"; ``` - Correct: - ``` + ```js var s = condition ? "Life" : "Death"; ``` - Do not surround loop and conditional bodies with curly braces if they can be avoided - Wrong: - ``` + ```js if (condition) { console.log("Hello, World!"); @@ -178,12 +184,84 @@ Use "double quotes" wherever it's possible } ``` - Correct - ``` + ```js if (condition) console.log("Hello, World!"); else return; ``` +- Prefer export modules as default + - Wrong: + ```js + export class MyClass { ... } + ``` + - Correct: + ```js + export default class MyClass { ... } + ``` +- Prefer export modules as classes unless it is excessive + - Wrong: + ```ts + export function MyFunction1() { ... } + export function MyFunction2() { ... } + export default class MyClass2() + { + public static GetDate(timestamp: number): Date + { + return new Date(timestamp); + } + } + ``` + - Correct: + ```js + export default class MyClass1 + { + public static MyFunction1() { ... } + public static MyFunction2() { ... } + } + export default GetDate(timestamp: number): Date + { + return new Date(timestamp); + } + ``` +- When JSX attributes take too much space, put each attribute on a new line and put additional line before component's content + - Wrong: + ```tsx + My content here + My content here + + My content here + + + My content here + + ``` + - Correct: + ```tsx + + + My content here + + ``` +- If JSX component doesn't have content, put space before closing tag + - Wrong: + ```tsx + + ``` + - Correct: + ```tsx + + ``` ### Finding an issue to work on Check out the [full issues list](https://github.com/XFox111/PasswordGeneratorExtension/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue) for a list of all potential areas for contributions. **Note** that just because an issue exists in the repository does not mean we will accept a contribution. There are several reasons we may not accept a pull request like: diff --git a/craco.config.ts b/craco.config.ts index 3106e32..84b7a74 100644 --- a/craco.config.ts +++ b/craco.config.ts @@ -1,35 +1,66 @@ +import { CracoConfig, CracoContext } from "@craco/craco"; +import HtmlWebapckPlugin, { MinifyOptions } from "html-webpack-plugin"; +import { Configuration } from "webpack"; + // Craco config file // Craco is used to separate content and background scripts from the main JS bundle - -export default +const cracoConfig: CracoConfig = { webpack: { - configure: (webpackConfig : any, { env, paths } : IEnvironment) => + configure: (webpackConfig: Configuration, { env, paths }: CracoContext): Configuration => { - return { + const isProduction: boolean = env === "production"; + + const config: Configuration = + { ...webpackConfig, entry: { - main: [ env === "development" && require.resolve("react-dev-utils/webpackHotDevClient"), paths.appIndexJs ].filter(Boolean), + main: paths.appIndexJs, background: "./src/Services/BackgroundService.ts", - contentScript: "./src/Services/ContentService.ts" + contentScript: "./src/Services/ContentService.ts", }, output: { ...webpackConfig.output, - filename: "static/js/[name].js", + filename: "static/js/[name].js" + }, + optimization: + { + ...webpackConfig.optimization, + splitChunks: { cacheGroups: { default: false } }, + runtimeChunk: false } - } + }; + + const minifyOptions: MinifyOptions = + { + removeComments: true, + collapseWhitespace: true, + removeRedundantAttributes: true, + useShortDoctype: true, + removeEmptyAttributes: true, + removeStyleLinkTypeAttributes: true, + keepClosingSlash: true, + minifyJS: true, + minifyCSS: true, + minifyURLs: true + }; + + config.plugins = config.plugins?.filter((plugin: any) => plugin.constructor.name !== "HtmlWebpackPlugin") ?? []; + + config.plugins.push(new HtmlWebapckPlugin({ + inject: true, + chunks: ["main"], + template: paths.appHtml, + filename: "index.html", + minify: isProduction && minifyOptions + })); + + return config; } } -} +}; -interface IEnvironment -{ - env: string; - paths: - { - [key: string]: string | string[] - }; -} +export default cracoConfig; diff --git a/package.json b/package.json index c09e5d7..68e3017 100644 --- a/package.json +++ b/package.json @@ -1,54 +1,48 @@ { "name": "password-generator", - "version": "2.0.1", + "version": "2.0.2", "private": true, - "dependencies": - { + "dependencies": { "@craco/craco": "^6.4.5", - "@fluentui/react-components": "^9.3.2", - "@fluentui/react-icons": "^2.0.183", + "@fluentui/react-components": "^9.5.1", + "@fluentui/react-icons": "^2.0.185", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.55.0", - "typescript": "^4.8.3" + "typescript": "^4.8.4", + "webextension-polyfill": "^0.10.0" }, - "devDependencies": - { + "devDependencies": { "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "@types/chrome": "^0.0.197", - "@types/jest": "^29.1.1", - "@types/node": "^18.7.18", + "@types/craco__craco": "^6.4.0", + "@types/jest": "^29.1.2", + "@types/node": "^18.11.0", "@types/react": "^18.0.21", "@types/react-dom": "^18.0.0", + "@types/webextension-polyfill": "^0.9.1", "react-scripts": "5.0.1" }, - "scripts": - { - "start": "react-scripts start", - "build": "INLINE_RUNTIME_CHUNK=false craco build", + "scripts": { + "start": "craco start", + "build": "craco build", "test": "react-scripts test", "eject": "react-scripts eject" }, - "eslintConfig": - { - "extends": - [ + "eslintConfig": { + "extends": [ "react-app", "react-app/jest" ] }, - "browserslist": - { - "production": - [ + "browserslist": { + "production": [ ">0.2%", "not dead", "not op_mini all" ], - "development": - [ + "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" diff --git a/public/_locales/en/messages.json b/public/_locales/en/messages.json index 6ca73bc..a67fc33 100644 --- a/public/_locales/en/messages.json +++ b/public/_locales/en/messages.json @@ -1,216 +1,173 @@ { - "name": - { + "name": { "message": "Password Generator", "description": "manifest.json" }, - "description": - { + "description": { "message": "Password generator extension allows you to easily generate long and secure password in one click", "description": "manifest.json" }, - "author": - { + "author": { "message": "Eugene Fox", "description": "manifest.json" }, - "Password_generator": - { + "Password_generator": { "message": "Password generator", "description": "App.tsx" }, - "Copy": - { + "Copy": { "message": "Copy", "description": "PasswordView.tsx" }, - "Generate_new": - { + "Generate_new": { "message": "Generate new", "description": "PasswordView.tsx" }, - "Exclude_special_symbols_one_time": - { + "Exclude_special_symbols_one_time": { "message": "Generate password without special symbols", "description": "PasswordView.tsx" }, - "Include_special_symbols_one_time": - { + "Include_special_symbols_one_time": { "message": "Generate password with special symbols", "description": "PasswordView.tsx" }, - "Settings": - { + "Settings": { "message": "Settings", "description": "SettingsSection.tsx" }, - "Password_length": - { + "Password_length": { "message": "Password length", "description": "SettingsSection.tsx" }, - "Recommended_password_length": - { + "Recommended_password_length": { "message": "Recommended password length", "description": "SettingsSection.tsx" }, - "Character_options": - { + "Character_options": { "message": "Character options", "description": "SettingsSection.tsx" }, - "Include": - { + "Include": { "message": "Include", "description": "SettingsSection.tsx" }, - "Special_symbols": - { + "Special_symbols": { "message": "Special symbols", "description": "SettingsSection.tsx" }, - "Numeric": - { + "Numeric": { "message": "Numeric", "description": "SettingsSection.tsx" }, - "Uppercase": - { + "Uppercase": { "message": "Uppercase", "description": "SettingsSection.tsx" }, - "Lowercase": - { + "Lowercase": { "message": "Lowercase", "description": "SettingsSection.tsx" }, - "Exclude": - { + "Exclude": { "message": "Exclude", "description": "SettingsSection.tsx" }, - "Similar": - { + "Similar": { "message": "Similar", "description": "SettingsSection.tsx" }, - "Ambiguous": - { + "Ambiguous": { "message": "Ambiguous", "description": "SettingsSection.tsx" }, - "Repeating": - { + "Repeating": { "message": "Repeating", "description": "SettingsSection.tsx" }, - "Add_shortcut_to_context_menu": - { + "Add_shortcut_to_context_menu": { "message": "Add shortcut to context menu", "description": "SettingsSection.tsx" }, - "Right_click_password_field_to_quickly_generate_password": - { + "Right_click_password_field_to_quickly_generate_password": { "message": "Right-click password field to quickly generate password", "description": "SettingsSection.tsx" }, - "Automatically_copy_to_clipboard": - { + "Automatically_copy_to_clipboard": { "message": "Automatically copy to clipboard", "description": "SettingsSection.tsx" }, - "About": - { + "About": { "message": "About", "description": "AboutSection.tsx" }, - "Developed_by_Eugene_Fox": - { + "Developed_by_Eugene_Fox": { "message": "Developed by Eugene Fox", "description": "AboutSection.tsx" }, - "Licensed_under": - { + "Licensed_under": { "message": "Licensed under", "description": "AboutSection.tsx" }, - "MIT_license": - { + "MIT_license": { "message": "MIT license", "description": "AboutSection.tsx" }, - "Want_to_contribute_translation_for_your_language_": - { + "Want_to_contribute_translation_for_your_language_": { "message": "Want to contribute translation for your language?", "description": "AboutSection.tsx" }, - "Read_this_to_get_started": - { + "Read_this_to_get_started": { "message": "Read this to get started", "description": "AboutSection.tsx" }, - "My_website": - { + "My_website": { "message": "My website", "description": "AboutSection.tsx" }, - "Source_code": - { + "Source_code": { "message": "Source code", "description": "AboutSection.tsx" }, - "Changelog": - { + "Changelog": { "message": "Changelog", "description": "AboutSection.tsx" }, - "Leave_feedback": - { + "Leave_feedback": { "message": "Leave feedback", "description": "AboutSection.tsx" }, - "Buy_me_a_coffee": - { + "Buy_me_a_coffee": { "message": "Buy me a coffee", "description": "AboutSection.tsx" }, - "Set_name": - { + "Set_name": { "message": "Name", "description": "CharacterHelpDialog.tsx" }, - "Characters": - { + "Characters": { "message": "Characters", "description": "CharacterHelpDialog.tsx" }, - "__etc_": - { + "__etc_": { "message": ", etc.", "description": "CharacterHelpDialog.tsx" }, - "OK": - { + "OK": { "message": "OK", "description": "CharacterHelpDialog.tsx" }, - "Either_lowercase_or_uppercase_characters_must_be_included": - { + "Either_lowercase_or_uppercase_characters_must_be_included": { "message": "Either lowercase or uppercase characters must be included", "description": "Generator.tsx" }, - "Selected_length_is_too_long_to_exclude_repeating_characters": - { + "Selected_length_is_too_long_to_exclude_repeating_characters": { "message": "Selected length is too long to exclude repeating characters", "description": "Generator.tsx" }, - "Quick_generator_is_only_available_on_password_fields": - { + "Quick_generator_is_only_available_on_password_fields": { "message": "Quick generator is only available on password fields", "description": "ContentService.tsx" }, - "Quick_generate_password": - { + "Quick_generate_password": { "message": "Quick generate password", "description": "BackgroundService.tsx" } diff --git a/public/_locales/pl/messages.json b/public/_locales/pl/messages.json index 1091a09..b892782 100644 --- a/public/_locales/pl/messages.json +++ b/public/_locales/pl/messages.json @@ -1,216 +1,173 @@ { - "name": - { + "name": { "message": "Generator haseł", "description": "manifest.json" }, - "description": - { + "description": { "message": "Rozszerzenie, które pozwala na łatwe generowanie trudnych i bezpiecznych haseł w jednym kliknięciu", "description": "manifest.json" }, - "author": - { + "author": { "message": "Jewgienij Lis", "description": "manifest.json" }, - "Password_generator": - { + "Password_generator": { "message": "Generator haseł", "description": "App.tsx" }, - "Copy": - { + "Copy": { "message": "Kopiuj", "description": "PasswordView.tsx" }, - "Generate_new": - { + "Generate_new": { "message": "Utwórz nowy", "description": "PasswordView.tsx" }, - "Exclude_special_symbols_one_time": - { + "Exclude_special_symbols_one_time": { "message": "Wygeneruj hasło bez znaków specjalnych", "description": "PasswordView.tsx" }, - "Include_special_symbols_one_time": - { + "Include_special_symbols_one_time": { "message": "Wygeneruj hasło z znakami specjalnymi", "description": "PasswordView.tsx" }, - "Settings": - { + "Settings": { "message": "Ustawienia", "description": "SettingsSection.tsx" }, - "Password_length": - { + "Password_length": { "message": "Długość hasła", "description": "SettingsSection.tsx" }, - "Recommended_password_length": - { + "Recommended_password_length": { "message": "Zalecana długość hasła", "description": "SettingsSection.tsx" }, - "Character_options": - { + "Character_options": { "message": "Ustawienia symboli", "description": "SettingsSection.tsx" }, - "Include": - { + "Include": { "message": "Włącz", "description": "SettingsSection.tsx" }, - "Special_symbols": - { + "Special_symbols": { "message": "Znaki specjalne", "description": "SettingsSection.tsx" }, - "Numeric": - { + "Numeric": { "message": "Liczby", "description": "SettingsSection.tsx" }, - "Uppercase": - { + "Uppercase": { "message": "Wielkie litery", "description": "SettingsSection.tsx" }, - "Lowercase": - { + "Lowercase": { "message": "Małe litery", "description": "SettingsSection.tsx" }, - "Exclude": - { + "Exclude": { "message": "Wyłącz", "description": "SettingsSection.tsx" }, - "Similar": - { + "Similar": { "message": "Podobne", "description": "SettingsSection.tsx" }, - "Ambiguous": - { + "Ambiguous": { "message": "Niebezpieczne", "description": "SettingsSection.tsx" }, - "Repeating": - { + "Repeating": { "message": "Powtarzające się", "description": "SettingsSection.tsx" }, - "Add_shortcut_to_context_menu": - { + "Add_shortcut_to_context_menu": { "message": "Dodaj rozszerzenie do menu kontekstowego", "description": "SettingsSection.tsx" }, - "Right_click_password_field_to_quickly_generate_password": - { + "Right_click_password_field_to_quickly_generate_password": { "message": "Kliknij prawym przyciskiem myszy w pole hasła, aby szybko wygenerować hasło", "description": "SettingsSection.tsx" }, - "Automatically_copy_to_clipboard": - { + "Automatically_copy_to_clipboard": { "message": "Automatycznie kopiuj do schowka", "description": "SettingsSection.tsx" }, - "About": - { + "About": { "message": "O rozszerzeniu", "description": "AboutSection.tsx" }, - "Developed_by_Eugene_Fox": - { + "Developed_by_Eugene_Fox": { "message": "Autor: Jewgienij Lis", "description": "AboutSection.tsx" }, - "Licensed_under": - { + "Licensed_under": { "message": "Licencja", "description": "AboutSection.tsx" }, - "MIT_license": - { + "MIT_license": { "message": "MIT", "description": "AboutSection.tsx" }, - "Want_to_contribute_translation_for_your_language_": - { + "Want_to_contribute_translation_for_your_language_": { "message": "Chcesz pomóc z tłumaczeniem na swój język?", "description": "AboutSection.tsx" }, - "Read_this_to_get_started": - { + "Read_this_to_get_started": { "message": "Przeczytaj ten artykuł", "description": "AboutSection.tsx" }, - "My_website": - { + "My_website": { "message": "Moja strona internetowa", "description": "AboutSection.tsx" }, - "Source_code": - { + "Source_code": { "message": "Kod źródłowy", "description": "AboutSection.tsx" }, - "Changelog": - { + "Changelog": { "message": "Lista zmian", "description": "AboutSection.tsx" }, - "Leave_feedback": - { + "Leave_feedback": { "message": "Zostaw opinię", "description": "AboutSection.tsx" }, - "Buy_me_a_coffee": - { + "Buy_me_a_coffee": { "message": "Wesprzyj", "description": "AboutSection.tsx" }, - "Set_name": - { + "Set_name": { "message": "Nazwa", "description": "CharacterHelpDialog.tsx" }, - "Characters": - { + "Characters": { "message": "Znaki", "description": "CharacterHelpDialog.tsx" }, - "__etc_": - { + "__etc_": { "message": " itp.", "description": "CharacterHelpDialog.tsx" }, - "OK": - { + "OK": { "message": "OK", "description": "CharacterHelpDialog.tsx" }, - "Either_lowercase_or_uppercase_characters_must_be_included": - { + "Either_lowercase_or_uppercase_characters_must_be_included": { "message": "Muszą być uwzględnione małe lub wielkie litery", "description": "Generator.tsx" }, - "Selected_length_is_too_long_to_exclude_repeating_characters": - { + "Selected_length_is_too_long_to_exclude_repeating_characters": { "message": "Wybrana długość jest zbyt długa, aby wykluczyć powtarzające się znaki", "description": "Generator.tsx" }, - "Quick_generator_is_only_available_on_password_fields": - { + "Quick_generator_is_only_available_on_password_fields": { "message": "Szybki generator jest dostępny tylko dla pól hasła", "description": "ContentService.tsx" }, - "Quick_generate_password": - { + "Quick_generate_password": { "message": "Wygeneruj hasło", "description": "BackgroundService.tsx" } diff --git a/public/_locales/ru/messages.json b/public/_locales/ru/messages.json index fea3ef8..2170e3c 100644 --- a/public/_locales/ru/messages.json +++ b/public/_locales/ru/messages.json @@ -1,216 +1,173 @@ { - "name": - { + "name": { "message": "Генератор паролей", "description": "manifest.json" }, - "description": - { + "description": { "message": "Расширение, позволяющее легко генерировать сложные и надежные пароли в один клик", "description": "manifest.json" }, - "author": - { + "author": { "message": "Евгений Лис", "description": "manifest.json" }, - "Password_generator": - { + "Password_generator": { "message": "Генератор паролей", "description": "App.tsx" }, - "Copy": - { + "Copy": { "message": "Копировать", "description": "PasswordView.tsx" }, - "Generate_new": - { + "Generate_new": { "message": "Создать новый", "description": "PasswordView.tsx" }, - "Exclude_special_symbols_one_time": - { + "Exclude_special_symbols_one_time": { "message": "Сгенерировать пароль без спецсимволов", "description": "PasswordView.tsx" }, - "Include_special_symbols_one_time": - { + "Include_special_symbols_one_time": { "message": "Сгенерировать пароль со спецсимволами", "description": "PasswordView.tsx" }, - "Settings": - { + "Settings": { "message": "Настройки", "description": "SettingsSection.tsx" }, - "Password_length": - { + "Password_length": { "message": "Длина пароля", "description": "SettingsSection.tsx" }, - "Recommended_password_length": - { + "Recommended_password_length": { "message": "Рекомендуемая длина пароля", "description": "SettingsSection.tsx" }, - "Character_options": - { + "Character_options": { "message": "Настройки символов", "description": "SettingsSection.tsx" }, - "Include": - { + "Include": { "message": "Включить", "description": "SettingsSection.tsx" }, - "Special_symbols": - { + "Special_symbols": { "message": "Специальные символы", "description": "SettingsSection.tsx" }, - "Numeric": - { + "Numeric": { "message": "Цифры", "description": "SettingsSection.tsx" }, - "Uppercase": - { + "Uppercase": { "message": "Прописные буквы", "description": "SettingsSection.tsx" }, - "Lowercase": - { + "Lowercase": { "message": "Строчные буквы", "description": "SettingsSection.tsx" }, - "Exclude": - { + "Exclude": { "message": "Исключить", "description": "SettingsSection.tsx" }, - "Similar": - { + "Similar": { "message": "Похожие", "description": "SettingsSection.tsx" }, - "Ambiguous": - { + "Ambiguous": { "message": "Особые", "description": "SettingsSection.tsx" }, - "Repeating": - { + "Repeating": { "message": "Повторяющиеся", "description": "SettingsSection.tsx" }, - "Add_shortcut_to_context_menu": - { + "Add_shortcut_to_context_menu": { "message": "Добавить расширение в контекстное меню", "description": "SettingsSection.tsx" }, - "Right_click_password_field_to_quickly_generate_password": - { + "Right_click_password_field_to_quickly_generate_password": { "message": "Щелкните правой кнопкой мыши по полю ввода пароля, чтобы быстро сгенерировать пароль", "description": "SettingsSection.tsx" }, - "Automatically_copy_to_clipboard": - { + "Automatically_copy_to_clipboard": { "message": "Автоматически копировать в буфер обмена", "description": "SettingsSection.tsx" }, - "About": - { + "About": { "message": "О расширении", "description": "AboutSection.tsx" }, - "Developed_by_Eugene_Fox": - { + "Developed_by_Eugene_Fox": { "message": "Разработчик Евгений Лис", "description": "AboutSection.tsx" }, - "Licensed_under": - { + "Licensed_under": { "message": "Лицензия", "description": "AboutSection.tsx" }, - "MIT_license": - { + "MIT_license": { "message": "MIT", "description": "AboutSection.tsx" }, - "Want_to_contribute_translation_for_your_language_": - { + "Want_to_contribute_translation_for_your_language_": { "message": "Хотите помочь с переводом на свой язык?", "description": "AboutSection.tsx" }, - "Read_this_to_get_started": - { + "Read_this_to_get_started": { "message": "Прочтите эту статью", "description": "AboutSection.tsx" }, - "My_website": - { + "My_website": { "message": "Мой сайт", "description": "AboutSection.tsx" }, - "Source_code": - { + "Source_code": { "message": "Исходный код", "description": "AboutSection.tsx" }, - "Changelog": - { + "Changelog": { "message": "Список изменений", "description": "AboutSection.tsx" }, - "Leave_feedback": - { + "Leave_feedback": { "message": "Оставить отзыв", "description": "AboutSection.tsx" }, - "Buy_me_a_coffee": - { + "Buy_me_a_coffee": { "message": "Спонсировать", "description": "AboutSection.tsx" }, - "Set_name": - { + "Set_name": { "message": "Название", "description": "CharacterHelpDialog.tsx" }, - "Characters": - { + "Characters": { "message": "Символы", "description": "CharacterHelpDialog.tsx" }, - "__etc_": - { + "__etc_": { "message": " и т.д.", "description": "CharacterHelpDialog.tsx" }, - "OK": - { + "OK": { "message": "ОК", "description": "CharacterHelpDialog.tsx" }, - "Either_lowercase_or_uppercase_characters_must_be_included": - { + "Either_lowercase_or_uppercase_characters_must_be_included": { "message": "Должны быть включены строчные или прописные буквы", "description": "Generator.tsx" }, - "Selected_length_is_too_long_to_exclude_repeating_characters": - { + "Selected_length_is_too_long_to_exclude_repeating_characters": { "message": "Выбранная длина слишком велика для исключения повторяющихся символов", "description": "Generator.tsx" }, - "Quick_generator_is_only_available_on_password_fields": - { + "Quick_generator_is_only_available_on_password_fields": { "message": "Быстрый генератор доступен только для полей ввода пароля", "description": "ContentService.tsx" }, - "Quick_generate_password": - { + "Quick_generate_password": { "message": "Сгенерировать пароль", "description": "BackgroundService.tsx" } diff --git a/public/_locales/uk/messages.json b/public/_locales/uk/messages.json index 353bd6e..d5993d1 100644 --- a/public/_locales/uk/messages.json +++ b/public/_locales/uk/messages.json @@ -1,216 +1,173 @@ { - "name": - { + "name": { "message": "Генератор паролів", "description": "manifest.json" }, - "description": - { + "description": { "message": "Розширення, яке дозволяє легко генерувати складні та надійні паролі в один клік", "description": "manifest.json" }, - "author": - { + "author": { "message": "Євген Лис", "description": "manifest.json" }, - "Password_generator": - { + "Password_generator": { "message": "Генератор паролів", "description": "App.tsx" }, - "Copy": - { + "Copy": { "message": "Копіювати", "description": "PasswordView.tsx" }, - "Generate_new": - { + "Generate_new": { "message": "Генерувати новий", "description": "PasswordView.tsx" }, - "Exclude_special_symbols_one_time": - { + "Exclude_special_symbols_one_time": { "message": "Генерувати пароль без спеціальних символів", "description": "PasswordView.tsx" }, - "Include_special_symbols_one_time": - { + "Include_special_symbols_one_time": { "message": "Генерувати пароль з спеціальними символами", "description": "PasswordView.tsx" }, - "Settings": - { + "Settings": { "message": "Налаштування", "description": "SettingsSection.tsx" }, - "Password_length": - { + "Password_length": { "message": "Довжина паролю", "description": "SettingsSection.tsx" }, - "Recommended_password_length": - { + "Recommended_password_length": { "message": "Рекомендована довжина паролю", "description": "SettingsSection.tsx" }, - "Character_options": - { + "Character_options": { "message": "Параметри символів", "description": "SettingsSection.tsx" }, - "Include": - { + "Include": { "message": "Включити", "description": "SettingsSection.tsx" }, - "Special_symbols": - { + "Special_symbols": { "message": "Спеціальні символи", "description": "SettingsSection.tsx" }, - "Numeric": - { + "Numeric": { "message": "Цифри", "description": "SettingsSection.tsx" }, - "Uppercase": - { + "Uppercase": { "message": "Великі літери", "description": "SettingsSection.tsx" }, - "Lowercase": - { + "Lowercase": { "message": "Малі літери", "description": "SettingsSection.tsx" }, - "Exclude": - { + "Exclude": { "message": "Виключити", "description": "SettingsSection.tsx" }, - "Similar": - { + "Similar": { "message": "Схожі", "description": "SettingsSection.tsx" }, - "Ambiguous": - { + "Ambiguous": { "message": "Особливі", "description": "SettingsSection.tsx" }, - "Repeating": - { + "Repeating": { "message": "Повторювані", "description": "SettingsSection.tsx" }, - "Add_shortcut_to_context_menu": - { + "Add_shortcut_to_context_menu": { "message": "Додати розширення до контекстного меню", "description": "SettingsSection.tsx" }, - "Right_click_password_field_to_quickly_generate_password": - { + "Right_click_password_field_to_quickly_generate_password": { "message": "Правий клік на поле вводу паролю для швидкого генерування паролю", "description": "SettingsSection.tsx" }, - "Automatically_copy_to_clipboard": - { + "Automatically_copy_to_clipboard": { "message": "Автоматично копіювати в буфер обміну", "description": "SettingsSection.tsx" }, - "About": - { + "About": { "message": "Про розширення", "description": "AboutSection.tsx" }, - "Developed_by_Eugene_Fox": - { + "Developed_by_Eugene_Fox": { "message": "Розроблено Євгеном Лисом", "description": "AboutSection.tsx" }, - "Licensed_under": - { + "Licensed_under": { "message": "Ліцензовано під", "description": "AboutSection.tsx" }, - "MIT_license": - { + "MIT_license": { "message": "MIT", "description": "AboutSection.tsx" }, - "Want_to_contribute_translation_for_your_language_": - { + "Want_to_contribute_translation_for_your_language_": { "message": "Хочете допомогти перекласти розширення на свою мову?", "description": "AboutSection.tsx" }, - "Read_this_to_get_started": - { + "Read_this_to_get_started": { "message": "Прочитайте цю статтю", "description": "AboutSection.tsx" }, - "My_website": - { + "My_website": { "message": "Моя веб-сторінка", "description": "AboutSection.tsx" }, - "Source_code": - { + "Source_code": { "message": "Вихідний код", "description": "AboutSection.tsx" }, - "Changelog": - { + "Changelog": { "message": "Список змін", "description": "AboutSection.tsx" }, - "Leave_feedback": - { + "Leave_feedback": { "message": "Залишити відгук", "description": "AboutSection.tsx" }, - "Buy_me_a_coffee": - { + "Buy_me_a_coffee": { "message": "Підтримати", "description": "AboutSection.tsx" }, - "Set_name": - { + "Set_name": { "message": "Назва", "description": "CharacterHelpDialog.tsx" }, - "Characters": - { + "Characters": { "message": "Символи", "description": "CharacterHelpDialog.tsx" }, - "__etc_": - { + "__etc_": { "message": " і т.д.", "description": "CharacterHelpDialog.tsx" }, - "OK": - { + "OK": { "message": "OK", "description": "CharacterHelpDialog.tsx" }, - "Either_lowercase_or_uppercase_characters_must_be_included": - { + "Either_lowercase_or_uppercase_characters_must_be_included": { "message": "Повинні бути включені малі або великі літери", "description": "Generator.tsx" }, - "Selected_length_is_too_long_to_exclude_repeating_characters": - { + "Selected_length_is_too_long_to_exclude_repeating_characters": { "message": "Вибрана довжина занадто велика для виключення повторюваних символів", "description": "Generator.tsx" }, - "Quick_generator_is_only_available_on_password_fields": - { + "Quick_generator_is_only_available_on_password_fields": { "message": "Швидкий генератор доступний тільки для полів вводу паролів", "description": "ContentService.tsx" }, - "Quick_generate_password": - { + "Quick_generate_password": { "message": "Згенерувати пароль", "description": "BackgroundService.tsx" } diff --git a/public/index.html b/public/index.html index 404eb2e..810899c 100644 --- a/public/index.html +++ b/public/index.html @@ -2,9 +2,12 @@ - Password Generator - + Password Generator + diff --git a/public/manifest.json b/public/manifest.json index 3c9f0ab..d1242be 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,56 +1,39 @@ { - "$schema": "https://json.schemastore.org/chrome-manifest.json", "manifest_version": 3, - "name": "__MSG_name__", "description": "__MSG_description__", "author": "__MSG_author__", - "version": "2.0.0", "default_locale": "en", - - "permissions": - [ + "permissions": [ "storage", "contextMenus", "clipboardWrite" ], - - "background": - { + "background": { "service_worker": "./static/js/background.js", "type": "module" }, - "content_scripts": - [ + "content_scripts": [ { - "matches": [ "" ], - "js": [ "./static/js/contentScript.js" ], + "matches": [ + "" + ], + "js": [ + "./static/js/contentScript.js" + ], "run_at": "document_idle", "all_frames": true } ], - - "action": - { + "action": { "default_popup": "index.html", "default_title": "__MSG_name__" }, - - "icons": - { + "icons": { "128": "icons/icon-128.png", "48": "icons/icon-48.png", "32": "icons/icon-32.png", "16": "icons/icon-16.png" - }, - - "browser_specific_settings": - { - "gecko": - { - "id": "passwordgenerator@xfox111.net", - "strict_min_version": "58.0" - } } } diff --git a/public/manifest.firefox.json b/public/manifest.v2.json similarity index 63% rename from public/manifest.firefox.json rename to public/manifest.v2.json index 313108a..db95634 100644 --- a/public/manifest.firefox.json +++ b/public/manifest.v2.json @@ -1,54 +1,45 @@ { - "$schema": "https://json.schemastore.org/chrome-manifest.json", "manifest_version": 2, - "name": "__MSG_name__", "description": "__MSG_description__", "author": "__MSG_author__", - "version": "2.0.0", "default_locale": "en", - - "permissions": - [ + "permissions": [ "storage", "contextMenus", "clipboardWrite" ], - - "background": - { - "scripts": [ "./static/js/background.js" ], + "background": { + "scripts": [ + "./static/js/background.js" + ], "persistent": true }, - "content_scripts": - [ + "content_scripts": [ { - "matches": [ "" ], - "js": [ "./static/js/contentScript.js" ], + "matches": [ + "" + ], + "js": [ + "./static/js/contentScript.js" + ], "run_at": "document_idle", "all_frames": true } ], - - "browser_action": - { + "browser_action": { "default_popup": "index.html", "default_title": "__MSG_name__" }, - - "icons": - { + "icons": { "128": "icons/icon-128.png", "48": "icons/icon-48.png", "32": "icons/icon-32.png", "16": "icons/icon-16.png" }, - - "browser_specific_settings": - { - "gecko": - { + "browser_specific_settings": { + "gecko": { "id": "passwordgenerator@xfox111.net", "strict_min_version": "58.0" } diff --git a/src/App.scss b/src/App.scss index 0a56406..4c10a7a 100644 --- a/src/App.scss +++ b/src/App.scss @@ -49,6 +49,7 @@ main animation-timing-function: var(--curveEasyEaseMax); animation-duration: .5s; } + @keyframes scaleUpInAnim { from @@ -56,6 +57,7 @@ main transform: scale(.5); opacity: 0; } + to { transform: scale(1); @@ -69,12 +71,14 @@ main animation-timing-function: var(--curveEasyEaseMax); animation-duration: .5s; } + @keyframes spinAnim { from { transform: rotate(0deg); } + to { transform: rotate(360deg); @@ -87,12 +91,14 @@ main animation-timing-function: var(--curveDecelerateMin); animation-duration: .5s; } + @keyframes fadeInAnim { from { opacity: 0; } + to { opacity: 1; diff --git a/src/Assets/BuyMeACoffee.svg b/src/Assets/BuyMeACoffee.svg index 126a7f4..5f5c7c8 100644 --- a/src/Assets/BuyMeACoffee.svg +++ b/src/Assets/BuyMeACoffee.svg @@ -1,5 +1,4 @@ -
+ + - - - - - ); diff --git a/src/Components/PasswordView.tsx b/src/Components/PasswordView.tsx index f977251..c075a43 100644 --- a/src/Components/PasswordView.tsx +++ b/src/Components/PasswordView.tsx @@ -33,7 +33,7 @@ export default class PasswordView extends React.Component }; } - private OnCopyPassword(password : string): void + private OnCopyPassword(password: string): void { console.log("PasswordView.OnCopyPassword"); @@ -50,7 +50,7 @@ export default class PasswordView extends React.Component { console.log("PasswordView.OnRefreshPassword"); - let password : string = Generator.GeneratePassword(this.props.generatorOptions); + let password: string = Generator.GeneratePassword(this.props.generatorOptions); this.setState({ password }); @@ -69,7 +69,7 @@ export default class PasswordView extends React.Component if (JSON.stringify(prevProps.generatorOptions) === JSON.stringify(this.props.generatorOptions)) return; - let error : string = Generator.ValidateProps(this.props.generatorOptions); + let error: string = Generator.ValidateProps(this.props.generatorOptions); let password = Generator.GeneratePassword(this.props.generatorOptions); this.setState({ password, error }); @@ -78,14 +78,14 @@ export default class PasswordView extends React.Component this.OnCopyPassword(password); } - private AlterSpecialsOnce(useSpecials : boolean) : void + private AlterSpecialsOnce(useSpecials: boolean): void { console.log("PasswordView.AlterSpecialsOnce", `useSpecials: ${useSpecials}`); - let options : GeneratorOptions = { ...this.props.generatorOptions, Special: useSpecials, ExcludeAmbiguous: true }; + let options: GeneratorOptions = { ...this.props.generatorOptions, Special: useSpecials, ExcludeAmbiguous: true }; - let error : string = Generator.ValidateProps(options); - let password : string = Generator.GeneratePassword(options); + let error: string = Generator.ValidateProps(options); + let password: string = Generator.GeneratePassword(options); this.setState({ password, error }); diff --git a/src/Components/SettingsSection.tsx b/src/Components/SettingsSection.tsx index fb7649c..b1afdd8 100644 --- a/src/Components/SettingsSection.tsx +++ b/src/Components/SettingsSection.tsx @@ -16,8 +16,8 @@ export default class SettingsSection extends React.Component { public render(): JSX.Element { - let options : GeneratorOptions = this.props.generatorOptions; - let settings : Settings = this.props.settings; + let options: GeneratorOptions = this.props.generatorOptions; + let settings: Settings = this.props.settings; return ( @@ -28,9 +28,9 @@ export default class SettingsSection extends React.Component
GeneratorOptions.Update({ Length: parseInt(e.value) }) } - type="number" min={ 4 } /> + type="number" min={ 4 } minLength={ 1 } /> { loc("Recommended password length") } 16-32
@@ -66,7 +66,7 @@ export default class SettingsSection extends React.Component
- {loc("Add shortcut to context menu")} } + { loc("Add shortcut to context menu") } } checked={ settings.AddContext } onChange={ (_, e) => Settings.Update({ AddContext: e.checked as boolean }) } />
diff --git a/src/Services/BackgroundService.ts b/src/Services/BackgroundService.ts index 3e246dc..819fcad 100644 --- a/src/Services/BackgroundService.ts +++ b/src/Services/BackgroundService.ts @@ -1,51 +1,55 @@ // BackgroundService.ts // Background script that handles the context menu visibility +import { Tabs, Menus } from "webextension-polyfill"; +import browser from "../Utils/Browser"; import { loc } from "../Utils/Localization"; -function UpdateContextMenu(isEnabled: boolean) : void +function UpdateContextMenu(isEnabled: boolean): void { console.log("BackgroundService.UpdateContextMenu", isEnabled); - chrome.contextMenus.update("generatePassword", { visible: isEnabled }); + browser.contextMenus.update("generatePassword", { visible: isEnabled }); } -async function OnContextClick(info : chrome.contextMenus.OnClickData) : Promise +async function OnContextClick(info: Menus.OnClickData): Promise { console.log("BackgroundService.OnContextClick", info); - - let tabInfo : chrome.tabs.Tab[] = await chrome.tabs.query({ active: true, currentWindow: true }); - + let tabInfo: Tabs.Tab[] = await browser.tabs.query({ active: true, currentWindow: true }); console.log("BackgroundService.OnContextClick", tabInfo); - chrome.tabs.sendMessage(tabInfo[0].id, info.menuItemId as string); + browser.tabs.sendMessage(tabInfo[0].id, info.menuItemId as string); } -if (!chrome.runtime.onInstalled.hasListeners()) - chrome.runtime.onInstalled.addListener(async () => - { - console.log("[BackgroundService] chrome.runtime.onInstalled"); - chrome.contextMenus.removeAll(); +async function OnInstalled(): Promise +{ + console.log("[BackgroundService] browser.runtime.onInstalled"); + browser.contextMenus.removeAll(); - chrome.contextMenus.create( - { - title: loc("Quick generate password"), - contexts: [ "editable" ], - id: "generatePassword" - } - ); - - let settings : { [key : string]: any } = await chrome.storage.sync.get({ AddContext: true }); - - UpdateContextMenu(settings.AddContext); - }); - -if (!chrome.contextMenus.onClicked.hasListeners()) - chrome.contextMenus.onClicked.addListener(OnContextClick); - -if (!chrome.storage.sync.onChanged.hasListeners()) - chrome.storage.sync.onChanged.addListener(changes => + browser.contextMenus.create( { - console.log("[BackgroundService] chrome.storage.sync.onChanged", changes); - if (changes.AddContext?.newValue !== undefined) - UpdateContextMenu(changes.AddContext.newValue); - }); + title: loc("Quick generate password"), + contexts: ["editable"], + id: "generatePassword" + } + ); + + let settings: { [key: string]: any; } = await browser.storage.sync.get({ AddContext: true }); + + UpdateContextMenu(settings.AddContext); +} + +async function OnStorageChanged(changes: any): Promise +{ + console.log("[BackgroundService] browser.storage.sync.onChanged", changes); + if (changes.AddContext?.newValue !== undefined) + UpdateContextMenu(changes.AddContext.newValue); +} + +if (!browser.runtime.onInstalled.hasListener(OnInstalled)) + browser.runtime.onInstalled.addListener(OnInstalled); + +if (!browser.contextMenus.onClicked.hasListener(OnContextClick)) + browser.contextMenus.onClicked.addListener(OnContextClick); + +if (!browser.storage.sync.onChanged.hasListener(OnStorageChanged)) + browser.storage.sync.onChanged.addListener(OnStorageChanged); diff --git a/src/Services/ContentService.ts b/src/Services/ContentService.ts index 535144c..aeb3840 100644 --- a/src/Services/ContentService.ts +++ b/src/Services/ContentService.ts @@ -1,37 +1,40 @@ // ContentService.ts // Content script that handles quick password generation through context menu +import browser from "../Utils/Browser"; import Generator from "../Utils/Generator"; import GeneratorOptions from "../Utils/GeneratorOptions"; import { loc } from "../Utils/Localization"; -if (!chrome.runtime.onMessage.hasListeners()) - chrome.runtime.onMessage.addListener(async message => +async function OnMessage(message: any): Promise +{ + console.log("[ContentService] browser.runtime.onMessage", message); + + if (message === "generatePassword") { - console.log("[ContentService] chrome.runtime.onMessage", message); + let generatorOptions: GeneratorOptions = await GeneratorOptions.Init(); + let password: string = Generator.GeneratePassword(generatorOptions); - if (message === "generatePassword") + let input: HTMLInputElement = document.activeElement as HTMLInputElement; + + if (!["INPUT", "TEXTAREA"].includes(input.tagName)) + return; + + console.log("[ContentService] browser.runtime.onMessage", input); + + if (input.tagName !== "INPUT" || input.readOnly || !["text", "password"].includes(input.type)) { - let generatorOptions : GeneratorOptions = await GeneratorOptions.Init(); - let password : string = Generator.GeneratePassword(generatorOptions); - - let input : HTMLInputElement = document.activeElement as HTMLInputElement; - - if (![ "INPUT", "TEXTAREA" ].includes(input.tagName)) - return; - - console.log("[ContentService] chrome.runtime.onMessage", input); - - if (input.tagName !== "INPUT" || input.readOnly || ![ "text", "password" ].includes(input.type)) - { - window.alert(loc("Quick generator is only available on password fields")); - return; - } - - input.focus(); - input.value = password; - window.navigator.clipboard.writeText(password); + window.alert(loc("Quick generator is only available on password fields")); + return; } - }); + + input.focus(); + input.value = password; + window.navigator.clipboard.writeText(password); + } +} + +if (!browser.runtime.onMessage.hasListener(OnMessage)) + browser.runtime.onMessage.addListener(OnMessage); console.log("[ContentService] Loaded"); diff --git a/src/Utils/Browser.ts b/src/Utils/Browser.ts new file mode 100644 index 0000000..8eb9d97 --- /dev/null +++ b/src/Utils/Browser.ts @@ -0,0 +1,4 @@ +import Browser from "webextension-polyfill"; + +const browser: typeof Browser = (process.env.NODE_ENV !== "development") ? require("webextension-polyfill") : null; +export default browser; diff --git a/src/Utils/Generator.ts b/src/Utils/Generator.ts index cad5f7b..044d5bd 100644 --- a/src/Utils/Generator.ts +++ b/src/Utils/Generator.ts @@ -10,21 +10,24 @@ export default class Generator public static AmbiguousCharacters = "{}[]()/\\'\"`~,;:.<>"; public static SimilarCharacters = "il1Lo0O"; - public static GeneratePassword(props : GeneratorOptions) : string + public static GeneratePassword(props: GeneratorOptions): string { + if (!props.Length || isNaN(props.Length) || props.Length < 4) + props.Length = 4; + // Validating parameters if (this.ValidateProps(props)) return ""; // Generating password - let availableCharacters : string = this.GetAvailableCharacters(props); - let requiredCharacters : string = this.GetRequiredCharacters(props); + let availableCharacters: string = this.GetAvailableCharacters(props); + let requiredCharacters: string = this.GetRequiredCharacters(props); - let password : string = ""; + let password: string = ""; for (let i = 0; i < props.Length; i++) { - let char : string = this.PickRandomFromArray(availableCharacters); + let char: string = this.PickRandomFromArray(availableCharacters); if (props.ExcludeRepeating && password.includes(char)) i--; @@ -43,12 +46,15 @@ export default class Generator return password; } - public static ValidateProps(props : GeneratorOptions): string + public static ValidateProps(props: GeneratorOptions): string { + if (!props.Length || isNaN(props.Length) || props.Length < 4) + props.Length = 4; + if (!props.Lowercase && !props.Uppercase) return loc("Either lowercase or uppercase characters must be included"); - let availableCharacters : string = this.GetAvailableCharacters(props); + let availableCharacters: string = this.GetAvailableCharacters(props); if (props.ExcludeRepeating && availableCharacters.length < props.Length) return loc("Selected length is too long to exclude repeating characters"); @@ -56,9 +62,9 @@ export default class Generator return ""; } - private static GetAvailableCharacters(props : GeneratorOptions) : string + private static GetAvailableCharacters(props: GeneratorOptions): string { - let availableCharacters : string = ""; + let availableCharacters: string = ""; if (props.Special) availableCharacters += this.SpecialCharacters; @@ -77,9 +83,9 @@ export default class Generator return availableCharacters; } - private static GetRequiredCharacters(props : GeneratorOptions) : string + private static GetRequiredCharacters(props: GeneratorOptions): string { - let requiredCharacters : string = ""; + let requiredCharacters: string = ""; if (props.Special) requiredCharacters += this.PickRandomFromArray(this.SpecialCharacters); @@ -100,12 +106,12 @@ export default class Generator // See https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Math/random // min is inclusive, max is exclusive - private static GetRandomInt(min : number, max : number) : number + private static GetRandomInt(min: number, max: number): number { return Math.floor(Math.random() * (max - min)) + min; } - private static PickRandomFromArray(array : string) : string + private static PickRandomFromArray(array: string): string { return array[this.GetRandomInt(0, array.length)]; } diff --git a/src/Utils/GeneratorOptions.ts b/src/Utils/GeneratorOptions.ts index 5cc5f59..0da37f8 100644 --- a/src/Utils/GeneratorOptions.ts +++ b/src/Utils/GeneratorOptions.ts @@ -1,3 +1,6 @@ +import { Storage } from "webextension-polyfill"; +import browser from "../Utils/Browser"; + export default class GeneratorOptions { public Length: number = 16; @@ -11,34 +14,34 @@ export default class GeneratorOptions public ExcludeAmbiguous: boolean = true; public ExcludeRepeating: boolean = false; - public static OnChanged : (changes : Partial) => void; + public static OnChanged: (changes: Partial) => void; - public static async Init() : Promise + public static async Init(): Promise { - let fallbackOptions : GeneratorOptions = new GeneratorOptions(); + let fallbackOptions: GeneratorOptions = new GeneratorOptions(); - if (!chrome?.storage?.sync) // Extension is running as a standalone app + if (!browser?.storage?.sync) // Extension is running as a standalone app return fallbackOptions; - let props : { [key: string]: any } = await chrome.storage.sync.get(fallbackOptions); + let props: { [key: string]: any; } = await browser.storage.sync.get(fallbackOptions); - chrome.storage.sync.onChanged.addListener(GeneratorOptions.OnStorageChanged); + browser.storage.sync.onChanged.addListener(GeneratorOptions.OnStorageChanged); return props as GeneratorOptions; } - public static async Update(changes : Partial) : Promise + public static async Update(changes: Partial): Promise { - if (chrome?.storage?.sync) - await chrome?.storage?.sync?.set(changes); + if (browser?.storage?.sync) + await browser?.storage?.sync?.set(changes); else GeneratorOptions.OnChanged(changes); } - private static OnStorageChanged(changes : { [key: string]: chrome.storage.StorageChange }) : void + private static OnStorageChanged(changes: { [key: string]: Storage.StorageChange; }): void { - let propsList : string[] = Object.keys(new GeneratorOptions()); - let options : { [key: string]: any } = { }; + let propsList: string[] = Object.keys(new GeneratorOptions()); + let options: { [key: string]: any; } = {}; Object.entries(changes) .filter(i => propsList.includes(i[0])) diff --git a/src/Utils/Localization.ts b/src/Utils/Localization.ts index 0cc8641..ade550b 100644 --- a/src/Utils/Localization.ts +++ b/src/Utils/Localization.ts @@ -1,8 +1,10 @@ +import browser from "../Utils/Browser"; + export default class Localization { - public static GetString(key : string) : string + public static GetString(key: string): string { - let sanitizedKey : string = key + let sanitizedKey: string = key .replaceAll(".", "_") .replaceAll(",", "_") .replaceAll(" ", "_") @@ -10,13 +12,13 @@ export default class Localization .replaceAll("?", "_") .replaceAll("!", "_"); - let str : string = chrome?.i18n?.getMessage(sanitizedKey); + let str: string = browser?.i18n?.getMessage(sanitizedKey); return str ?? key; } } -export function loc(key : string) : string +export function loc(key: string): string { return Localization.GetString(key); } diff --git a/src/Utils/Settings.ts b/src/Utils/Settings.ts index 5acc018..1d21a76 100644 --- a/src/Utils/Settings.ts +++ b/src/Utils/Settings.ts @@ -1,36 +1,39 @@ +import { Storage } from "webextension-polyfill"; +import browser from "../Utils/Browser"; + export default class Settings { - public AddContext : boolean = true; - public Autocopy : boolean = true; + public AddContext: boolean = true; + public Autocopy: boolean = true; - public static OnChanged : (changes : Partial) => void; + public static OnChanged: (changes: Partial) => void; - public static async Init() : Promise + public static async Init(): Promise { let fallbackOptions = new Settings(); - if (!chrome?.storage?.sync) + if (!browser?.storage?.sync) return fallbackOptions; - let props : { [key: string]: any } = await chrome.storage.sync.get(fallbackOptions); + let props: { [key: string]: any; } = await browser.storage.sync.get(fallbackOptions); - chrome.storage.sync.onChanged.addListener(Settings.OnStorageChanged); + browser.storage.sync.onChanged.addListener(Settings.OnStorageChanged); return props as Settings; } - public static async Update(changes : Partial) : Promise + public static async Update(changes: Partial): Promise { - if (chrome?.storage?.sync) - await chrome?.storage?.sync?.set(changes); + if (browser?.storage?.sync) + await browser?.storage?.sync?.set(changes); else Settings.OnChanged(changes); } - private static OnStorageChanged(changes : { [key: string]: chrome.storage.StorageChange }) : void + private static OnStorageChanged(changes: { [key: string]: Storage.StorageChange; }): void { - let propsList : string[] = Object.keys(new Settings()); - let settings : { [key: string]: any } = { }; + let propsList: string[] = Object.keys(new Settings()); + let settings: { [key: string]: any; } = {}; Object.entries(changes) .filter(i => propsList.includes(i[0])) diff --git a/tsconfig.json b/tsconfig.json index 22738f0..2121684 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,9 +1,7 @@ { - "compilerOptions": - { + "compilerOptions": { "target": "es5", - "lib": - [ + "lib": [ "dom", "dom.iterable", "esnext" @@ -23,5 +21,7 @@ "noEmit": true, "jsx": "react-jsx" }, - "include": [ "src" ] + "include": [ + "src" + ] } diff --git a/yarn.lock b/yarn.lock index 2474992..59dcc91 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1250,410 +1250,414 @@ dependencies: tslib "^2.1.0" -"@fluentui/priority-overflow@^9.0.0-beta.2": - version "9.0.0-beta.2" - resolved "https://registry.yarnpkg.com/@fluentui/priority-overflow/-/priority-overflow-9.0.0-beta.2.tgz#e0a2a3aec1652e3776a1b0e8270e5cdd3365a2c0" - integrity sha512-Syhl+psD3tIKVVR+eS28poRoVbtyZ4iN+izOeuV01hZELOoMaud/MM1qIUSeH8AnBSydDDCaXWgwwJ+pnUHPAQ== +"@fluentui/priority-overflow@^9.0.0-beta.3": + version "9.0.0-beta.3" + resolved "https://registry.yarnpkg.com/@fluentui/priority-overflow/-/priority-overflow-9.0.0-beta.3.tgz#c1c12bb29226650d211ec3fbd2326c1bcc2dee8f" + integrity sha512-CoDe3S7bdX2wu062TSRVtAmjPvIoRjx4IiK2Fn1iZDwFayiMomjpp+5ESLea4xzMmA2eWMJ9U6spPUcIlMncnQ== dependencies: tslib "^2.1.0" -"@fluentui/react-accordion@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-accordion/-/react-accordion-9.0.6.tgz#192fe411195dcb2bf703def3c59c57346dc23a0b" - integrity sha512-dbteQR1qXtXqBR2klNAREKQo3En8yrzvE25htjMUqULOkt25I2yvuho4BUH3Bgjmej7amhNIQ1aUo8wFpF9prA== +"@fluentui/react-accordion@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-accordion/-/react-accordion-9.0.8.tgz#be945c8a7dfaa24cac3e5cbe5f240319cc91f207" + integrity sha512-KEJHIIsrmzxpNEAwrPlDizB9Hmx9tdK05zHex7ZjfASJD11LkBpaZFa5HV+8yLPEY5QczS8HT4p1Rtfa8E7BoA== dependencies: - "@fluentui/react-aria" "^9.2.0" - "@fluentui/react-context-selector" "^9.0.3" + "@fluentui/react-aria" "^9.2.2" + "@fluentui/react-context-selector" "^9.0.4" "@fluentui/react-icons" "^2.0.175" "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-alert@9.0.0-beta.10": - version "9.0.0-beta.10" - resolved "https://registry.yarnpkg.com/@fluentui/react-alert/-/react-alert-9.0.0-beta.10.tgz#700cd5e56b9323000782db3bbc6cd574f7f6bdef" - integrity sha512-cNfwpvh+lXmJ56OR+FuFmRYjaVjj3VAZ548TulXdjk/8kncacFK4qdHeXJvb3zTqswo3kCjeBHsKG58BbpwEbw== +"@fluentui/react-alert@9.0.0-beta.13": + version "9.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@fluentui/react-alert/-/react-alert-9.0.0-beta.13.tgz#8044a7571c48e8614b59510e9f5d0893b2dadb5b" + integrity sha512-tJ2g6rUdaf1Pi8uBYZQHQI/8TPlyKxByWleav/dOcVvQ340vmqjTR+uH6DEbarGG0GfDUTs8Auv7UHTISe0iFA== dependencies: - "@fluentui/react-avatar" "^9.1.1" - "@fluentui/react-button" "^9.1.2" + "@fluentui/react-avatar" "^9.2.2" + "@fluentui/react-button" "^9.1.4" "@fluentui/react-icons" "^2.0.175" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-aria@^9.2.0": - version "9.2.0" - resolved "https://registry.yarnpkg.com/@fluentui/react-aria/-/react-aria-9.2.0.tgz#22c3f3136a5f03e82d1feab23fd721e3bec65403" - integrity sha512-dq9Gmk2dN8K7mz7VX51xCgPB+VGk520zzXyc8+fCBKjcWWUjY5RdaYaY/bae3+mNsQ40QThl+n2dXHXDa/DUMw== +"@fluentui/react-aria@^9.2.2": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@fluentui/react-aria/-/react-aria-9.2.2.tgz#d303594fb84bd1109cbcc7481a5dc03952d56906" + integrity sha512-mXsMEx891hqc1j5+CpNGwSw/LqOq/nNRzDyp66VEs2pg6YRWXTYGAYiKidS9Fir/acyZxHpoPdH9UiUfl8aYTw== dependencies: "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-utilities" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" tslib "^2.1.0" -"@fluentui/react-avatar@^9.1.1": +"@fluentui/react-avatar@^9.2.2": + version "9.2.2" + resolved "https://registry.yarnpkg.com/@fluentui/react-avatar/-/react-avatar-9.2.2.tgz#c16474471c792bc695bb7dc709404b53af059c42" + integrity sha512-EcMjBCnHSiTZfHGM3cszkt0WUlddbmljP6z+hWaVWa9uqr7sDYgthQvXVm/cuPgVvnYmmKqK7veChxKF27FxNA== + dependencies: + "@fluentui/react-badge" "^9.0.8" + "@fluentui/react-context-selector" "^9.0.4" + "@fluentui/react-icons" "^2.0.175" + "@fluentui/react-popover" "^9.2.0" + "@fluentui/react-shared-contexts" "^9.0.1" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-tooltip" "^9.0.8" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-badge@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-badge/-/react-badge-9.0.8.tgz#891bda51555872138bf3af208dd1bcb617ab35d5" + integrity sha512-qnmt5Bh6ai+6UMZiTIKAOY6FXpFlJpxUOkaFRyPM/4q47VE2FgqL6ck2idjsMLJQ6IuAHOwd7UCq1hIvZ2Odnw== + dependencies: + "@fluentui/react-icons" "^2.0.175" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-button@^9.1.4": + version "9.1.4" + resolved "https://registry.yarnpkg.com/@fluentui/react-button/-/react-button-9.1.4.tgz#e4cea2b0ac8e5d169f6579188ebf9c554d4abfc3" + integrity sha512-RY8Ffw3qIshFrEzFtj9m1F5i7Fbjv2OsVlWBZ0A7w5150B6YwrGriWha1jK9hAwnH00gT4FgxauJQU/MtDXolg== + dependencies: + "@fluentui/keyboard-keys" "^9.0.0" + "@fluentui/react-aria" "^9.2.2" + "@fluentui/react-icons" "^2.0.175" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-card@9.0.0-beta.28": + version "9.0.0-beta.28" + resolved "https://registry.yarnpkg.com/@fluentui/react-card/-/react-card-9.0.0-beta.28.tgz#13a749d8a08981b6b44633c588a29324eb7a69a9" + integrity sha512-fHFUWQBfRvn/OIYivp9htUf6kvw1ta8FzOkLKn9VstQkiV2ws8UYA3NhN8i+4GIzvN5wO8PSvFhoV0Eu4Gq36A== + dependencies: + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-checkbox@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-checkbox/-/react-checkbox-9.0.8.tgz#56508ac3f0923eb769a7f29554da81a9f3489d6f" + integrity sha512-hoE0caiZkdeytuwNxmpF6Il5Noa1RURYKsG8o8h3apScb6vOK1GRyGoTNEorcIVYBqznYEFrh+wp9w8LGVCIxg== + dependencies: + "@fluentui/react-icons" "^2.0.175" + "@fluentui/react-label" "^9.0.7" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-combobox@^9.0.0-beta.12": + version "9.0.0-beta.12" + resolved "https://registry.yarnpkg.com/@fluentui/react-combobox/-/react-combobox-9.0.0-beta.12.tgz#697ba7faa5c8b27e4ff0d90960119b4a7b445582" + integrity sha512-5cFgaocisdTU56ciEk6IuQ6NVjD/zz1+c0gx0ElWmyt9gz6MZ5feWx/PaY5OkQJL43iFQOcawOMS+CWfYXNNyw== + dependencies: + "@fluentui/keyboard-keys" "^9.0.0" + "@fluentui/react-context-selector" "^9.0.4" + "@fluentui/react-icons" "^2.0.175" + "@fluentui/react-portal" "^9.0.7" + "@fluentui/react-positioning" "^9.2.1" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-components@^9.5.1": + version "9.5.1" + resolved "https://registry.yarnpkg.com/@fluentui/react-components/-/react-components-9.5.1.tgz#e5e91d60553943d73d0ae794ff94ce63773d184f" + integrity sha512-5aTuwcqqcxsuj5E3uy0brt5P6llah1v4Lhbv0MtktVnXB077TYVxlw/2WMXveKxiCAZ46Ix09c6E22W8YEhNdQ== + dependencies: + "@fluentui/react-accordion" "^9.0.8" + "@fluentui/react-alert" "9.0.0-beta.13" + "@fluentui/react-avatar" "^9.2.2" + "@fluentui/react-badge" "^9.0.8" + "@fluentui/react-button" "^9.1.4" + "@fluentui/react-card" "9.0.0-beta.28" + "@fluentui/react-checkbox" "^9.0.8" + "@fluentui/react-combobox" "^9.0.0-beta.12" + "@fluentui/react-dialog" "^9.0.1-0" + "@fluentui/react-divider" "^9.1.1" + "@fluentui/react-field" "9.0.0-alpha.4" + "@fluentui/react-image" "^9.0.7" + "@fluentui/react-input" "^9.2.1" + "@fluentui/react-label" "^9.0.7" + "@fluentui/react-link" "^9.0.8" + "@fluentui/react-menu" "^9.3.0" + "@fluentui/react-overflow" "9.0.0-beta.11" + "@fluentui/react-persona" "^9.0.2" + "@fluentui/react-popover" "^9.2.0" + "@fluentui/react-portal" "^9.0.7" + "@fluentui/react-positioning" "^9.2.1" + "@fluentui/react-provider" "^9.1.4" + "@fluentui/react-radio" "^9.0.8" + "@fluentui/react-select" "9.0.0-beta.11" + "@fluentui/react-shared-contexts" "^9.0.1" + "@fluentui/react-slider" "^9.0.7" + "@fluentui/react-spinbutton" "^9.0.4" + "@fluentui/react-spinner" "^9.0.7" + "@fluentui/react-switch" "^9.0.8" + "@fluentui/react-table" "9.0.0-alpha.6" + "@fluentui/react-tabs" "^9.0.8" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-text" "^9.1.2" + "@fluentui/react-textarea" "^9.1.2" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-toolbar" "9.0.0-beta.9" + "@fluentui/react-tooltip" "^9.0.8" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-context-selector@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@fluentui/react-context-selector/-/react-context-selector-9.0.4.tgz#05ab8b3a7d010543ac448df9adecac3db6ad5ebb" + integrity sha512-s/8seV0H/oh78jdWAl3EUxhUVah36YpCKpVwSWKk3J4uu9wzEsiaTPpN1vEqCQboG5On8DTbix1iDSvDZK/QKw== + dependencies: + "@fluentui/react-utilities" "^9.1.1" + tslib "^2.1.0" + +"@fluentui/react-dialog@^9.0.1-0": + version "9.0.1-0" + resolved "https://registry.yarnpkg.com/@fluentui/react-dialog/-/react-dialog-9.0.1-0.tgz#806b551cb19d7ab8d5339dac36d9d3c47ab572cd" + integrity sha512-i/SgaR5aLIhN6c6DmL03qgUOU3+DGSkfc4QERpScMsJC93S9Xvi37VUMrwxiE/gqI+UPW+OFMl6EIr3UJSrlew== + dependencies: + "@fluentui/keyboard-keys" "^9.0.0" + "@fluentui/react-aria" "^9.2.2" + "@fluentui/react-context-selector" "^9.0.4" + "@fluentui/react-icons" "^2.0.175" + "@fluentui/react-portal" "^9.0.7" + "@fluentui/react-shared-contexts" "^9.0.1" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-divider@^9.1.1": version "9.1.1" - resolved "https://registry.yarnpkg.com/@fluentui/react-avatar/-/react-avatar-9.1.1.tgz#abcaf60e96ddfca71c586b16eff47e204b4ded90" - integrity sha512-kLHMTl7MnQ86Ix72PCxP0MbHL1RpPNQVCCAYaGofzqQCtc9W3XMml9GlAwDiyPn7SAAe0IPkmlOhsoKLZ5qXRg== + resolved "https://registry.yarnpkg.com/@fluentui/react-divider/-/react-divider-9.1.1.tgz#da4bff86489ad3bf5d2122c5eb1b19eefe9f127f" + integrity sha512-6LRYUEVk0JDHhKArcBzKGn/frxo7/+zmGy+LONnWFuOl1gzshkLxFBUxbfe0Sl2MF1i22arrVVX7l77bvVgpKA== dependencies: - "@fluentui/react-badge" "^9.0.6" - "@fluentui/react-context-selector" "^9.0.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-field@9.0.0-alpha.4": + version "9.0.0-alpha.4" + resolved "https://registry.yarnpkg.com/@fluentui/react-field/-/react-field-9.0.0-alpha.4.tgz#76fb4dba86c6eb2136c2fcd9d26042e17088b01b" + integrity sha512-WEbtsmlgIPPppUb0t+ca9pnAFfzzgP81OcHFDKYj2UDT+qVIiDLkiCdCSKCR3uSCHOkF9eoRH1axgPwGQF/ZPg== + dependencies: + "@fluentui/react-checkbox" "^9.0.8" + "@fluentui/react-combobox" "^9.0.0-beta.12" + "@fluentui/react-context-selector" "^9.0.4" "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-popover" "^9.1.1" - "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-input" "^9.2.1" + "@fluentui/react-label" "^9.0.7" + "@fluentui/react-progress" "9.0.0-alpha.1" + "@fluentui/react-radio" "^9.0.8" + "@fluentui/react-select" "9.0.0-beta.11" + "@fluentui/react-slider" "^9.0.7" + "@fluentui/react-spinbutton" "^9.0.4" + "@fluentui/react-switch" "^9.0.8" + "@fluentui/react-textarea" "^9.1.2" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-tooltip" "^9.0.6" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-badge@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-badge/-/react-badge-9.0.6.tgz#a68eb8acf198acadf5ccdb0db85d0488f0b5d179" - integrity sha512-UdCXLo/UMxx+pbCY+SSyO83jW2O384HPIFakPHqmOyt0J9yPFpBt3EH2LvMaiCgDbbahS7ZR2oOdeoz3xybevQ== - dependencies: - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-button@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@fluentui/react-button/-/react-button-9.1.2.tgz#23ac076f74781fba1257b8f80e6523d1f6fb667e" - integrity sha512-U/YjfNxjmoKKb+QdjQckUcd5x3PAmN2gMHRgggIZvKZ+lxebsUzHkQbhan/PqNfvS9gRG0CTWNRqb+X4k/4wjg== - dependencies: - "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-aria" "^9.2.0" - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-tabster" "^9.1.1" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-card@9.0.0-beta.26": - version "9.0.0-beta.26" - resolved "https://registry.yarnpkg.com/@fluentui/react-card/-/react-card-9.0.0-beta.26.tgz#651b04b95149a2ee04d55d6d6969b0f5ee275f63" - integrity sha512-UhQYBW74m9I2kGlyz+ZqIrMSXkmVQKyduKIxWW+rYeTZLEApP2A8nBZ+GoOthTr8G6Yf3UOYbk2QHPdf1QlY8g== - dependencies: - "@fluentui/react-tabster" "^9.1.1" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-checkbox@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-checkbox/-/react-checkbox-9.0.6.tgz#10e8ca7cf7f0d152b2282be2941836b7683a406f" - integrity sha512-vN2vihXz4QVlUfwJ58gdajy79Jf6CnAPFpNIOL2TjVSCeX2Lmr3Q02GH10sic29Hw6dT3qfGE/OIRv5VL6DY+w== - dependencies: - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-label" "^9.0.6" - "@fluentui/react-tabster" "^9.1.1" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-combobox@^9.0.0-beta.10": - version "9.0.0-beta.10" - resolved "https://registry.yarnpkg.com/@fluentui/react-combobox/-/react-combobox-9.0.0-beta.10.tgz#f880934acc576e7788ad35dfb5a35cfa44f638e3" - integrity sha512-LECBjNdIJHP5YWqk7mqfowINVrsd9m20K3899CL8d+bD0gaMLJ55JsaglzuQ73PtjDUBkwX7UpBFXWyQrHx7Hg== - dependencies: - "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-context-selector" "^9.0.3" - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-portal" "^9.0.5" - "@fluentui/react-positioning" "^9.2.0" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-components@^9.3.2": - version "9.3.2" - resolved "https://registry.yarnpkg.com/@fluentui/react-components/-/react-components-9.3.2.tgz#73fd721ebac22d962d9ee2bd57d70a45badf8af5" - integrity sha512-SCJzzihPK2nTgLG+fTFWmmLLF/mYrELm0n8FHL4n4fwgorLrDVRS9vJWETxumG6zKB0puw8Bv8Nkxi+4H/aByg== - dependencies: - "@fluentui/react-accordion" "^9.0.6" - "@fluentui/react-alert" "9.0.0-beta.10" - "@fluentui/react-avatar" "^9.1.1" - "@fluentui/react-badge" "^9.0.6" - "@fluentui/react-button" "^9.1.2" - "@fluentui/react-card" "9.0.0-beta.26" - "@fluentui/react-checkbox" "^9.0.6" - "@fluentui/react-combobox" "^9.0.0-beta.10" - "@fluentui/react-dialog" "^9.0.0-beta.10" - "@fluentui/react-divider" "^9.1.0" - "@fluentui/react-field" "9.0.0-alpha.2" - "@fluentui/react-image" "^9.0.6" - "@fluentui/react-input" "^9.1.1" - "@fluentui/react-label" "^9.0.6" - "@fluentui/react-link" "^9.0.6" - "@fluentui/react-menu" "^9.2.1" - "@fluentui/react-overflow" "9.0.0-beta.10" - "@fluentui/react-popover" "^9.1.1" - "@fluentui/react-positioning" "^9.2.0" - "@fluentui/react-provider" "^9.1.2" - "@fluentui/react-radio" "^9.0.6" - "@fluentui/react-select" "9.0.0-beta.10" - "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-slider" "^9.0.5" - "@fluentui/react-spinbutton" "^9.0.2" - "@fluentui/react-spinner" "^9.0.6" - "@fluentui/react-switch" "^9.0.6" - "@fluentui/react-table" "9.0.0-alpha.3" - "@fluentui/react-tabs" "^9.0.6" - "@fluentui/react-tabster" "^9.1.1" - "@fluentui/react-text" "^9.1.1" - "@fluentui/react-textarea" "^9.1.0" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-toolbar" "9.0.0-beta.7" - "@fluentui/react-tooltip" "^9.0.6" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-context-selector@^9.0.3": - version "9.0.3" - resolved "https://registry.yarnpkg.com/@fluentui/react-context-selector/-/react-context-selector-9.0.3.tgz#6302c5341ce2695e73b798b53b925fcb95914713" - integrity sha512-cY2ydnlfcAmryVFYDnoWIXmfRhYFnwulQylrqEmgLXsBzS93ENf8Vrisc+TUvl9/2RN65/Pjjsligu/WcpN2xA== - dependencies: - "@fluentui/react-utilities" "^9.1.0" - tslib "^2.1.0" - -"@fluentui/react-dialog@^9.0.0-beta.10": - version "9.0.0-beta.10" - resolved "https://registry.yarnpkg.com/@fluentui/react-dialog/-/react-dialog-9.0.0-beta.10.tgz#84e6e952bf58e2dd74fd0d9ac0accd7c762f1ef2" - integrity sha512-s1C9/KcN5aQMeyTAHPaCqPwxOAgV8YzWdx0alby7UT2L/U0IwRUr/OTSzbFzuK4BDHho/Jk08ZgUH/ha3qTf3w== - dependencies: - "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-aria" "^9.2.0" - "@fluentui/react-context-selector" "^9.0.3" - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-portal" "^9.0.5" - "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-divider@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@fluentui/react-divider/-/react-divider-9.1.0.tgz#b998282542307f2672036c7872f2cda3d1220544" - integrity sha512-9lmjRdMsSJydbIrN4v34sPwupL56iBZ6buWDVhuLXCJk7KT/jPJgkxzhSIQj1WXpd2QplBvHm3eslLMXD2ejbw== - dependencies: - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-field@9.0.0-alpha.2": - version "9.0.0-alpha.2" - resolved "https://registry.yarnpkg.com/@fluentui/react-field/-/react-field-9.0.0-alpha.2.tgz#798aa6071087a480229535ed0c31d1d58bd25af1" - integrity sha512-BOVgIUAJeJmbf4n9s0zYHXFXQa7pwWtplrUmOL3wqOYJuJPu1PkHd0XAtoX6c4jIVbgY3bbnJ/JfqtQUCiGUJA== - dependencies: - "@fluentui/react-checkbox" "^9.0.6" - "@fluentui/react-combobox" "^9.0.0-beta.10" - "@fluentui/react-context-selector" "^9.0.3" - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-input" "^9.1.1" - "@fluentui/react-label" "^9.0.6" - "@fluentui/react-radio" "^9.0.6" - "@fluentui/react-select" "9.0.0-beta.10" - "@fluentui/react-slider" "^9.0.5" - "@fluentui/react-spinbutton" "^9.0.2" - "@fluentui/react-switch" "^9.0.6" - "@fluentui/react-textarea" "^9.1.0" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-field@9.0.0-alpha.1": - version "9.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/@fluentui/react-field/-/react-field-9.0.0-alpha.1.tgz#93fea0769d68eb9e3e93472577bfa9e201e46f7f" - integrity sha512-aZGfkAyc2E4bGbRWl4ztvw1IAYmH5QjlnjpWom6v/r5NGNPNxqevaEx+b69gJvkMIcEv1Kk/bYR88Fr0h4LYJA== - dependencies: - "@fluentui/react-checkbox" "^9.0.5" - "@fluentui/react-combobox" "^9.0.0-beta.9" - "@fluentui/react-context-selector" "^9.0.3" - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-input" "^9.1.0" - "@fluentui/react-label" "^9.0.5" - "@fluentui/react-radio" "^9.0.5" - "@fluentui/react-select" "9.0.0-beta.9" - "@fluentui/react-slider" "^9.0.4" - "@fluentui/react-spinbutton" "^9.0.1" - "@fluentui/react-switch" "^9.0.5" - "@fluentui/react-textarea" "^9.0.5" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-icons@^2.0.175", "@fluentui/react-icons@^2.0.183": - version "2.0.183" - resolved "https://registry.yarnpkg.com/@fluentui/react-icons/-/react-icons-2.0.183.tgz#6b534f6d55e7e4b8d285df533e09b73a7ac153e0" - integrity sha512-7zYIIaw1zi/Iqjx5vj9X9bh4cozoY4NuiGW0lsHvkHPhnKz4r+2P7pKrkj1WvU94oHlF6wr/cPthc2J9v1fsCg== +"@fluentui/react-icons@^2.0.175", "@fluentui/react-icons@^2.0.185": + version "2.0.185" + resolved "https://registry.yarnpkg.com/@fluentui/react-icons/-/react-icons-2.0.185.tgz#209e52c3f4e079a751baa4fc5f857f7bbc2d752a" + integrity sha512-IDqGAhijL1v7M22sNQRM7HnVe6+T4bX6cgcdOjybw1KP9Gc46iGTBhGKT8V2jQkR+qYJF1doiHwVFryYgZ4F9w== dependencies: "@griffel/react" "^1.0.0" tslib "^2.1.0" -"@fluentui/react-image@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-image/-/react-image-9.0.6.tgz#43afc97a0956e87fb84e948c6ff2ae72a33f1ce3" - integrity sha512-wbDA7jyCJb1Vmta2/mO8MmplQT01Gd4a8PQU+xUyKV68evSFEPhbvSpxh+vFJCDlDJ5uu3C4mcmkq1WgALvO2g== +"@fluentui/react-image@^9.0.7": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@fluentui/react-image/-/react-image-9.0.7.tgz#05a0dd899a03722fbbe9dc4856d2ae4f080f1924" + integrity sha512-Xe45bkLV6+UH+xzfRvD0wY9O4Je/Ds4CaBlsFfQyPlMK+PYTevhn6JNi1hfo515OahacGyMM/BIS+zI8CRwH2A== dependencies: "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-input@^9.1.1": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@fluentui/react-input/-/react-input-9.1.1.tgz#ece0ec9956b0691daeb426710204434d999bd6ba" - integrity sha512-nM7eTNCRVCM+JhkCgmhV0XL1/4lk8v5YbWw23lfldSvrVatAH3rbd+RH2wAgi6yiPe8s7Gk69yLDmDeL6xOPUw== - dependencies: - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-label@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-label/-/react-label-9.0.6.tgz#036fd3ad166a4a865bfdc8848c5c477aeb567647" - integrity sha512-lwe4G6CT+KyCy4YMnvLmtkcAZxVDR1PnuB9MoQMxcNN22MkiEdJ/SKyq6HzxfXvAFy3m1etBQxGWDB9bmKMxAw== - dependencies: - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-link@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-link/-/react-link-9.0.6.tgz#924c58e4f9802152c935652749109f0688952e17" - integrity sha512-NKhdt2m55oKhldSLSwmih4EHyHWorfU8hkEQbi1z55OXAoIlOalWNsYiJTSm3rK4os+BRMl8T99pyYvtwQ7b7A== - dependencies: - "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-tabster" "^9.1.1" - "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" - tslib "^2.1.0" - -"@fluentui/react-menu@^9.2.1": +"@fluentui/react-input@^9.2.1": version "9.2.1" - resolved "https://registry.yarnpkg.com/@fluentui/react-menu/-/react-menu-9.2.1.tgz#6605ce75fcd72017dbcdb35cf528265145c27454" - integrity sha512-6pWsN2kk1PprF/emGYVfEoJWKJdEfaJnamO1Iy9COv8xLIYwrS600T93/HM25xv+BV5LzvZ8+npg0EiRqg+IRg== + resolved "https://registry.yarnpkg.com/@fluentui/react-input/-/react-input-9.2.1.tgz#f32440ebc790998d80db21011f01b8cb2c8529b9" + integrity sha512-EaViGpfaWpTb69FO7Ew7byh/HVBzxH5hV95VeNi6ZcrvjptjYT0K/F7XOUS/hD+vR9QckOpvtLUWmqEGOAkKkg== + dependencies: + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-label@^9.0.7": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@fluentui/react-label/-/react-label-9.0.7.tgz#7cabb273788e9c784a2b03abc216f1808fc8077a" + integrity sha512-+JqIcw1E46oCGZAOD5KHaRJ4oMmWb5CaGsNU//i8niqh9jE+MKXAq36dv6mYTVpJbppVlt9nCosCHGj42+ibeg== + dependencies: + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-link@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-link/-/react-link-9.0.8.tgz#b8007da1161f99b932d71481e75bf65ce25b887c" + integrity sha512-Ht+bjUF0z+IW6WbhqNlwbQEJKnunOgLyZwq+2xqBPtgO0BOou+LGr+ul2sU5h2LbWcCzAs4hFB3adMS/WUGcuA== dependencies: "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-aria" "^9.2.0" - "@fluentui/react-context-selector" "^9.0.3" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-menu@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@fluentui/react-menu/-/react-menu-9.3.0.tgz#fdced8ba46a628978a8e8eb6975484dc679d7139" + integrity sha512-lgOQBCh5Cpt5dlcyX8qF5vBXSFHx4bQgaApeIGJjEvcoBCt0/xF91vesLDolrgqTA2N5hdHVcKKc7ufwoJ4fTA== + dependencies: + "@fluentui/keyboard-keys" "^9.0.0" + "@fluentui/react-aria" "^9.2.2" + "@fluentui/react-context-selector" "^9.0.4" "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-portal" "^9.0.5" - "@fluentui/react-positioning" "^9.2.0" + "@fluentui/react-portal" "^9.0.7" + "@fluentui/react-positioning" "^9.2.1" "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-overflow@9.0.0-beta.10": - version "9.0.0-beta.10" - resolved "https://registry.yarnpkg.com/@fluentui/react-overflow/-/react-overflow-9.0.0-beta.10.tgz#2887dea12cef9133099948d7ed0fd4f35b7f9504" - integrity sha512-Kdb2CywCDS70Vq1wf6cZsBR+td1NGSXyHpjp7kC1cSCLp/bgbvM1Qoqk2vC/YJBDjv1KGlDO5Pr3g3ewz7d1aQ== +"@fluentui/react-overflow@9.0.0-beta.11": + version "9.0.0-beta.11" + resolved "https://registry.yarnpkg.com/@fluentui/react-overflow/-/react-overflow-9.0.0-beta.11.tgz#b93e8b8f250a4c6c98118e08e70d1845eebca110" + integrity sha512-b3hw2UefOAWe8RoQr3Z7ZoeuudOANRKQrpFYzEOIc1BwXudtIQPJgdXOuf77Dh1KuqVVh+p3Sxk1amn9iKCMPQ== dependencies: - "@fluentui/priority-overflow" "^9.0.0-beta.2" - "@fluentui/react-context-selector" "^9.0.3" + "@fluentui/priority-overflow" "^9.0.0-beta.3" + "@fluentui/react-context-selector" "^9.0.4" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-popover@^9.1.1": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@fluentui/react-popover/-/react-popover-9.1.1.tgz#feee8f80b98fa12621c9e478dde5a34aad35fcd3" - integrity sha512-4td+EHY3wsIw3r7vdhtM2UOWyOUkTvsU/fOVR2lTxAbpT4wISavz7YgpbJv6J3bI3KSM7A8/LEVQFEu7XbNEJQ== +"@fluentui/react-persona@^9.0.2": + version "9.0.2" + resolved "https://registry.yarnpkg.com/@fluentui/react-persona/-/react-persona-9.0.2.tgz#f536805a8828fccf90e086f2922b923ef1527206" + integrity sha512-qxSGY4oTkhBSt9Y6LUTuKp55vILhMqx+VyTzaXLmXq4+/z4eVdFR4Z2Rz3z0cvrmNYGSN702y99sL4xza76lPQ== + dependencies: + "@fluentui/react-avatar" "^9.2.2" + "@fluentui/react-badge" "^9.0.8" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-popover@^9.2.0": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@fluentui/react-popover/-/react-popover-9.2.0.tgz#7a0058ec8bd95d8adc026f189e5ae3c2025b1946" + integrity sha512-H3c3xNenxtxbOAUu2JvClbxOx97f6HEMQiJnl9pQPumH5ul8a7VJda+ezfbHdxhqVfWgIhrUHSanhlQ4MtIBSw== dependencies: "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-aria" "^9.2.0" - "@fluentui/react-context-selector" "^9.0.3" - "@fluentui/react-portal" "^9.0.5" - "@fluentui/react-positioning" "^9.2.0" + "@fluentui/react-aria" "^9.2.2" + "@fluentui/react-context-selector" "^9.0.4" + "@fluentui/react-portal" "^9.0.7" + "@fluentui/react-positioning" "^9.2.1" "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-portal@^9.0.5": - version "9.0.5" - resolved "https://registry.yarnpkg.com/@fluentui/react-portal/-/react-portal-9.0.5.tgz#7658ca90fa5e3f530f267d18ec4a18cc6796b946" - integrity sha512-zVPm9cqSp/tENh1pNkJPTQSG19uAPnGK57UxknXWNvbA20uV3+/Ia+Gf/MUll/DCnsuPciLWwXuafe6Ka7W1wg== +"@fluentui/react-portal@^9.0.7": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@fluentui/react-portal/-/react-portal-9.0.7.tgz#93930bd4d0e378899f842743b63cf8fa9f80b3b4" + integrity sha512-TlKp9n6Q6aSAYKd9/gJU5wXbtKxZ+mOwET+0cARLVt0Cvc6rbUjPtUCcz6PtMjqau87x4hwvGQLvaOByKbi4gg== dependencies: "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-positioning@^9.2.0": - version "9.2.0" - resolved "https://registry.yarnpkg.com/@fluentui/react-positioning/-/react-positioning-9.2.0.tgz#3e15e178afb31c3b6a68a6662dc1119c784d9b53" - integrity sha512-Vrh8ZUprJpkzcP+zHr05tgVJ/S3k4mFzmSwBMGlK7aioqMRSxeq79hOS5jxplhalR1dk3fu1rTjGY6XvHkYzwA== +"@fluentui/react-positioning@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@fluentui/react-positioning/-/react-positioning-9.2.1.tgz#a6382bf146bffcf7c5293b74dddf3f3f30dd6723" + integrity sha512-Pdm4GgLT6mfExEvzGGIr25WhpjpS6Kr/DJ35ZpXDWkWv7n+mmw5wLnpwW1IUnqfQwHLIRqwjJ9E36ueY0v4fGg== dependencies: "@floating-ui/dom" "^1.0.0" "@fluentui/react-shared-contexts" "^9.0.1" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-provider@^9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@fluentui/react-provider/-/react-provider-9.1.2.tgz#0bf11792dfd18ef60d1495fed37947f63d6e3d12" - integrity sha512-8QfONtuRlm0pEVvDwNGWD3CvGfQHjuAlOfb9aNYkD4ysjlD5w6XcQDCjeA/kIj9K/qgnnBdR9f/Ne1pi93HdOQ== +"@fluentui/react-progress@9.0.0-alpha.1": + version "9.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/@fluentui/react-progress/-/react-progress-9.0.0-alpha.1.tgz#b5189bd18bc85021a0653655d89972636e03aec3" + integrity sha512-JRabtwyZ5IWfby07iXDNoKCmflF88y4o6RLDDFCSh92ERm278BpJWGuKv7qQfDn3C8dkT3N1bRV4tMb10J4ouA== dependencies: "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/core" "^1.5.1" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-radio@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-radio/-/react-radio-9.0.6.tgz#1faad3cbb9e470646606a054ca40162548de3475" - integrity sha512-afskQs8BeT4laZf8SJTjyhujju3sioNgAfLG6oI54qLp/XgqzTxCqxd8HvcrVLt7ORdiS9ch22qu339sV/17Ig== +"@fluentui/react-provider@^9.1.4": + version "9.1.4" + resolved "https://registry.yarnpkg.com/@fluentui/react-provider/-/react-provider-9.1.4.tgz#080d4f7e3d6a878c365e1c600a54c96b73f332d8" + integrity sha512-oVE9Q7tc4RY12WNMQ2xcCPQiunjO/P0NklDz6g1yDEP73+tuq+KiN+pPK+qMcfwY/McAHsBHtR5kiRBXqVzXwg== dependencies: - "@fluentui/react-context-selector" "^9.0.3" - "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-label" "^9.0.6" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-shared-contexts" "^9.0.1" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/core" "^1.7.0" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-select@9.0.0-beta.10": - version "9.0.0-beta.10" - resolved "https://registry.yarnpkg.com/@fluentui/react-select/-/react-select-9.0.0-beta.10.tgz#d5cf025e6c37505952f20dcb20bcee5ef8c8c5ef" - integrity sha512-ANFpXefPDTfkhSouV1Ca/tBaxlzouAd3hu+V9wH4IwWLgZAMrwnu9VIL5PMpv3xrBPJR6lJiY/0ecaRXS1FW9Q== +"@fluentui/react-radio@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-radio/-/react-radio-9.0.8.tgz#14176ec9fca66712bc8263cf05e2f252f7b7fd00" + integrity sha512-ufkLaDJF315G1DKLxXq25P11PaSOExP9KVMvaLr8PpfiX6hGMhuxcs/hiID5VqUOxo7yDLdsDr7+myKxkpqQIA== + dependencies: + "@fluentui/react-context-selector" "^9.0.4" + "@fluentui/react-icons" "^2.0.175" + "@fluentui/react-label" "^9.0.7" + "@fluentui/react-tabster" "^9.1.3" + "@fluentui/react-theme" "^9.1.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" + tslib "^2.1.0" + +"@fluentui/react-select@9.0.0-beta.11": + version "9.0.0-beta.11" + resolved "https://registry.yarnpkg.com/@fluentui/react-select/-/react-select-9.0.0-beta.11.tgz#8cffb34187bdf5ec1e506287780fcfc5b3cb9f6e" + integrity sha512-Ot108nKhw1YO69za0yev+L8RPxMZKl/1V4mO4f+f2tQo3EPO7SCP05LvHjuvvBJjl7rmsK+XIm5zipiiHlePdA== dependencies: "@fluentui/react-icons" "^2.0.175" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" "@fluentui/react-shared-contexts@^9.0.1": @@ -1664,112 +1668,113 @@ "@fluentui/react-theme" "^9.1.0" tslib "^2.1.0" -"@fluentui/react-slider@^9.0.5": - version "9.0.5" - resolved "https://registry.yarnpkg.com/@fluentui/react-slider/-/react-slider-9.0.5.tgz#aa96ec42c26c9d1f90f7d8d5e53dd78d5f3872e8" - integrity sha512-AeHG41ANYvsrFA1DUCmGNQTxjyoagEo1scR3QMdIt9UwPD4y4PKJXySNsVflFJS+GvFmEMZeMYfWTN9o7U5FBQ== +"@fluentui/react-slider@^9.0.7": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@fluentui/react-slider/-/react-slider-9.0.7.tgz#b0dcc6b94b61aeec0adb87eac9bd9c3aa2405d1f" + integrity sha512-Bl1Ut9ovgSNwtHc7fSUvdqDTRamix817q9Y+dOP7I+hOAsl0VvQM5H9MCrib1TuaPXWYh/tbToemw/ASiKCc7g== dependencies: "@fluentui/react-shared-contexts" "^9.0.1" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-spinbutton@^9.0.2": - version "9.0.2" - resolved "https://registry.yarnpkg.com/@fluentui/react-spinbutton/-/react-spinbutton-9.0.2.tgz#3f07b24f003f65bdd986f9bd1f2002c717b92258" - integrity sha512-38oh+pgnrGOrEHB39gY39dM15eKA14etuNOlx5sER/hbj7w9LM21mLDXn/1xq/ghS/Oh0XkI3LsVhnC7HgsH5g== +"@fluentui/react-spinbutton@^9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@fluentui/react-spinbutton/-/react-spinbutton-9.0.4.tgz#61663ae1a36cbe0b72ff2dcad64e8867a4c9d472" + integrity sha512-6yvcCgzj+IAGqa+Gpe0MIzFPVZU8MuwneCN+r6eb9luiZoHz0X3erRFEkP9nEURGhKu52oY2PZ4m0LF247EiwA== dependencies: "@fluentui/keyboard-keys" "^9.0.0" "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-input" "^9.1.1" + "@fluentui/react-input" "^9.2.1" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-spinner@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-spinner/-/react-spinner-9.0.6.tgz#1f37a1f94cea27f0dfc069683c03aaf623018803" - integrity sha512-V1VgOPfcl1k1jAGVIZ3d2bQWzmlEvvSehNpOS0TB4aOR8kaFekJRV3gxwZVP2RWJ0A3nIQa06E/z5IGHApZZsA== +"@fluentui/react-spinner@^9.0.7": + version "9.0.7" + resolved "https://registry.yarnpkg.com/@fluentui/react-spinner/-/react-spinner-9.0.7.tgz#1e946107712f3f32d6df6c4c3e8a3d5cc9d80733" + integrity sha512-h0akZ4388Z6WLkzjL73poVADvu03gyDQxML0pMF0KWvG9eywqTh+LG+PjlwuichvHsUmTdrjI6A6U26C4LNgTQ== dependencies: - "@fluentui/react-label" "^9.0.6" + "@fluentui/react-label" "^9.0.7" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-switch@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-switch/-/react-switch-9.0.6.tgz#b9753051612c90384576c78d74572d80fc0128cb" - integrity sha512-nDqUSyDTVzPp8acNLe93N1OPipffMNVjYzv3i9DHLIsE/gol+snMCR85qoHDoTN1LJCKF2KnJMFwplJVdlwiZg== +"@fluentui/react-switch@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-switch/-/react-switch-9.0.8.tgz#a75ac9ce4648be642e15af340f2762d9eaa19fa2" + integrity sha512-F5OgFDaFZOnipmSJR8vt5twjsWiE6iTW84c1igh5aCfezdj71/WEJ6tMG1Vx41A9AVKXzqU4LU0/mFRv1B4H9Q== dependencies: "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-label" "^9.0.6" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-label" "^9.0.7" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-table@9.0.0-alpha.3": - version "9.0.0-alpha.3" - resolved "https://registry.yarnpkg.com/@fluentui/react-table/-/react-table-9.0.0-alpha.3.tgz#43a4eb336089d2b2288497f6f8a31d870818b76a" - integrity sha512-lkxCZ+D5HkjnKT/kwPZvML7v7I38zcf2Z+GOGFYlYIZc6Yj3ZnZRq1H717aG3/iFKqBSnYf1oIiKR+QcEtBn7A== +"@fluentui/react-table@9.0.0-alpha.6": + version "9.0.0-alpha.6" + resolved "https://registry.yarnpkg.com/@fluentui/react-table/-/react-table-9.0.0-alpha.6.tgz#0287074509839894a2a8d5772754bdc5d9b8c4c6" + integrity sha512-VtF/1JrSS4vd0BmepB8K/7YWKD6St4B2Q6YuqK/cSgVigkuhEuLEqKZSjHix3GDDYni93shgV3PUAE0K6fnx2A== dependencies: - "@fluentui/react-aria" "^9.2.0" - "@fluentui/react-checkbox" "^9.0.6" + "@fluentui/react-aria" "^9.2.2" + "@fluentui/react-avatar" "^9.2.2" + "@fluentui/react-checkbox" "^9.0.8" "@fluentui/react-icons" "^2.0.175" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-tabs@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-tabs/-/react-tabs-9.0.6.tgz#57a94995e5ba75d56449549505bb551b2c0d23d5" - integrity sha512-jbMYV6Zf4jxHHON7KKsNAg5jaRIroJu0xYr/DaPSaAPijHyUOf8TWEmWZuchgdedI9wl8nokeOsH6jIKZN92gw== +"@fluentui/react-tabs@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-tabs/-/react-tabs-9.0.8.tgz#b5eba48e0e5401f8ac0fabcd3f8607ea07716c7d" + integrity sha512-6itlBIxlhjX3DZYpVA+1McZjpO1nMABOdDbc7OtO48Ct37Az3oJzGV4zAZCLcoirPs83DiZIPBn6l0k39otp6w== dependencies: - "@fluentui/react-context-selector" "^9.0.3" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-context-selector" "^9.0.4" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-tabster@^9.1.1": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@fluentui/react-tabster/-/react-tabster-9.1.1.tgz#d05201b14f0ae6226c36d7b4c438a0855e2b84a2" - integrity sha512-CYcSBjodKMP7XDnQyklPCP9g6jEicdAgmwSObDdZ/lRiMB9cxMOrHgK386howUN//5wZn4Z8NKyfR4b9tBvggA== +"@fluentui/react-tabster@^9.1.3": + version "9.1.3" + resolved "https://registry.yarnpkg.com/@fluentui/react-tabster/-/react-tabster-9.1.3.tgz#4961179480f6000fc9852bf2698ac085289e7cd8" + integrity sha512-dev3RQ/j+2jIBNVm22ne27tE7snmO+QK8IiVVmkbMcyVgglDhtSe6NNwG/KGI34g+lVoIcJMpqM+sY8hYKtYLQ== dependencies: "@fluentui/react-shared-contexts" "^9.0.1" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" keyborg "^1.2.1" tabster "^2.1.2" tslib "^2.1.0" -"@fluentui/react-text@^9.1.1": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@fluentui/react-text/-/react-text-9.1.1.tgz#0f5e81ca3f2d5ae5915e62fe27bd02aad9239051" - integrity sha512-zBJv4Dqg9PvC7D05dsbXcYAWNx+29fMM4KAoExTWQnwX+atp+EM98VT5xLM8QcgfwdWPsVvuofDDdBX/UzHG1Q== +"@fluentui/react-text@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@fluentui/react-text/-/react-text-9.1.2.tgz#aec118a92751ccee664e77b1059f065b498e72de" + integrity sha512-nkgr+gYylTuvWCkvHpJr6F3g7KxuJwHFi2owgKDQnVvFt7IQd2j2v+H7XrRTOl3P5U5srglAD7VvjSAVSE49fQ== dependencies: "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-textarea@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@fluentui/react-textarea/-/react-textarea-9.1.0.tgz#e151cf208cbcefb846217587a9829ed8466fbd92" - integrity sha512-AoE52j/p86OuyJKtEUk6Fb5RebivfeMMdVr0SvOuu3BK6h6PGO/QTh88tmnNb7O9/QKW8ZPuaACs6hHyYgrjXQ== +"@fluentui/react-textarea@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@fluentui/react-textarea/-/react-textarea-9.1.2.tgz#ef07c6a3ed22df9808b1777d99d311e5126b98c2" + integrity sha512-8SanYjY4um2SwuvzuI4WecWNHCmm0iiM2K6b3KLBA06Nd5k5wun9f4N3w7mXLA/UYBc0zpfSh0hEj0buU61+LQ== dependencies: "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" "@fluentui/react-theme@^9.1.0": @@ -1779,46 +1784,47 @@ dependencies: tslib "^2.1.0" -"@fluentui/react-toolbar@9.0.0-beta.7": - version "9.0.0-beta.7" - resolved "https://registry.yarnpkg.com/@fluentui/react-toolbar/-/react-toolbar-9.0.0-beta.7.tgz#1d93a6265bff385d1331054682b7ca0fbf157dd9" - integrity sha512-qljV3NouRD42zC3WiNP32Tw5P4wWP89DwH8tFnrULeilJM6xuIZJcafMtAg+l5E0fg4Xotsx2EMOedw9j+bK+Q== +"@fluentui/react-toolbar@9.0.0-beta.9": + version "9.0.0-beta.9" + resolved "https://registry.yarnpkg.com/@fluentui/react-toolbar/-/react-toolbar-9.0.0-beta.9.tgz#09c0f9a01b7bed6f6d9a423cd208081de23c0e6b" + integrity sha512-SiO3wVvvWRDL6JpUvYm8XLHIbt40LJjsdi9Mm+T9Gk0I1Br92VLa/FbMlnDodhia82WpOdC9OIkI/HUxc4iJQQ== dependencies: - "@fluentui/react-button" "^9.1.2" - "@fluentui/react-divider" "^9.1.0" - "@fluentui/react-radio" "^9.0.6" - "@fluentui/react-tabster" "^9.1.1" + "@fluentui/react-button" "^9.1.4" + "@fluentui/react-context-selector" "^9.0.4" + "@fluentui/react-divider" "^9.1.1" + "@fluentui/react-radio" "^9.0.8" + "@fluentui/react-tabster" "^9.1.3" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-tooltip@^9.0.6": - version "9.0.6" - resolved "https://registry.yarnpkg.com/@fluentui/react-tooltip/-/react-tooltip-9.0.6.tgz#be6168909f875e059c1712268551abe336b889a9" - integrity sha512-I6PbSCbclZ3Q3cBdg3+LEdesxvJh3bjO3c5KWnvkednQt5RtIXfHaa6Hb43/K1uE2kpG5Cu0SqB7NqTBHGJIUw== +"@fluentui/react-tooltip@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@fluentui/react-tooltip/-/react-tooltip-9.0.8.tgz#8c13dd719b020ba94fb01d5980d10646f156fde7" + integrity sha512-dDKX/4yD9lqFdUfjHHdb+tvYGlXijQ6bA5LJk7s5bswrKea8JZWvFpwk6Nr1whtl71Z2d1zzBC2MKPH56WeZeQ== dependencies: "@fluentui/keyboard-keys" "^9.0.0" - "@fluentui/react-portal" "^9.0.5" - "@fluentui/react-positioning" "^9.2.0" + "@fluentui/react-portal" "^9.0.7" + "@fluentui/react-positioning" "^9.2.1" "@fluentui/react-shared-contexts" "^9.0.1" "@fluentui/react-theme" "^9.1.0" - "@fluentui/react-utilities" "^9.1.0" - "@griffel/react" "^1.3.0" + "@fluentui/react-utilities" "^9.1.1" + "@griffel/react" "^1.4.0" tslib "^2.1.0" -"@fluentui/react-utilities@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@fluentui/react-utilities/-/react-utilities-9.1.0.tgz#ed41afea9e70ea5f2d526fbad5be0a5e5928045e" - integrity sha512-KUYpEt+8+dC6zhzJJckEsZTsbFXkuMPNe9b9R7pB4KdG5MM+rc/3vnOJjjx9uiosX3qhU8Sks/HsimL2pVONjw== +"@fluentui/react-utilities@^9.1.1": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@fluentui/react-utilities/-/react-utilities-9.1.1.tgz#5446a7b39f664866fce608846eae6b7935d62dea" + integrity sha512-y3d5ceD6Q4IGVJf/cUIgOnOH7xZf00dMzS9+AzZpj0UoWxTJ/Ix7h0ZTdjmxolkfWnP3zRQ3fRZ1ObBAKU5PEA== dependencies: "@fluentui/keyboard-keys" "^9.0.0" tslib "^2.1.0" -"@griffel/core@^1.5.1", "@griffel/core@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@griffel/core/-/core-1.6.0.tgz#947a88f3e56db8da18f4fc81aee40d2b7a6fd90d" - integrity sha512-mHISgmjUYDC2/tnIfl32fuFlme6QIW81XO+OtRrhy6uxCV6BrBZtMfzlpOt7W/UCac4oHYldnYbpbsP3uYUFNg== +"@griffel/core@^1.7.0", "@griffel/core@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@griffel/core/-/core-1.8.0.tgz#2b798b64b59762eba504e2f2e5286fc93e5c1034" + integrity sha512-Z6gmkTc4031Uxf97caKuTwIlDR6MJ8VKVnbv7Z2koeITZjeRg2iMmo/4rXsS/sLTnbT9vqkDRiemBuseExLG/A== dependencies: "@emotion/hash" "^0.8.0" csstype "^3.0.10" @@ -1826,12 +1832,12 @@ stylis "^4.0.13" tslib "^2.1.0" -"@griffel/react@^1.0.0", "@griffel/react@^1.3.0": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@griffel/react/-/react-1.3.1.tgz#6602aac57ea5aaebae8ea10c31dfb6f0dbb70248" - integrity sha512-R6dqoNFvn8ceaJ3HXvMelmGU23wJfZ9p1xmNnGgJmPENg8YFI0rKBBymU2D4z1ekqnRbUb9qNglCkSQ4AyL/wQ== +"@griffel/react@^1.0.0", "@griffel/react@^1.4.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@griffel/react/-/react-1.4.1.tgz#f9726d9c72054a1100cedef69fb96344ca43f077" + integrity sha512-xKQLWXGE9IhuTAGClseUKn3/luMF5Gb0+0UM1cFuWoVpcfRvHMRZsNkClb0hwhjqR1Y8GLtoO52PM1Q4Z+GQ1w== dependencies: - "@griffel/core" "^1.6.0" + "@griffel/core" "^1.8.0" tslib "^2.1.0" "@humanwhocodes/config-array@^0.10.4": @@ -2070,7 +2076,7 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^27.5.1": +"@jest/types@^27.4.2", "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== @@ -2454,6 +2460,52 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== +"@types/autoprefixer@^9.7.2": + version "9.7.2" + resolved "https://registry.yarnpkg.com/@types/autoprefixer/-/autoprefixer-9.7.2.tgz#64b3251c9675feef5a631b7dd34cfea50a8fdbcc" + integrity sha512-QX7U7YW3zX3ex6MECtWO9folTGsXeP4b8bSjTq3I1ODM+H+sFHwGKuof+T+qBcDClGlCGtDb3SVfiTVfmcxw4g== + dependencies: + "@types/browserslist" "*" + postcss "7.x.x" + +"@types/babel-core@*": + version "6.25.7" + resolved "https://registry.yarnpkg.com/@types/babel-core/-/babel-core-6.25.7.tgz#f9c22d5c085686da2f6ffbdae778edb3e6017671" + integrity sha512-WPnyzNFVRo6bxpr7bcL27qXtNKNQ3iToziNBpibaXHyKGWQA0+tTLt73QQxC/5zzbM544ih6Ni5L5xrck6rGwg== + dependencies: + "@types/babel-generator" "*" + "@types/babel-template" "*" + "@types/babel-traverse" "*" + "@types/babel-types" "*" + "@types/babylon" "*" + +"@types/babel-generator@*": + version "6.25.5" + resolved "https://registry.yarnpkg.com/@types/babel-generator/-/babel-generator-6.25.5.tgz#b02723fd589349b05524376e5530228d3675d878" + integrity sha512-lhbwMlAy5rfWG+R6l8aPtJdEFX/kcv6LMFIuvUb0i89ehqgD24je9YcB+0fRspQhgJGlEsUImxpw4pQeKS/+8Q== + dependencies: + "@types/babel-types" "*" + +"@types/babel-template@*": + version "6.25.2" + resolved "https://registry.yarnpkg.com/@types/babel-template/-/babel-template-6.25.2.tgz#3c4cde02dbcbbf461a58d095a9f69f35eabd5f06" + integrity sha512-QKtDQRJmAz3Y1HSxfMl0syIHebMc/NnOeH/8qeD0zjgU2juD0uyC922biMxCy5xjTNvHinigML2l8kxE8eEBmw== + dependencies: + "@types/babel-types" "*" + "@types/babylon" "*" + +"@types/babel-traverse@*": + version "6.25.7" + resolved "https://registry.yarnpkg.com/@types/babel-traverse/-/babel-traverse-6.25.7.tgz#bc75fce23d8394534562a36a32dec94a54d11835" + integrity sha512-BeQiEGLnVzypzBdsexEpZAHUx+WucOMXW6srEWDkl4SegBlaCy+iBvRO+4vz6EZ+BNQg22G4MCdDdvZxf+jW5A== + dependencies: + "@types/babel-types" "*" + +"@types/babel-types@*": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.11.tgz#263b113fa396fac4373188d73225297fb86f19a9" + integrity sha512-pkPtJUUY+Vwv6B1inAz55rQvivClHJxc9aVEPPmaq2cbyeMLCiDpbKpcKyX4LAwpNGi+SHBv0tHv6+0gXv0P2A== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -2487,6 +2539,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/babylon@*": + version "6.16.6" + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.6.tgz#a1e7e01567b26a5ebad321a74d10299189d8d932" + integrity sha512-G4yqdVlhr6YhzLXFKy5F7HtRBU8Y23+iWy7UKthMq/OSQnL1hbsoeXESQ2LY8zEDlknipDG3nRGhUC9tkwvy/w== + dependencies: + "@types/babel-types" "*" + "@types/body-parser@*": version "1.19.2" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" @@ -2502,15 +2561,14 @@ dependencies: "@types/node" "*" -"@types/chrome@^0.0.197": - version "0.0.197" - resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.197.tgz#c1b50cdb72ee40f9bc1411506031a9f8a925ab35" - integrity sha512-m1NfS5bOjaypyqQfaX6CxmJodZVcvj5+Mt/K94EBHkflYjPNmXHAzbxfifdLMa0YM3PDyOxohoTS5ug/e6p5jA== +"@types/browserslist@*": + version "4.15.0" + resolved "https://registry.yarnpkg.com/@types/browserslist/-/browserslist-4.15.0.tgz#ba0265b33003a2581df1fc5f483321a30205f2d2" + integrity sha512-h9LyKErRGZqMsHh9bd+FE8yCIal4S0DxKTOeui56VgVXqa66TKiuaIUxCAI7c1O0LjaUzOTcsMyOpO9GetozRA== dependencies: - "@types/filesystem" "*" - "@types/har-format" "*" + browserslist "*" -"@types/connect-history-api-fallback@^1.3.5": +"@types/connect-history-api-fallback@*", "@types/connect-history-api-fallback@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== @@ -2525,6 +2583,18 @@ dependencies: "@types/node" "*" +"@types/craco__craco@^6.4.0": + version "6.4.0" + resolved "https://registry.yarnpkg.com/@types/craco__craco/-/craco__craco-6.4.0.tgz#1666ae0e0a92a0f0d2716e4c0a52bf665fb601b5" + integrity sha512-7PoayuK29F2RjZTRYl1L4urGQWChGpy3eQc+vTkobS2By/PU6tnVlymkfif6DshicZAtPhQ1+R7wiwRclc6laA== + dependencies: + "@jest/types" "^27.4.2" + "@types/autoprefixer" "^9.7.2" + "@types/babel-core" "*" + "@types/eslint" "*" + "@types/webpack" "^4" + "@types/webpack-dev-server" "^3.11.6" + "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -2575,18 +2645,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/filesystem@*": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.32.tgz#307df7cc084a2293c3c1a31151b178063e0a8edf" - integrity sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ== - dependencies: - "@types/filewriter" "*" - -"@types/filewriter@*": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.29.tgz#a48795ecadf957f6c0d10e0c34af86c098fa5bee" - integrity sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ== - "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -2594,17 +2652,12 @@ dependencies: "@types/node" "*" -"@types/har-format@*": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.8.tgz#e6908b76d4c88be3db642846bb8b455f0bfb1c4e" - integrity sha512-OP6L9VuZNdskgNN3zFQQ54ceYD8OLq5IbqO4VK91ORLfOm7WdT/CiT/pHEBSQEqCInJ2y3O6iCm/zGtPElpgJQ== - "@types/html-minifier-terser@^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== -"@types/http-proxy@^1.17.8": +"@types/http-proxy@^1.17.5", "@types/http-proxy@^1.17.8": version "1.17.9" resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== @@ -2630,10 +2683,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*", "@types/jest@^29.1.1": - version "29.1.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.1.1.tgz#cf21a0835a1ba9a30ea1966019f1261c6a114c92" - integrity sha512-U9Ey07dGWl6fUFaIaUQUKWG5NoKi/zizeVQCGV8s4nSU0jPgqphVZvS64+8BtWYvrc3ZGw6wo943NSYPxkrp/g== +"@types/jest@*", "@types/jest@^29.1.2": + version "29.1.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.1.2.tgz#7ad8077043ab5f6c108c8111bcc1d224e5600a87" + integrity sha512-y+nlX0h87U0R+wsGn6EBuoRWYyv3KFtwRNP3QWp9+k2tJ2/bqcGS3UxD7jgT+tiwJWWq3UsyV4Y+T6rsMT4XMg== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -2653,10 +2706,10 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== -"@types/node@*", "@types/node@^18.7.18": - version "18.7.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154" - integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg== +"@types/node@*", "@types/node@^18.11.0": + version "18.11.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.0.tgz#f38c7139247a1d619f6cc6f27b072606af7c289d" + integrity sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2743,11 +2796,21 @@ dependencies: "@types/node" "*" +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/tapable@^1": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" + integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== + "@types/testing-library__jest-dom@^5.9.1": version "5.14.5" resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" @@ -2760,6 +2823,50 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756" integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg== +"@types/uglify-js@*": + version "3.17.1" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5" + integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g== + dependencies: + source-map "^0.6.1" + +"@types/webextension-polyfill@^0.9.1": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@types/webextension-polyfill/-/webextension-polyfill-0.9.1.tgz#fcb5c352e2e461d0287774db89bc326b15b47844" + integrity sha512-6aNzPIhqKlAV9t06nwSH3/veAceYE2dS2RVFZI8V1+UXHqsFNB6cRwxNmheiBvEGRc45E/gyZNzH0xAYIC27KA== + +"@types/webpack-dev-server@^3.11.6": + version "3.11.6" + resolved "https://registry.yarnpkg.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz#d8888cfd2f0630203e13d3ed7833a4d11b8a34dc" + integrity sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ== + dependencies: + "@types/connect-history-api-fallback" "*" + "@types/express" "*" + "@types/serve-static" "*" + "@types/webpack" "^4" + http-proxy-middleware "^1.0.0" + +"@types/webpack-sources@*": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" + integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4": + version "4.41.33" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" + integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== + dependencies: + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + anymatch "^3.0.0" + source-map "^0.6.0" + "@types/ws@^8.5.1": version "8.5.3" resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" @@ -3164,7 +3271,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -3549,6 +3656,16 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browserslist@*: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== + dependencies: + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" + browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.3: version "4.21.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" @@ -3637,6 +3754,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001373: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001382.tgz#4d37f0d0b6fffb826c8e5e1c0f4bf8ce592db949" integrity sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg== +caniuse-lite@^1.0.30001400: + version "1.0.30001423" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001423.tgz#57176d460aa8cd85ee1a72016b961eb9aca55d91" + integrity sha512-09iwWGOlifvE1XuHokFMP7eR38a0JnajoyL3/i87c8ZjRWRrdKo1fqjNfugfBD0UDBIOz0U+jtNhJ0EPm1VleQ== + case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" @@ -4444,6 +4566,11 @@ electron-to-chromium@^1.4.202: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.227.tgz#28e46e2a701fed3188db3ca7bf0a3a475e484046" integrity sha512-I9VVajA3oswIJOUFg2PSBqrHLF5Y+ahIfjOV9+v6uYyBqFZutmPxA6fxocDUUmgwYevRWFu1VjLyVG3w45qa/g== +electron-to-chromium@^1.4.251: + version "1.4.284" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592" + integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== + emittery@^0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" @@ -5481,6 +5608,17 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy-middleware@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz#43700d6d9eecb7419bf086a128d0f7205d9eb665" + integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg== + dependencies: + "@types/http-proxy" "^1.17.5" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + http-proxy-middleware@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" @@ -7778,7 +7916,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^7.0.35: +postcss@7.x.x, postcss@^7.0.35: version "7.0.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== @@ -9166,10 +9304,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.3.tgz#d59344522c4bc464a65a730ac695007fdb66dd88" - integrity sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig== +typescript@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== unbox-primitive@^1.0.2: version "1.0.2" @@ -9244,6 +9382,14 @@ update-browserslist-db@^1.0.5: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -9349,6 +9495,11 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" +webextension-polyfill@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.10.0.tgz#ccb28101c910ba8cf955f7e6a263e662d744dbb8" + integrity sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"