From 32945c7f45faf87315204e66923a95c33cb9d619 Mon Sep 17 00:00:00 2001 From: Hosted Weblate Date: Tue, 7 Mar 2023 09:09:42 +0100 Subject: [PATCH 1/4] translationBot(ui): update translation files Updated by "Cleanup translation files" hook in Weblate. Co-authored-by: Hosted Weblate Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/ Translation: InvokeAI/Web UI --- invokeai/frontend/web/public/locales/es.json | 1 - invokeai/frontend/web/public/locales/he.json | 1 - invokeai/frontend/web/public/locales/it.json | 1 - invokeai/frontend/web/public/locales/nl.json | 1 - invokeai/frontend/web/public/locales/pt_BR.json | 1 - 5 files changed, 5 deletions(-) diff --git a/invokeai/frontend/web/public/locales/es.json b/invokeai/frontend/web/public/locales/es.json index 5081ab0799..a52d9c10ec 100644 --- a/invokeai/frontend/web/public/locales/es.json +++ b/invokeai/frontend/web/public/locales/es.json @@ -363,7 +363,6 @@ "convertToDiffusersHelpText6": "¿Desea transformar este modelo?", "convertToDiffusersSaveLocation": "Guardar ubicación", "v1": "v1", - "v2": "v2", "statusConverting": "Adaptar", "modelConverted": "Modelo adaptado", "sameFolder": "La misma carpeta", diff --git a/invokeai/frontend/web/public/locales/he.json b/invokeai/frontend/web/public/locales/he.json index 0950fb51de..1e760b8edb 100644 --- a/invokeai/frontend/web/public/locales/he.json +++ b/invokeai/frontend/web/public/locales/he.json @@ -92,7 +92,6 @@ "modelThree": "מודל 3", "mergedModelName": "שם מודל ממוזג", "v1": "v1", - "v2": "v2", "invokeRoot": "תיקיית InvokeAI", "customConfig": "תצורה מותאמת אישית", "pathToCustomConfig": "נתיב לתצורה מותאמת אישית", diff --git a/invokeai/frontend/web/public/locales/it.json b/invokeai/frontend/web/public/locales/it.json index 4bf52db853..9bdf5b7798 100644 --- a/invokeai/frontend/web/public/locales/it.json +++ b/invokeai/frontend/web/public/locales/it.json @@ -361,7 +361,6 @@ "convertToDiffusersHelpText5": "Assicurati di avere spazio su disco sufficiente. I modelli generalmente variano tra 4 GB e 7 GB di dimensioni.", "convertToDiffusersHelpText6": "Vuoi convertire questo modello?", "convertToDiffusersSaveLocation": "Ubicazione salvataggio", - "v2": "v2", "inpainting": "v1 Inpainting", "customConfig": "Configurazione personalizzata", "statusConverting": "Conversione in corso", diff --git a/invokeai/frontend/web/public/locales/nl.json b/invokeai/frontend/web/public/locales/nl.json index 4116914132..a8bfceba80 100644 --- a/invokeai/frontend/web/public/locales/nl.json +++ b/invokeai/frontend/web/public/locales/nl.json @@ -364,7 +364,6 @@ "convertToDiffusersHelpText5": "Zorg ervoor dat je genoeg schijfruimte hebt. Modellen nemen gewoonlijk ongeveer 4 - 7 GB ruimte in beslag.", "convertToDiffusersSaveLocation": "Bewaarlocatie", "v1": "v1", - "v2": "v2", "inpainting": "v1-inpainting", "customConfig": "Eigen configuratie", "pathToCustomConfig": "Pad naar eigen configuratie", diff --git a/invokeai/frontend/web/public/locales/pt_BR.json b/invokeai/frontend/web/public/locales/pt_BR.json index fdfe2270bf..3e043d5fcc 100644 --- a/invokeai/frontend/web/public/locales/pt_BR.json +++ b/invokeai/frontend/web/public/locales/pt_BR.json @@ -358,7 +358,6 @@ "convertToDiffusersHelpText6": "Você deseja converter este modelo?", "convertToDiffusersSaveLocation": "Local para Salvar", "v1": "v1", - "v2": "v2", "inpainting": "v1 Inpainting", "customConfig": "Configuração personalizada", "pathToCustomConfig": "Caminho para configuração personalizada", From 01a17773705b0c31471ab4422a832f8c2e9f63ac Mon Sep 17 00:00:00 2001 From: psychedelicious Date: Tue, 7 Mar 2023 09:09:42 +0100 Subject: [PATCH 2/4] translationBot(ui): update translation (Chinese (Traditional)) Currently translated at 4.1% (20 of 480 strings) translationBot(ui): update translation (Portuguese (Brazil)) Currently translated at 97.2% (467 of 480 strings) translationBot(ui): update translation (Dutch) Currently translated at 97.2% (467 of 480 strings) translationBot(ui): update translation (French) Currently translated at 83.1% (399 of 480 strings) Co-authored-by: psychedelicious Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/fr/ Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/nl/ Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/pt_BR/ Translate-URL: https://hosted.weblate.org/projects/invokeai/web-ui/zh_Hant/ Translation: InvokeAI/Web UI --- invokeai/frontend/web/public/locales/fr.json | 4 +- invokeai/frontend/web/public/locales/nl.json | 2 +- .../frontend/web/public/locales/pt_BR.json | 49 +++++++++++++++++-- .../frontend/web/public/locales/zh_Hant.json | 25 +++++++++- 4 files changed, 74 insertions(+), 6 deletions(-) diff --git a/invokeai/frontend/web/public/locales/fr.json b/invokeai/frontend/web/public/locales/fr.json index e1c20f0f8f..472c437702 100644 --- a/invokeai/frontend/web/public/locales/fr.json +++ b/invokeai/frontend/web/public/locales/fr.json @@ -45,7 +45,9 @@ "statusUpscaling": "Mise à échelle", "statusUpscalingESRGAN": "Mise à échelle (ESRGAN)", "statusLoadingModel": "Chargement du modèle", - "statusModelChanged": "Modèle changé" + "statusModelChanged": "Modèle changé", + "discordLabel": "Discord", + "githubLabel": "Github" }, "gallery": { "generations": "Générations", diff --git a/invokeai/frontend/web/public/locales/nl.json b/invokeai/frontend/web/public/locales/nl.json index a8bfceba80..c06eae06a6 100644 --- a/invokeai/frontend/web/public/locales/nl.json +++ b/invokeai/frontend/web/public/locales/nl.json @@ -302,7 +302,7 @@ "name": "Naam", "nameValidationMsg": "Geef een naam voor je model", "description": "Beschrijving", - "descriptionValidationMsg": "Voeg een beschrijving toe voor je model", + "descriptionValidationMsg": "Voeg een beschrijving toe voor je model.", "config": "Configuratie", "configValidationMsg": "Pad naar het configuratiebestand van je model.", "modelLocation": "Locatie model", diff --git a/invokeai/frontend/web/public/locales/pt_BR.json b/invokeai/frontend/web/public/locales/pt_BR.json index 3e043d5fcc..7d433aa430 100644 --- a/invokeai/frontend/web/public/locales/pt_BR.json +++ b/invokeai/frontend/web/public/locales/pt_BR.json @@ -380,7 +380,19 @@ "allModels": "Todos os Modelos", "repoIDValidationMsg": "Repositório Online do seu Modelo", "convert": "Converter", - "convertToDiffusersHelpText2": "Este processo irá substituir sua entrada de Gerenciador de Modelos por uma versão Diffusers do mesmo modelo." + "convertToDiffusersHelpText2": "Este processo irá substituir sua entrada de Gerenciador de Modelos por uma versão Diffusers do mesmo modelo.", + "mergedModelCustomSaveLocation": "Caminho Personalizado", + "mergedModelSaveLocation": "Local de Salvamento", + "interpolationType": "Tipo de Interpolação", + "ignoreMismatch": "Ignorar Divergências entre Modelos Selecionados", + "invokeAIFolder": "Pasta Invoke AI", + "weightedSum": "Soma Ponderada", + "sigmoid": "Sigmóide", + "inverseSigmoid": "Sigmóide Inversa", + "modelMergeHeaderHelp1": "Você pode mesclar até três modelos diferentes para criar uma mistura que atenda às suas necessidades.", + "modelMergeInterpAddDifferenceHelp": "Neste modo, o Modelo 3 é primeiro subtraído do Modelo 2. A versão resultante é mesclada com o Modelo 1 com a taxa alpha definida acima.", + "modelMergeAlphaHelp": "Alpha controla a força da mistura dos modelos. Valores de alpha mais baixos resultam em uma influência menor do segundo modelo.", + "modelMergeHeaderHelp2": "Apenas Diffusers estão disponíveis para mesclagem. Se você deseja mesclar um modelo de checkpoint, por favor, converta-o para Diffusers primeiro." }, "parameters": { "images": "Imagems", @@ -440,7 +452,22 @@ "info": "Informações", "deleteImage": "Apagar Imagem", "initialImage": "Imagem inicial", - "showOptionsPanel": "Mostrar Painel de Opções" + "showOptionsPanel": "Mostrar Painel de Opções", + "vSymmetryStep": "V Passo de Simetria", + "hSymmetryStep": "H Passo de Simetria", + "symmetry": "Simetria", + "copyImage": "Copiar imagem", + "negativePrompts": "Indicações negativas", + "hiresStrength": "Força da Alta Resolução", + "denoisingStrength": "A força de remoção de ruído", + "imageToImage": "Imagem para Imagem", + "cancel": { + "setType": "Definir tipo de cancelamento", + "isScheduled": "Cancelando", + "schedule": "Cancelar após a iteração atual", + "immediate": "Cancelar imediatamente" + }, + "general": "Geral" }, "settings": { "models": "Modelos", @@ -453,7 +480,8 @@ "resetWebUI": "Reiniciar Interface", "resetWebUIDesc1": "Reiniciar a interface apenas reinicia o cache local do broswer para imagens e configurações lembradas. Não apaga nenhuma imagem do disco.", "resetWebUIDesc2": "Se as imagens não estão aparecendo na galeria ou algo mais não está funcionando, favor tentar reiniciar antes de postar um problema no GitHub.", - "resetComplete": "A interface foi reiniciada. Atualize a página para carregar." + "resetComplete": "A interface foi reiniciada. Atualize a página para carregar.", + "useSlidersForAll": "Usar deslizadores para todas as opções" }, "toast": { "tempFoldersEmptied": "Pasta de Arquivos Temporários Esvaziada", @@ -545,5 +573,20 @@ "betaDarkenOutside": "Escurecer Externamente", "betaLimitToBox": "Limitar Para a Caixa", "betaPreserveMasked": "Preservar Máscarado" + }, + "tooltip": { + "feature": { + "seed": "O valor da semente afeta o ruído inicial a partir do qual a imagem é formada. Você pode usar as sementes já existentes de imagens anteriores. 'Limiar de ruído' é usado para mitigar artefatos em valores CFG altos (experimente a faixa de 0-10), e o Perlin para adicionar ruído Perlin durante a geração: ambos servem para adicionar variação às suas saídas.", + "gallery": "A galeria exibe as gerações da pasta de saída conforme elas são criadas. As configurações são armazenadas em arquivos e acessadas pelo menu de contexto.", + "other": "Essas opções ativam modos alternativos de processamento para o Invoke. 'Seamless tiling' criará padrões repetidos na saída. 'High resolution' é uma geração em duas etapas com img2img: use essa configuração quando desejar uma imagem maior e mais coerente sem artefatos. Levará mais tempo do que o txt2img usual.", + "boundingBox": "A caixa delimitadora é a mesma que as configurações de largura e altura para Texto para Imagem ou Imagem para Imagem. Apenas a área na caixa será processada.", + "upscale": "Use o ESRGAN para ampliar a imagem imediatamente após a geração.", + "seamCorrection": "Controla o tratamento das emendas visíveis que ocorrem entre as imagens geradas no canvas.", + "faceCorrection": "Correção de rosto com GFPGAN ou Codeformer: o algoritmo detecta rostos na imagem e corrige quaisquer defeitos. Um valor alto mudará mais a imagem, resultando em rostos mais atraentes. Codeformer com uma fidelidade maior preserva a imagem original às custas de uma correção de rosto mais forte.", + "prompt": "Este é o campo de prompt. O prompt inclui objetos de geração e termos estilísticos. Você também pode adicionar peso (importância do token) no prompt, mas comandos e parâmetros de CLI não funcionarão.", + "infillAndScaling": "Gerencie os métodos de preenchimento (usados em áreas mascaradas ou apagadas do canvas) e a escala (útil para tamanhos de caixa delimitadora pequenos).", + "imageToImage": "Image to Image carrega qualquer imagem como inicial, que é então usada para gerar uma nova junto com o prompt. Quanto maior o valor, mais a imagem resultante mudará. Valores de 0.0 a 1.0 são possíveis, a faixa recomendada é de 0.25 a 0.75", + "variations": "Experimente uma variação com um valor entre 0,1 e 1,0 para mudar o resultado para uma determinada semente. Variações interessantes da semente estão entre 0,1 e 0,3." + } } } diff --git a/invokeai/frontend/web/public/locales/zh_Hant.json b/invokeai/frontend/web/public/locales/zh_Hant.json index 0967ef424b..b0ae670e01 100644 --- a/invokeai/frontend/web/public/locales/zh_Hant.json +++ b/invokeai/frontend/web/public/locales/zh_Hant.json @@ -1 +1,24 @@ -{} +{ + "common": { + "nodes": "節點", + "img2img": "圖片轉圖片", + "langSimplifiedChinese": "簡體中文", + "statusError": "錯誤", + "statusDisconnected": "已中斷連線", + "statusConnected": "已連線", + "back": "返回", + "load": "載入", + "close": "關閉", + "langEnglish": "英語", + "settingsLabel": "設定", + "upload": "上傳", + "langArabic": "阿拉伯語", + "greenTheme": "綠色", + "lightTheme": "淺色", + "darkTheme": "深色", + "discordLabel": "Discord", + "nodesDesc": "使用Node生成圖像的系統正在開發中。敬請期待有關於這項功能的更新。", + "reportBugLabel": "回報錯誤", + "githubLabel": "GitHub" + } +} From 3e4c10ef9c2568f199069bf74be1bdc304eb2686 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Tue, 7 Mar 2023 21:56:01 +1100 Subject: [PATCH 3/4] docs(ui): update readme --- invokeai/frontend/web/README.md | 41 +++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/invokeai/frontend/web/README.md b/invokeai/frontend/web/README.md index a3f0d7d8e7..ef8c503550 100644 --- a/invokeai/frontend/web/README.md +++ b/invokeai/frontend/web/README.md @@ -1,20 +1,43 @@ -# InvokeAI UI dev setup +# InvokeAI Web UI -The UI is in `invokeai/frontend`. +The UI is a fairly straightforward Typescript React app. The only really fancy stuff is the Unified Canvas. -## Environment set up +Code in `invokeai/frontend/web/` if you want to have a look. -Install [node](https://nodejs.org/en/download/) (includes npm) and -[yarn](https://yarnpkg.com/getting-started/install). +## Details -From `invokeai/frontend/` run `yarn install --immutable` to get everything set up. +State management is Redux via [Redux Toolkit](https://github.com/reduxjs/redux-toolkit). Communication with server is a mix of HTTP and [socket.io](https://github.com/socketio/socket.io-client) (with a custom redux middleware to help). -## Dev +[Chakra-UI](https://github.com/chakra-ui/chakra-ui) for components and styling. + +[Konva](https://github.com/konvajs/react-konva) for the canvas, but we are pushing the limits of what is feasible with it (and HTML canvas in general). We plan to rebuild it with [PixiJS](https://github.com/pixijs/pixijs) to take advantage of WebGL's improved raster handling. + +[Vite](https://vitejs.dev/) for bundling. + +Localisation is via [i18next](https://github.com/i18next/react-i18next), but translation happens on our [Weblate](https://hosted.weblate.org/engage/invokeai/) project. Only the English source strings should be changed on this repo. + +## Contributing + +Thanks for your interest in contributing to the InvokeAI Web UI! + +We encourage you to ping @psychedelicious and @blessedcoolant on [Discord](https://discord.gg/ZmtBAhwWhy) if you want to contribute, just to touch base and ensure your work doesn't conflict with anything else going on. The project is very active. + +### Dev Environment + +Install [node](https://nodejs.org/en/download/) and [yarn classic](https://classic.yarnpkg.com/lang/en/). + +From `invokeai/frontend/web/` run `yarn install` to get everything set up. + +Start everything in dev mode: 1. Start the dev server: `yarn dev` 2. Start the InvokeAI UI per usual: `invokeai --web` 3. Point your browser to the dev server address e.g. `http://localhost:5173/` -To build for dev: `yarn build-dev` +### Production builds -To build for production: `yarn build` +For a number of technical and logistical reasons, we need to commit UI build artefacts to the repo. + +If you submit a PR, there is a good chance we will ask you to include a separate commit with a build of the app. + +To build for production, run `yarn build`. From d9ebdd2684875621fec054eddb1663808e61329e Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Tue, 7 Mar 2023 21:56:26 +1100 Subject: [PATCH 4/4] build(ui): use concurrently to run dev --- invokeai/frontend/web/package.json | 7 +++-- invokeai/frontend/web/yarn.lock | 46 ++++++++++++++++++++++++++++-- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/invokeai/frontend/web/package.json b/invokeai/frontend/web/package.json index 99c543e80e..d61c46a2d3 100644 --- a/invokeai/frontend/web/package.json +++ b/invokeai/frontend/web/package.json @@ -4,14 +4,14 @@ "version": "0.0.1", "scripts": { "prepare": "cd ../../../ && husky install invokeai/frontend/web/.husky", - "dev": "vite dev", - "build": "npm run lint && vite build", + "dev": "concurrently \"vite dev\" \"yarn run theme:watch\"", + "build": "yarn run lint && vite build", "preview": "vite preview", "lint:madge": "madge --circular src/main.tsx", "lint:eslint": "eslint --max-warnings=0", "lint:prettier": "prettier --check .", "lint:tsc": "tsc --noEmit", - "lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:tsc && npm run lint:madge", + "lint": "yarn run lint:eslint && yarn run lint:prettier && yarn run lint:tsc && yarn run lint:madge", "fix": "eslint --fix . && prettier --loglevel warn --write . && tsc --noEmit", "lint-staged": "lint-staged", "postinstall": "patch-package && yarn run theme", @@ -83,6 +83,7 @@ "@typescript-eslint/parser": "^5.52.0", "@vitejs/plugin-react-swc": "^3.2.0", "babel-plugin-transform-imports": "^2.0.0", + "concurrently": "^7.6.0", "eslint": "^8.34.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-prettier": "^4.2.1", diff --git a/invokeai/frontend/web/yarn.lock b/invokeai/frontend/web/yarn.lock index 0f9ff545d6..1a40014efe 100644 --- a/invokeai/frontend/web/yarn.lock +++ b/invokeai/frontend/web/yarn.lock @@ -2107,6 +2107,21 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +concurrently@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-7.6.0.tgz#531a6f5f30cf616f355a4afb8f8fcb2bba65a49a" + integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw== + dependencies: + chalk "^4.1.0" + date-fns "^2.29.1" + lodash "^4.17.21" + rxjs "^7.0.0" + shell-quote "^1.7.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^17.3.1" + configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -2191,6 +2206,11 @@ csstype@^3.0.11, csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== +date-fns@^2.29.1: + version "2.29.3" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + dateformat@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-5.0.3.tgz#fe2223eff3cc70ce716931cb3038b59a9280696e" @@ -4833,7 +4853,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^7.8.0: +rxjs@^7.0.0, rxjs@^7.8.0: version "7.8.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== @@ -4916,6 +4936,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shell-quote@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== + side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -5012,6 +5037,11 @@ source-map@^0.7.4: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" + integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg== + stream-to-array@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/stream-to-array/-/stream-to-array-2.3.0.tgz#bbf6b39f5f43ec30bc71babcb37557acecf34353" @@ -5151,6 +5181,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -5225,6 +5262,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + ts-graphviz@^1.5.0: version "1.5.5" resolved "https://registry.yarnpkg.com/ts-graphviz/-/ts-graphviz-1.5.5.tgz#b5e9079c18289fb36b6b53f3d81da96445c37514" @@ -5628,7 +5670,7 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs@^17.5.1: +yargs@^17.3.1, yargs@^17.5.1: version "17.7.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==