From ca556c5ec57e8f434668625a1f2a9294e8394428 Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Thu, 27 Oct 2022 10:43:32 -0400 Subject: [PATCH 01/11] git: fix `unstageAll` The commit fixes `unstage all` to properly reset the index rather than report errors or discard changes. Signed-off-by: vince-fugnitto --- packages/git/src/browser/git-scm-provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/git/src/browser/git-scm-provider.ts b/packages/git/src/browser/git-scm-provider.ts index 0b2a9ce0f5833..9bd1ef446e534 100644 --- a/packages/git/src/browser/git-scm-provider.ts +++ b/packages/git/src/browser/git-scm-provider.ts @@ -319,7 +319,7 @@ export class GitScmProvider implements ScmProvider { try { const { repository, stagedChanges } = this; const uris = stagedChanges.map(c => c.uri); - await this.git.unstage(repository, uris); + await this.git.unstage(repository, uris, { reset: 'index' }); } catch (error) { this.gitErrorHandler.handleError(error); } From 7f4a7d8aa5a775b2655880ae7d2288ac413310fa Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Thu, 27 Oct 2022 13:32:52 +0000 Subject: [PATCH 02/11] Translation update for version 1.31.0 --- packages/core/i18n/nls.cs.json | 3 ++- packages/core/i18n/nls.de.json | 3 ++- packages/core/i18n/nls.es.json | 3 ++- packages/core/i18n/nls.fr.json | 37 ++++++++++++++++--------------- packages/core/i18n/nls.hu.json | 3 ++- packages/core/i18n/nls.it.json | 3 ++- packages/core/i18n/nls.ja.json | 3 ++- packages/core/i18n/nls.json | 3 ++- packages/core/i18n/nls.pl.json | 3 ++- packages/core/i18n/nls.pt-br.json | 3 ++- packages/core/i18n/nls.pt-pt.json | 3 ++- packages/core/i18n/nls.ru.json | 3 ++- packages/core/i18n/nls.zh-cn.json | 3 ++- 13 files changed, 43 insertions(+), 30 deletions(-) diff --git a/packages/core/i18n/nls.cs.json b/packages/core/i18n/nls.cs.json index d263c64fe174f..d4493e3cdc7df 100644 --- a/packages/core/i18n/nls.cs.json +++ b/packages/core/i18n/nls.cs.json @@ -65,6 +65,8 @@ "compound-cycle": "Konfigurace spuštění '{0}' obsahuje cyklus se sebou samým", "continueAll": "Pokračovat ve všem", "copyExpressionValue": "Kopírování hodnoty výrazu", + "debugSessionActive": "Je aktivní relace ladění, jste si jisti, že ji chcete zastavit?", + "debugSessionActiveMultiple": "Jsou aktivní relace ladění, jste si jisti, že je chcete zastavit?", "disassembly-view": { "show-source-code": "Zobrazení zdrojového kódu v zobrazení disassembleru." }, @@ -493,7 +495,6 @@ "messageWarning": " Vzor hostitele {0} byl změněn na `{1}`; změna vzoru může vést k bezpečnostním zranitelnostem. Další informace naleznete v části `{2}`." }, "workspace": { - "closeWorkspace": "Opravdu chcete zavřít pracovní prostor?", "compareWithEachOther": "Vzájemné porovnání", "confirmDeletePermanently.description": "Nepodařilo se odstranit položku \"{0}\" pomocí Koše. Chcete jej místo toho trvale odstranit?", "confirmDeletePermanently.solution": "Používání Koše můžete zakázat v předvolbách.", diff --git a/packages/core/i18n/nls.de.json b/packages/core/i18n/nls.de.json index b2f8ae2027346..a704e8d4bf26d 100644 --- a/packages/core/i18n/nls.de.json +++ b/packages/core/i18n/nls.de.json @@ -65,6 +65,8 @@ "compound-cycle": "Startkonfiguration '{0}' enthält einen Zyklus mit sich selbst", "continueAll": "Alle fortsetzen", "copyExpressionValue": "Ausdruckswert kopieren", + "debugSessionActive": "Es gibt eine aktive Debug-Sitzung. Sind Sie sicher, dass Sie sie beenden wollen?", + "debugSessionActiveMultiple": "Es gibt aktive Debug-Sitzungen. Sind Sie sicher, dass Sie diese beenden wollen?", "disassembly-view": { "show-source-code": "Quellcode in der Disassemblierungsansicht anzeigen." }, @@ -493,7 +495,6 @@ "messageWarning": " Das Host-Muster des {0}-Endpunkts wurde in `{1}` geändert; die Änderung des Musters kann zu Sicherheitslücken führen. Siehe `{2}` für weitere Informationen." }, "workspace": { - "closeWorkspace": "Wollen Sie den Arbeitsbereich wirklich schließen?", "compareWithEachOther": "Miteinander vergleichen", "confirmDeletePermanently.description": "Das Löschen von \"{0}\" über den Papierkorb ist fehlgeschlagen. Möchten Sie stattdessen dauerhaft löschen?", "confirmDeletePermanently.solution": "Sie können die Verwendung des Papierkorbs in den Einstellungen deaktivieren.", diff --git a/packages/core/i18n/nls.es.json b/packages/core/i18n/nls.es.json index e8d45ee0a6544..003066635b38e 100644 --- a/packages/core/i18n/nls.es.json +++ b/packages/core/i18n/nls.es.json @@ -65,6 +65,8 @@ "compound-cycle": "La configuración de lanzamiento '{0}' contiene un ciclo consigo mismo", "continueAll": "Continuar todo", "copyExpressionValue": "Copiar el valor de la expresión", + "debugSessionActive": "Hay una sesión de depuración activa, ¿está seguro de que quiere detenerla?", + "debugSessionActiveMultiple": "Hay sesiones de depuración activas, ¿estás seguro de que quieres detenerlas?", "disassembly-view": { "show-source-code": "Mostrar el código fuente en la vista de desensamblaje." }, @@ -493,7 +495,6 @@ "messageWarning": " El patrón de host del punto final {0} se ha cambiado a `{1}`; el cambio de patrón puede dar lugar a vulnerabilidades de seguridad. Consulte `{2}` para obtener más información." }, "workspace": { - "closeWorkspace": "¿Realmente quieres cerrar el espacio de trabajo?", "compareWithEachOther": "Comparar con los demás", "confirmDeletePermanently.description": "No se ha podido eliminar \"{0}\" con la papelera. Quieres eliminar permanentemente en su lugar?", "confirmDeletePermanently.solution": "Puedes desactivar el uso de la papelera en las preferencias.", diff --git a/packages/core/i18n/nls.fr.json b/packages/core/i18n/nls.fr.json index 3f412b8568025..f19e207083714 100644 --- a/packages/core/i18n/nls.fr.json +++ b/packages/core/i18n/nls.fr.json @@ -48,7 +48,7 @@ "offline": "Hors ligne", "proxySupportFallback": "Active la prise en charge du proxy pour les extensions, se rabat sur les options de requête, si aucun proxy n'est trouvé.", "quitMessage": "Les modifications non sauvegardées ne seront pas enregistrées.", - "quitTitle": "Tu es sûr de vouloir arrêter ?", + "quitTitle": "Tu es sûr de vouloir arrêter?", "resetWorkbenchLayout": "Réinitialisation de la disposition de l'établi", "sashDelay": "Contrôle le délai de rétroaction du survol en millisecondes de la zone de glissement entre les vues/éditeurs.", "sashSize": "Contrôle la taille de la zone de retour en pixels de la zone de glissement entre les vues/éditeurs. Définissez une valeur plus grande si nécessaire.", @@ -65,6 +65,8 @@ "compound-cycle": "La configuration de lancement '{0}' contient un cycle avec elle-même", "continueAll": "Continuer tout", "copyExpressionValue": "Copier la valeur de l'expression", + "debugSessionActive": "Il y a une session de débogage active, êtes-vous sûr de vouloir l'arrêter?", + "debugSessionActiveMultiple": "Il y a des sessions de débogage actives, êtes-vous sûr de vouloir les arrêter?", "disassembly-view": { "show-source-code": "Afficher le code source en vue du désassemblage." }, @@ -168,7 +170,7 @@ }, "fileSystem": { "fileResource": { - "overWriteBody": "Voulez-vous écraser les modifications apportées à '{0}' sur le système de fichiers ?" + "overWriteBody": "Voulez-vous écraser les modifications apportées à '{0}' sur le système de fichiers?" } }, "filesystem": { @@ -182,7 +184,7 @@ "navigateUp": "Naviguer vers le haut d'un répertoire" }, "fileResource": { - "binaryFileQuery": "L'ouvrir peut prendre un certain temps et peut rendre l'IDE non réactif. Voulez-vous ouvrir '{0}' de toute façon ?", + "binaryFileQuery": "L'ouvrir peut prendre un certain temps et peut rendre l'IDE non réactif. Voulez-vous ouvrir '{0}' de toute façon?", "binaryTitle": "Le fichier est soit binaire, soit utilise un encodage de texte non pris en charge.", "largeFileTitle": "Le fichier est trop volumineux ({0}).", "overwriteTitle": "Le fichier '{0}' a été modifié sur le système de fichiers." @@ -234,7 +236,7 @@ "editKeybindingTitle": "Modifier le raccourci clavier pour {0}", "keybindingCollidesValidation": "Les combinaisons de touches sont actuellement en conflit", "requiredKeybindingValidation": "la valeur du keybinding est requise", - "resetKeybindingConfirmation": "Voulez-vous vraiment réinitialiser ce raccourci clavier à sa valeur par défaut ?", + "resetKeybindingConfirmation": "Voulez-vous vraiment réinitialiser ce raccourci clavier à sa valeur par défaut?", "resetKeybindingTitle": "Réinitialiser le raccourci clavier pour {0}", "resetMultipleKeybindingsWarning": "Si plusieurs combinaisons de touches existent pour cette commande, elles seront toutes réinitialisées." }, @@ -445,8 +447,8 @@ "shellOsx": "Le chemin de l'interpréteur de commandes que le terminal utilise sous macOS (par défaut : '{0}'}).", "shellWindows": "Le chemin du shell que le terminal utilise sous Windows. (par défaut : '{0}').", "terminate": "Fin", - "terminateActive": "Voulez-vous mettre fin à la session active du terminal ?", - "terminateActiveMultiple": "Voulez-vous mettre fin aux {0} sessions actives du terminal ?" + "terminateActive": "Voulez-vous mettre fin à la session active du terminal?", + "terminateActiveMultiple": "Voulez-vous mettre fin aux {0} sessions actives du terminal?" }, "toolbar": { "addCommand": "Ajouter une commande à la barre d'outils", @@ -465,7 +467,7 @@ "rightColumn": "Colonne de droite", "selectIcon": "Sélectionnez l'icône", "toggleToolbar": "Afficher la barre d'outils", - "toolbarLocationPlaceholder": "Où souhaitez-vous que la commande soit ajoutée ?", + "toolbarLocationPlaceholder": "Où souhaitez-vous que la commande soit ajoutée?", "useDefaultIcon": "Utiliser l'icône par défaut" }, "typehierarchy": { @@ -493,16 +495,15 @@ "messageWarning": " Le modèle d'hôte du point de terminaison {0} a été remplacé par `{1}` ; la modification du modèle peut entraîner des failles de sécurité. Voir `{2}` pour plus d'informations." }, "workspace": { - "closeWorkspace": "Voulez-vous vraiment fermer l'espace de travail ?", "compareWithEachOther": "Comparer entre eux", - "confirmDeletePermanently.description": "Impossible de supprimer \"{0}\" avec la corbeille. Voulez-vous le supprimer définitivement ?", + "confirmDeletePermanently.description": "Impossible de supprimer \"{0}\" avec la corbeille. Voulez-vous le supprimer définitivement?", "confirmDeletePermanently.solution": "Vous pouvez désactiver l'utilisation de la corbeille dans les préférences.", "confirmDeletePermanently.title": "Erreur lors de la suppression d'un fichier", - "confirmMessage.delete": "Voulez-vous vraiment supprimer les fichiers suivants ?", - "confirmMessage.dirtyMultiple": "Voulez-vous vraiment supprimer {0} fichiers avec des modifications non sauvegardées ?", - "confirmMessage.dirtySingle": "Voulez-vous vraiment supprimer {0} avec les modifications non sauvegardées ?", - "confirmMessage.uriMultiple": "Voulez-vous vraiment supprimer tous les {0} fichiers sélectionnés ?", - "confirmMessage.uriSingle": "Voulez-vous vraiment supprimer {0} ?", + "confirmMessage.delete": "Voulez-vous vraiment supprimer les fichiers suivants?", + "confirmMessage.dirtyMultiple": "Voulez-vous vraiment supprimer {0} fichiers avec des modifications non sauvegardées?", + "confirmMessage.dirtySingle": "Voulez-vous vraiment supprimer {0} avec les modifications non sauvegardées?", + "confirmMessage.uriMultiple": "Voulez-vous vraiment supprimer tous les {0} fichiers sélectionnés?", + "confirmMessage.uriSingle": "Voulez-vous vraiment supprimer {0}?", "duplicate": "Duplicate", "failApply": "Impossible d'appliquer les changements au nouveau fichier", "failSaveAs": "Impossible d'exécuter \"{0}\" pour le widget actuel.", @@ -510,16 +511,16 @@ "openRecentPlaceholder": "Tapez le nom de l'espace de travail que vous voulez ouvrir.", "openRecentWorkspace": "Ouvrir l'espace de travail récent...", "preserveWindow": "Permet d'ouvrir les espaces de travail dans la fenêtre actuelle.", - "removeFolder": "Êtes-vous sûr de vouloir supprimer le dossier suivant de l'espace de travail ?", - "removeFolders": "Êtes-vous sûr de vouloir supprimer les dossiers suivants de l'espace de travail ?", + "removeFolder": "Êtes-vous sûr de vouloir supprimer le dossier suivant de l'espace de travail?", + "removeFolders": "Êtes-vous sûr de vouloir supprimer les dossiers suivants de l'espace de travail?", "supportMultiRootWorkspace": "Contrôle si le support de l'espace de travail multi-root est activé.", "trashTitle": "Déplacer {0} vers la corbeille", "trustEmptyWindow": "Contrôle si l'espace de travail vide est fiable ou non par défaut.", "trustEnabled": "Contrôle si la confiance de l'espace de travail est activée ou non. S'il est désactivé, tous les espaces de travail sont fiables.", "trustPrompt": "Contrôle l'affichage de l'invite de démarrage pour la confiance dans un espace de travail.", - "trustRequest": "Une extension demande la confiance dans l'espace de travail mais l'API correspondante n'est pas encore totalement prise en charge. Voulez-vous faire confiance à cet espace de travail ?", + "trustRequest": "Une extension demande la confiance dans l'espace de travail mais l'API correspondante n'est pas encore totalement prise en charge. Voulez-vous faire confiance à cet espace de travail?", "untitled-cleanup": "Il semble y avoir de nombreux fichiers d'espace de travail sans titre. Veuillez vérifier {0} et supprimer tous les fichiers inutilisés.", - "workspaceFolderAdded": "Un espace de travail avec plusieurs racines a été créé. Voulez-vous enregistrer la configuration de votre espace de travail dans un fichier ?", + "workspaceFolderAdded": "Un espace de travail avec plusieurs racines a été créé. Voulez-vous enregistrer la configuration de votre espace de travail dans un fichier?", "workspaceFolderAddedTitle": "Dossier ajouté à l'espace de travail" } } diff --git a/packages/core/i18n/nls.hu.json b/packages/core/i18n/nls.hu.json index b96ca93820d0c..df60fd310db48 100644 --- a/packages/core/i18n/nls.hu.json +++ b/packages/core/i18n/nls.hu.json @@ -65,6 +65,8 @@ "compound-cycle": "Indítási konfiguráció '{0}' tartalmaz egy ciklust önmagával együtt", "continueAll": "Folytassa az összes", "copyExpressionValue": "Kifejezés értékének másolása", + "debugSessionActive": "Aktív hibakeresési munkamenet van, biztos, hogy le akarja állítani?", + "debugSessionActiveMultiple": "Aktív hibakeresési munkamenetek vannak, biztos, hogy le akarja állítani őket?", "disassembly-view": { "show-source-code": "Forráskód megjelenítése szétszerelési nézetben." }, @@ -493,7 +495,6 @@ "messageWarning": " A {0} végpont hoszt mintája `{1}-re` változott; a minta megváltoztatása biztonsági réseket okozhat. További információért lásd a `{2}` című részt." }, "workspace": { - "closeWorkspace": "Tényleg be akarja zárni a munkaterületet?", "compareWithEachOther": "Összehasonlítás egymással", "confirmDeletePermanently.description": "Nem sikerült törölni a \"{0}\" fájlt a Kukában. Szeretné véglegesen törölni?", "confirmDeletePermanently.solution": "A beállítások között letilthatja a Trash használatát.", diff --git a/packages/core/i18n/nls.it.json b/packages/core/i18n/nls.it.json index 4c52e1b4c6acd..0af049bd5087f 100644 --- a/packages/core/i18n/nls.it.json +++ b/packages/core/i18n/nls.it.json @@ -65,6 +65,8 @@ "compound-cycle": "La configurazione di lancio '{0}' contiene un ciclo con se stessa", "continueAll": "Continua tutto", "copyExpressionValue": "Copiare il valore dell'espressione", + "debugSessionActive": "C'è una sessione di debug attiva, sei sicuro di volerla interrompere?", + "debugSessionActiveMultiple": "Ci sono sessioni di debug attive, sei sicuro di volerle interrompere?", "disassembly-view": { "show-source-code": "Mostra il codice sorgente nella vista di disassemblaggio." }, @@ -493,7 +495,6 @@ "messageWarning": " Lo schema dell'host dell'endpoint {0} è stato cambiato in `{1}`; cambiare lo schema può portare a vulnerabilità di sicurezza. Vedere `{2}` per maggiori informazioni." }, "workspace": { - "closeWorkspace": "Vuoi davvero chiudere lo spazio di lavoro?", "compareWithEachOther": "Confrontare con l'altro", "confirmDeletePermanently.description": "Impossibile eliminare \"{0}\" usando il Cestino. Vuoi invece eliminare definitivamente?", "confirmDeletePermanently.solution": "Potete disabilitare l'uso del Cestino nelle preferenze.", diff --git a/packages/core/i18n/nls.ja.json b/packages/core/i18n/nls.ja.json index 03f3759ce801a..e96d6a13d2ddd 100644 --- a/packages/core/i18n/nls.ja.json +++ b/packages/core/i18n/nls.ja.json @@ -65,6 +65,8 @@ "compound-cycle": "起動構成 '{0}' は自分自身とのサイクルを含む", "continueAll": "すべてを続ける", "copyExpressionValue": "コピー式の値", + "debugSessionActive": "デバッグセッションがアクティブになっていますが、本当に停止しますか?", + "debugSessionActiveMultiple": "アクティブなデバッグセッションがありますが、本当に停止しますか?", "disassembly-view": { "show-source-code": "逆アセンブルビューでソースコードを表示する" }, @@ -493,7 +495,6 @@ "messageWarning": " {0}エンドポイントのホストパターンが`{1}`に変更されました。パターンを変更すると、セキュリティ上の脆弱性が発生する可能性があります。 詳しくは `{2}` をご覧ください。" }, "workspace": { - "closeWorkspace": "本当にワークスペースを閉じたいのですか?", "compareWithEachOther": "互いの比較", "confirmDeletePermanently.description": "ゴミ箱を使った「{0}」の削除に失敗しました。代わりに永久に削除しますか?", "confirmDeletePermanently.solution": "環境設定でゴミ箱の使用を無効にすることができます。", diff --git a/packages/core/i18n/nls.json b/packages/core/i18n/nls.json index 2cd69987c7a4a..44621c8121a8b 100644 --- a/packages/core/i18n/nls.json +++ b/packages/core/i18n/nls.json @@ -65,6 +65,8 @@ "compound-cycle": "Launch configuration '{0}' contains a cycle with itself", "continueAll": "Continue All", "copyExpressionValue": "Copy Expression Value", + "debugSessionActive": "There is an active debug session, are you sure you want to stop it?", + "debugSessionActiveMultiple": "There are active debug sessions, are you sure you want to stop them?", "disassembly-view": { "show-source-code": "Show Source Code in Disassembly View." }, @@ -493,7 +495,6 @@ "messageWarning": " The {0} endpoint's host pattern has been changed to `{1}`; changing the pattern can lead to security vulnerabilities. See `{2}` for more information." }, "workspace": { - "closeWorkspace": "Do you really want to close the workspace?", "compareWithEachOther": "Compare with Each Other", "confirmDeletePermanently.description": "Failed to delete \"{0}\" using the Trash. Do you want to permanently delete instead?", "confirmDeletePermanently.solution": "You can disable the use of Trash in the preferences.", diff --git a/packages/core/i18n/nls.pl.json b/packages/core/i18n/nls.pl.json index f9f37f416ffe1..e34a2ab324746 100644 --- a/packages/core/i18n/nls.pl.json +++ b/packages/core/i18n/nls.pl.json @@ -65,6 +65,8 @@ "compound-cycle": "Konfiguracja startowa \"{0}\" zawiera cykl z samym sobą", "continueAll": "Kontynuuj Wszystko", "copyExpressionValue": "Kopiuj wartość wyrażenia", + "debugSessionActive": "Jest aktywna sesja debugowania, czy na pewno chcesz ją zatrzymać?", + "debugSessionActiveMultiple": "Istnieją aktywne sesje debugowania, czy na pewno chcesz je zatrzymać?", "disassembly-view": { "show-source-code": "Pokaż kod źródłowy w widoku demontażu." }, @@ -493,7 +495,6 @@ "messageWarning": " Wzorzec hosta punktu końcowego {0} został zmieniony na `{1}`; zmiana wzorca może prowadzić do luk w zabezpieczeniach. Zobacz `{2}` aby uzyskać więcej informacji." }, "workspace": { - "closeWorkspace": "Czy naprawdę chcesz zamknąć obszar roboczy?", "compareWithEachOther": "Porównaj z innymi", "confirmDeletePermanently.description": "Nie udało się usunąć \"{0}\" za pomocą Kosza. Czy chcesz usunąć go na stałe?", "confirmDeletePermanently.solution": "Możesz wyłączyć korzystanie z Kosza w preferencjach.", diff --git a/packages/core/i18n/nls.pt-br.json b/packages/core/i18n/nls.pt-br.json index 18c5350ccf078..a9c8d1118aa77 100644 --- a/packages/core/i18n/nls.pt-br.json +++ b/packages/core/i18n/nls.pt-br.json @@ -65,6 +65,8 @@ "compound-cycle": "A configuração de lançamento '{0}' contém um ciclo consigo mesmo", "continueAll": "Continuar Todos", "copyExpressionValue": "Valor de Expressão de Cópia", + "debugSessionActive": "Há uma sessão de depuração ativa, você tem certeza de que quer interrompê-la?", + "debugSessionActiveMultiple": "Há sessões de depuração ativas, você tem certeza de que quer interrompê-las?", "disassembly-view": { "show-source-code": "Mostrar Código Fonte em Vista de Desmontagem." }, @@ -493,7 +495,6 @@ "messageWarning": " O padrão de host do terminal {0} foi alterado para `{1}'; mudar o padrão pode levar a vulnerabilidades de segurança. Veja `{2}` para mais informações." }, "workspace": { - "closeWorkspace": "Você realmente quer fechar o espaço de trabalho?", "compareWithEachOther": "Compare uns com os outros", "confirmDeletePermanently.description": "Falha em excluir \"{0}\" usando o Lixo. Você quer excluir permanentemente em seu lugar?", "confirmDeletePermanently.solution": "Você pode desativar o uso de Lixo nas preferências.", diff --git a/packages/core/i18n/nls.pt-pt.json b/packages/core/i18n/nls.pt-pt.json index e9d771490cff4..049406a788832 100644 --- a/packages/core/i18n/nls.pt-pt.json +++ b/packages/core/i18n/nls.pt-pt.json @@ -65,6 +65,8 @@ "compound-cycle": "Configuração de lançamento '{0}' contém um ciclo consigo mesmo", "continueAll": "Continuar Tudo", "copyExpressionValue": "Valor de Expressão da Cópia", + "debugSessionActive": "Há uma sessão de depuração activa, tem a certeza de que a quer parar?", + "debugSessionActiveMultiple": "Existem sessões de depuração activas, tem a certeza de que as quer parar?", "disassembly-view": { "show-source-code": "Mostrar Código Fonte em Vista de Desmontagem." }, @@ -493,7 +495,6 @@ "messageWarning": " O padrão de alojamento do terminal {0} foi alterado para `{1}`; alterar o padrão pode levar a vulnerabilidades de segurança. Ver `{2}` para mais informações." }, "workspace": { - "closeWorkspace": "Quer realmente fechar o espaço de trabalho?", "compareWithEachOther": "Comparar uns com os outros", "confirmDeletePermanently.description": "Falha em apagar \"{0}\" utilizando o Lixo. Pretende, em vez disso, apagar permanentemente?", "confirmDeletePermanently.solution": "Pode desactivar a utilização de Lixo nas preferências.", diff --git a/packages/core/i18n/nls.ru.json b/packages/core/i18n/nls.ru.json index 0e2d260b8eb86..8e1606ad56aa6 100644 --- a/packages/core/i18n/nls.ru.json +++ b/packages/core/i18n/nls.ru.json @@ -65,6 +65,8 @@ "compound-cycle": "Конфигурация запуска '{0}' содержит цикл с самим собой", "continueAll": "Продолжить все", "copyExpressionValue": "Копирование значения выражения", + "debugSessionActive": "Существует активный сеанс отладки, вы уверены, что хотите остановить его?", + "debugSessionActiveMultiple": "Существуют активные сеансы отладки, вы уверены, что хотите остановить их?", "disassembly-view": { "show-source-code": "Показать исходный код в режиме просмотра разборки." }, @@ -493,7 +495,6 @@ "messageWarning": " Шаблон хоста конечной точки {0} был изменен на `{1}`; изменение шаблона может привести к уязвимостям безопасности. Для получения дополнительной информации смотрите `{2}`." }, "workspace": { - "closeWorkspace": "Вы действительно хотите закрыть рабочую область?", "compareWithEachOther": "Сравните друг с другом", "confirmDeletePermanently.description": "Не удалось удалить \"{0}\" с помощью Корзины. Вы хотите удалить его навсегда?", "confirmDeletePermanently.solution": "Вы можете отключить использование корзины в настройках.", diff --git a/packages/core/i18n/nls.zh-cn.json b/packages/core/i18n/nls.zh-cn.json index cc75582385bf4..da2bc90239dc5 100644 --- a/packages/core/i18n/nls.zh-cn.json +++ b/packages/core/i18n/nls.zh-cn.json @@ -65,6 +65,8 @@ "compound-cycle": "启动配置'{0}'包含一个与自己的循环", "continueAll": "继续所有", "copyExpressionValue": "复制表达式的值", + "debugSessionActive": "有一个活跃的调试会话,你确定你要停止它吗?", + "debugSessionActiveMultiple": "有活跃的调试会话,你确定你要停止它们吗?", "disassembly-view": { "show-source-code": "在反汇编视图中显示源代码。" }, @@ -493,7 +495,6 @@ "messageWarning": " {0}端点的主机模式已改为`{1}`;改变模式可能导致安全漏洞。 参见`{2}`以了解更多信息。" }, "workspace": { - "closeWorkspace": "你真的想关闭工作区吗?", "compareWithEachOther": "互相比较", "confirmDeletePermanently.description": "使用垃圾箱删除\"{0}\"失败。你想永久删除吗?", "confirmDeletePermanently.solution": "你可以在偏好设置中禁用垃圾桶的使用。", From e545374941fe92a115c72d4b087394a015ffb60a Mon Sep 17 00:00:00 2001 From: Vincent Fugnitto Date: Thu, 27 Oct 2022 14:41:05 -0400 Subject: [PATCH 03/11] docs: update changelog for `1.31.0` (#11804) * docs: update changelog for `v1.31.1` The commit updates the `changelog` for the `v1.31.0` release to highlight notable new features, fixes, and any potential breaking changes. The change also includes misc typo fixes. Signed-off-by: vince-fugnitto --- CHANGELOG.md | 36 +++++++++++++++---- .../message-rpc/rpc-message-encoder.spec.ts | 2 +- .../src/plugin/preference-registry.spec.ts | 4 +-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 070910beda12b..51916eced7c80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,22 +4,44 @@ - [Previous Changelogs](https://github.com/eclipse-theia/theia/tree/master/doc/changelogs/) -## v1.31.0 - -- [plugin] added support for the `InlineValues` feature [#11729](https://github.com/eclipse-theia/theia/pull/11729) - Contributed on behalf of STMicroelectronics -- [plugin] Added support for `resolveTreeItem` of `TreeDataProvider` [#11708](https://github.com/eclipse-theia/theia/pull/11708) - Contributed on behalf of STMicroelectronics +## v1.31.0 - 10/27/2022 + +- [debug] added confirmation message for debug exit [#11546](https://github.com/eclipse-theia/theia/pull/11546) +- [messages] fixed transparent notifications issue [#11714](https://github.com/eclipse-theia/theia/pull/11714) +- [monaco] fixed issue with `editor-*` preferences not being applied properly [#11711](https://github.com/eclipse-theia/theia/pull/11711) +- [output] fixed issue with channel selector [#11727](https://github.com/eclipse-theia/theia/pull/11727) +- [plugin] added handling to check if commands registered via `registerTextEditorCommand` are declared in the `package.json` [#11764](https://github.com/eclipse-theia/theia/pull/11764) +- [plugin] added stubs for the `Tests` VS Code API [#11717](https://github.com/eclipse-theia/theia/pull/11717) +- [plugin] added support for the `InlayHints` VS Code API [#11736](https://github.com/eclipse-theia/theia/pull/11736) +- [plugin] added support for the `InlineValues` VS Code API [#11729](https://github.com/eclipse-theia/theia/pull/11729) - Contributed on behalf of STMicroelectronics +- [plugin] added support for the `RelativePattern.baseUri` VS Code API [#11670](https://github.com/eclipse-theia/theia/pull/11670) +- [plugin] added support for the `Terminal.state` VS Code API [#11733](https://github.com/eclipse-theia/theia/pull/11733) +- [plugin] added support for the `TerminalLinkProviders` VS Code API [#11552](https://github.com/eclipse-theia/theia/pull/11552) - Contributed on behalf of STMicroelectronics +- [plugin] added support for the `TerminalOptions.hideFromUser` VS Code API [#11630](https://github.com/eclipse-theia/theia/pull/11630) +- [plugin] added support for the `TreeDataProvider.resolveTreeItem` VS Code API [#11708](https://github.com/eclipse-theia/theia/pull/11708) - Contributed on behalf of STMicroelectronics +- [plugin] added support for the `TypeHierarchy` VS Code API [#11694](https://github.com/eclipse-theia/theia/pull/11694) +- [plugin] fixed issues when registering VS Code menus to corresponding internal menus [#11741](https://github.com/eclipse-theia/theia/pull/11741) +- [plugin] improved extensibility of `HostedPluginSupport` [#11755](https://github.com/eclipse-theia/theia/pull/11755) +- [plugin] improved support for VS Code web extensions [#11752](https://github.com/eclipse-theia/theia/pull/11752) +- [plugin] introduced `theia-extra.d.ts` for plugin APIs specific to Theia [#11684](https://github.com/eclipse-theia/theia/pull/11684) +- [process] fixed issue where an incorrect terminal is attached when switching workspaces [#11440](https://github.com/eclipse-theia/theia/pull/11440) +- [repo] added automated license check reviews through `dash-licenses` [#11766](https://github.com/eclipse-theia/theia/pull/11766) +- [repo] performed `yarn upgrade` [#11773](https://github.com/eclipse-theia/theia/pull/11773) +- [repo] updated CI runners from `ubuntu-18.04` to `ubuntu-latest` [#11731](https://github.com/eclipse-theia/theia/pull/11731) +- [repo] upgraded `lerna` to `v5.5.4` [#11738](https://github.com/eclipse-theia/theia/pull/11738) +- [terminal] added secondary window support to extract terminals [#11707](https://github.com/eclipse-theia/theia/pull/11707) [Breaking Changes:](#breaking_changes_1.31.0) -- [core] the generated webpack configuration (`gen-webpack.config.js`) now exports an array of two webpack configs instead of a single one: the first contains the config for +- [core] the generated webpack configuration (`gen-webpack.config.js`) now exports an array of two webpack configs instead of a single one: the first contains the config for generating the main code bundle (as before), the second serves to generate a *.css file for inclusion into `secondaryWindow.html` [#11707](https://github.com/eclipse-theia/theia/pull/11707) - [plugin-ext] `when` clauses removed from `codeToTheiaMappings` [#11741](https://github.com/eclipse-theia/theia/pull/#11741) -- [terminal] The `AbstractCmdClickTerminalContribution` API has been removed in favor of the `TerminalLinkProvider` interface [#11552](https://github.com/eclipse-theia/theia/pull/11552) - Contributed on behalf of STMicroelectronics +- [terminal] the `AbstractCmdClickTerminalContribution` API has been removed in favor of the `TerminalLinkProvider` interface [#11552](https://github.com/eclipse-theia/theia/pull/11552) - Contributed on behalf of STMicroelectronics - [typehierarchy] - Adding Support of vscode TypeHierarchy API with the following breaking changes: [#11694](https://github.com/eclipse-theia/theia/pull/11694) - [plugin-ext/main] The file `callhierarchy-type-converters.ts` was renamed to `hierarchy-types-converters.ts` - The method `toDefinition` was renamed to `toItemHierarchyDefinition` and the overloaded signatures were removed. - The method `fromDefinition` was replaced for `fromItemHierarchyDefinition` to convert both `TypeHierarchyItem` and `CallHierarchyItem` to a common `HierarchyItem`. - - [plugin-ext/plugin] - `thype-converters.ts #fromCallHierarchyItem` was replaced by `fromHierarchyItem` to convert from `CallHierarchyItem` or `TypeHierarchyItem` to `HierarchyItem`. + - [plugin-ext/plugin] - `type-converters.ts #fromCallHierarchyItem` was replaced by `fromHierarchyItem` to convert from `CallHierarchyItem` or `TypeHierarchyItem` to `HierarchyItem`. ## v1.30.0 - 9/29/2022 diff --git a/packages/core/src/common/message-rpc/rpc-message-encoder.spec.ts b/packages/core/src/common/message-rpc/rpc-message-encoder.spec.ts index 2db800530d6ee..150c66c00fa71 100644 --- a/packages/core/src/common/message-rpc/rpc-message-encoder.spec.ts +++ b/packages/core/src/common/message-rpc/rpc-message-encoder.spec.ts @@ -21,7 +21,7 @@ import { import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from './uint8-array-message-buffer'; describe('PPC Message Encoder & Decoder', () => { - describe('Msgpack Encoder & Decoder', () => { + describe('MsgPack Encoder & Decoder', () => { it('should encode object into binary message and decode the message back into the original object', () => { const buffer = new Uint8Array(1024); const writer = new Uint8ArrayWriteBuffer(buffer); diff --git a/packages/plugin-ext/src/plugin/preference-registry.spec.ts b/packages/plugin-ext/src/plugin/preference-registry.spec.ts index 6ef5feb518bda..1218a30efcfec 100644 --- a/packages/plugin-ext/src/plugin/preference-registry.spec.ts +++ b/packages/plugin-ext/src/plugin/preference-registry.spec.ts @@ -98,7 +98,7 @@ describe('PreferenceRegistryExtImpl:', () => { 'a.constructor.prototype.injectedParsedConstructorPrototype': true, 'constructor.prototype.injectedParsedConstructorPrototype': true, '[python].some.key.foo': 'value', - '[python].a.constructor.prototype.injectedParsedConsttructorPrototype': true + '[python].a.constructor.prototype.injectedParsedConstructorPrototype': true }; const result = preferenceRegistryExtImpl['parseConfigurationData'](value); expect(result.contents.my).to.be.an('object'); @@ -205,7 +205,7 @@ describe('PreferenceRegistryExtImpl:', () => { expect(affectsChecker.affectsConfiguration('whole-section.subsection', { languageId: 'typescript', uri: URI.parse('/very/specific/path') })).to.be.true; }); - it('Reports true if no language override is provided and a language overriden preference changes', () => { + it('Reports true if no language override is provided and a language overridden preference changes', () => { const affectsChecker = preferenceRegistryExtImpl['toConfigurationChangeEvent']( [{ newValue: 'bar', preferenceName: '[typescript].whole-section.subitem', scope: 'file:///somewhat-specific-path' }] ); From f98f1a64681d11e3d8063289fff90cfe51d19d4c Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Thu, 27 Oct 2022 14:45:11 -0400 Subject: [PATCH 04/11] v1.31.0 --- dev-packages/application-manager/package.json | 10 +-- dev-packages/application-package/package.json | 4 +- dev-packages/cli/package.json | 14 +-- dev-packages/ffmpeg/package.json | 2 +- .../localization-manager/package.json | 4 +- dev-packages/ovsx-client/package.json | 4 +- .../private-eslint-plugin/package.json | 8 +- dev-packages/private-ext-scripts/package.json | 2 +- dev-packages/private-re-exports/package.json | 2 +- dev-packages/request/package.json | 2 +- examples/api-samples/package.json | 22 ++--- examples/api-tests/package.json | 4 +- examples/browser/package.json | 90 +++++++++---------- examples/electron/package.json | 90 +++++++++---------- examples/playwright/package.json | 2 +- lerna.json | 2 +- packages/bulk-edit/package.json | 14 +-- packages/callhierarchy/package.json | 8 +- packages/console/package.json | 8 +- packages/core/package.json | 10 +-- packages/debug/package.json | 28 +++--- packages/editor-preview/package.json | 10 +-- packages/editor/package.json | 8 +- packages/electron/package.json | 6 +- packages/external-terminal/package.json | 10 +-- packages/file-search/package.json | 14 +-- packages/filesystem/package.json | 6 +- packages/getting-started/package.json | 10 +-- packages/git/package.json | 18 ++-- packages/keymaps/package.json | 12 +-- packages/markers/package.json | 10 +-- packages/memory-inspector/package.json | 6 +- packages/messages/package.json | 6 +- packages/metrics/package.json | 6 +- packages/mini-browser/package.json | 8 +- packages/monaco/package.json | 14 +-- packages/navigator/package.json | 10 +-- packages/outline-view/package.json | 6 +- packages/output/package.json | 10 +-- packages/plugin-dev/package.json | 16 ++-- packages/plugin-ext-vscode/package.json | 28 +++--- packages/plugin-ext/package.json | 50 +++++------ packages/plugin-metrics/package.json | 12 +-- packages/plugin/package.json | 4 +- packages/preferences/package.json | 16 ++-- packages/preview/package.json | 12 +-- packages/process/package.json | 6 +- packages/property-view/package.json | 8 +- packages/scm-extra/package.json | 14 +-- packages/scm/package.json | 10 +-- packages/search-in-workspace/package.json | 16 ++-- packages/secondary-window/package.json | 6 +- packages/task/package.json | 24 ++--- packages/terminal/package.json | 14 +-- packages/timeline/package.json | 8 +- packages/toolbar/package.json | 18 ++-- packages/typehierarchy/package.json | 8 +- packages/userstorage/package.json | 8 +- packages/variable-resolver/package.json | 6 +- packages/vsx-registry/package.json | 18 ++-- packages/workspace/package.json | 10 +-- 61 files changed, 406 insertions(+), 406 deletions(-) diff --git a/dev-packages/application-manager/package.json b/dev-packages/application-manager/package.json index 001d2ffe5764a..2cbee532ec9fa 100644 --- a/dev-packages/application-manager/package.json +++ b/dev-packages/application-manager/package.json @@ -1,6 +1,6 @@ { "name": "@theia/application-manager", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia application manager API.", "publishConfig": { "access": "public" @@ -33,8 +33,8 @@ "@babel/plugin-transform-classes": "^7.10.0", "@babel/plugin-transform-runtime": "^7.10.0", "@babel/preset-env": "^7.10.0", - "@theia/application-package": "1.30.0", - "@theia/ffmpeg": "1.30.0", + "@theia/application-package": "1.31.0", + "@theia/ffmpeg": "1.31.0", "@types/fs-extra": "^4.0.2", "@types/semver": "^7.3.8", "babel-loader": "^8.2.2", @@ -42,12 +42,12 @@ "circular-dependency-plugin": "^5.2.2", "compression-webpack-plugin": "^9.0.0", "copy-webpack-plugin": "^8.1.1", - "mini-css-extract-plugin": "^2.6.1", "css-loader": "^6.2.0", "electron-rebuild": "^3.2.7", "fs-extra": "^4.0.2", "ignore-loader": "^0.1.2", "less": "^3.0.3", + "mini-css-extract-plugin": "^2.6.1", "node-abi": "*", "path-browserify": "^1.0.1", "semver": "^7.3.5", @@ -72,7 +72,7 @@ } }, "devDependencies": { - "@theia/ext-scripts": "1.30.0", + "@theia/ext-scripts": "1.31.0", "@types/node-abi": "*" }, "nyc": { diff --git a/dev-packages/application-package/package.json b/dev-packages/application-package/package.json index 463beecfd7e0d..e13cd87a89ad5 100644 --- a/dev-packages/application-package/package.json +++ b/dev-packages/application-package/package.json @@ -1,6 +1,6 @@ { "name": "@theia/application-package", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia application package API.", "publishConfig": { "access": "public" @@ -42,7 +42,7 @@ "write-json-file": "^2.2.0" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/dev-packages/cli/package.json b/dev-packages/cli/package.json index 109f7cd9c1404..e4485c9c7ada9 100644 --- a/dev-packages/cli/package.json +++ b/dev-packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@theia/cli", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia CLI.", "publishConfig": { "access": "public" @@ -30,12 +30,12 @@ "clean": "theiaext clean" }, "dependencies": { - "@theia/application-manager": "1.30.0", - "@theia/application-package": "1.30.0", - "@theia/ffmpeg": "1.30.0", - "@theia/localization-manager": "1.30.0", - "@theia/ovsx-client": "1.30.0", - "@theia/request": "1.30.0", + "@theia/application-manager": "1.31.0", + "@theia/application-package": "1.31.0", + "@theia/ffmpeg": "1.31.0", + "@theia/localization-manager": "1.31.0", + "@theia/ovsx-client": "1.31.0", + "@theia/request": "1.31.0", "@types/chai": "^4.2.7", "@types/mocha": "^5.2.7", "@types/node-fetch": "^2.5.7", diff --git a/dev-packages/ffmpeg/package.json b/dev-packages/ffmpeg/package.json index 8eb9fb60b75f7..7b179d0440ca7 100644 --- a/dev-packages/ffmpeg/package.json +++ b/dev-packages/ffmpeg/package.json @@ -1,6 +1,6 @@ { "name": "@theia/ffmpeg", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia FFMPEG reader utility.", "publishConfig": { "access": "public" diff --git a/dev-packages/localization-manager/package.json b/dev-packages/localization-manager/package.json index 7e37684d25d1a..c20177b6c4b53 100644 --- a/dev-packages/localization-manager/package.json +++ b/dev-packages/localization-manager/package.json @@ -1,6 +1,6 @@ { "name": "@theia/localization-manager", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia localization manager API.", "publishConfig": { "access": "public" @@ -39,7 +39,7 @@ "typescript": "~4.5.5" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/dev-packages/ovsx-client/package.json b/dev-packages/ovsx-client/package.json index d9a74135f3d3e..5b9c523060b38 100644 --- a/dev-packages/ovsx-client/package.json +++ b/dev-packages/ovsx-client/package.json @@ -1,6 +1,6 @@ { "name": "@theia/ovsx-client", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia Open-VSX Client", "publishConfig": { "access": "public" @@ -29,7 +29,7 @@ "watch": "theiaext watch" }, "dependencies": { - "@theia/request": "1.30.0", + "@theia/request": "1.31.0", "semver": "^5.4.1" } } diff --git a/dev-packages/private-eslint-plugin/package.json b/dev-packages/private-eslint-plugin/package.json index 4731a5a6b2a3f..6d1bf54a1e636 100644 --- a/dev-packages/private-eslint-plugin/package.json +++ b/dev-packages/private-eslint-plugin/package.json @@ -1,16 +1,16 @@ { "private": true, "name": "@theia/eslint-plugin", - "version": "1.30.0", + "version": "1.31.0", "description": "Custom ESLint rules for developing Theia extensions and applications", "main": "index.js", "scripts": { "prepare": "tsc -b" }, "dependencies": { - "@theia/core": "1.30.0", - "@theia/ext-scripts": "1.30.0", - "@theia/re-exports": "1.30.0", + "@theia/core": "1.31.0", + "@theia/ext-scripts": "1.31.0", + "@theia/re-exports": "1.31.0", "js-levenshtein": "^1.1.6" } } diff --git a/dev-packages/private-ext-scripts/package.json b/dev-packages/private-ext-scripts/package.json index 0bc64880cf95d..7a0892999b078 100644 --- a/dev-packages/private-ext-scripts/package.json +++ b/dev-packages/private-ext-scripts/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@theia/ext-scripts", - "version": "1.30.0", + "version": "1.31.0", "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0", "description": "NPM scripts for Theia packages.", "bin": { diff --git a/dev-packages/private-re-exports/package.json b/dev-packages/private-re-exports/package.json index a3efcfd96fc77..e296921c69d04 100644 --- a/dev-packages/private-re-exports/package.json +++ b/dev-packages/private-re-exports/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@theia/re-exports", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia re-export helper functions and scripts.", "main": "lib/index.js", "engines": { diff --git a/dev-packages/request/package.json b/dev-packages/request/package.json index a188aab9193a3..24305f8ea5e20 100644 --- a/dev-packages/request/package.json +++ b/dev-packages/request/package.json @@ -1,6 +1,6 @@ { "name": "@theia/request", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia Proxy-Aware Request Service", "publishConfig": { "access": "public" diff --git a/examples/api-samples/package.json b/examples/api-samples/package.json index 907a9d4600fe2..afeee0727e453 100644 --- a/examples/api-samples/package.json +++ b/examples/api-samples/package.json @@ -1,19 +1,19 @@ { "private": true, "name": "@theia/api-samples", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Example code to demonstrate Theia API", "dependencies": { - "@theia/core": "1.30.0", - "@theia/file-search": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/file-search": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/output": "1.30.0", - "@theia/search-in-workspace": "1.30.0", - "@theia/toolbar": "1.30.0", - "@theia/vsx-registry": "1.30.0", - "@theia/workspace": "1.30.0" + "@theia/output": "1.31.0", + "@theia/search-in-workspace": "1.31.0", + "@theia/toolbar": "1.31.0", + "@theia/vsx-registry": "1.31.0", + "@theia/workspace": "1.31.0" }, "theiaExtensions": [ { @@ -52,6 +52,6 @@ "clean": "theiaext clean" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" } } diff --git a/examples/api-tests/package.json b/examples/api-tests/package.json index 38c0c81e83a6f..becd3c7edabb5 100644 --- a/examples/api-tests/package.json +++ b/examples/api-tests/package.json @@ -1,9 +1,9 @@ { "name": "@theia/api-tests", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia API tests", "dependencies": { - "@theia/core": "1.30.0" + "@theia/core": "1.31.0" }, "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0", "repository": { diff --git a/examples/browser/package.json b/examples/browser/package.json index b7bc58ccd3daf..082c5a1e79888 100644 --- a/examples/browser/package.json +++ b/examples/browser/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "@theia/example-browser", - "version": "1.30.0", + "version": "1.31.0", "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0", "theia": { "frontend": { @@ -14,49 +14,49 @@ } }, "dependencies": { - "@theia/api-samples": "1.30.0", - "@theia/bulk-edit": "1.30.0", - "@theia/callhierarchy": "1.30.0", - "@theia/console": "1.30.0", - "@theia/core": "1.30.0", - "@theia/debug": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/editor-preview": "1.30.0", - "@theia/file-search": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/getting-started": "1.30.0", - "@theia/git": "1.30.0", - "@theia/keymaps": "1.30.0", - "@theia/markers": "1.30.0", - "@theia/memory-inspector": "1.30.0", - "@theia/messages": "1.30.0", - "@theia/metrics": "1.30.0", - "@theia/mini-browser": "1.30.0", - "@theia/monaco": "1.30.0", - "@theia/navigator": "1.30.0", - "@theia/outline-view": "1.30.0", - "@theia/output": "1.30.0", - "@theia/plugin-dev": "1.30.0", - "@theia/plugin-ext": "1.30.0", - "@theia/plugin-ext-vscode": "1.30.0", - "@theia/plugin-metrics": "1.30.0", - "@theia/preferences": "1.30.0", - "@theia/preview": "1.30.0", - "@theia/process": "1.30.0", - "@theia/property-view": "1.30.0", - "@theia/scm": "1.30.0", - "@theia/scm-extra": "1.30.0", - "@theia/search-in-workspace": "1.30.0", - "@theia/secondary-window": "1.30.0", - "@theia/task": "1.30.0", - "@theia/terminal": "1.30.0", - "@theia/timeline": "1.30.0", - "@theia/toolbar": "1.30.0", - "@theia/typehierarchy": "1.30.0", - "@theia/userstorage": "1.30.0", - "@theia/variable-resolver": "1.30.0", - "@theia/vsx-registry": "1.30.0", - "@theia/workspace": "1.30.0" + "@theia/api-samples": "1.31.0", + "@theia/bulk-edit": "1.31.0", + "@theia/callhierarchy": "1.31.0", + "@theia/console": "1.31.0", + "@theia/core": "1.31.0", + "@theia/debug": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/editor-preview": "1.31.0", + "@theia/file-search": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/getting-started": "1.31.0", + "@theia/git": "1.31.0", + "@theia/keymaps": "1.31.0", + "@theia/markers": "1.31.0", + "@theia/memory-inspector": "1.31.0", + "@theia/messages": "1.31.0", + "@theia/metrics": "1.31.0", + "@theia/mini-browser": "1.31.0", + "@theia/monaco": "1.31.0", + "@theia/navigator": "1.31.0", + "@theia/outline-view": "1.31.0", + "@theia/output": "1.31.0", + "@theia/plugin-dev": "1.31.0", + "@theia/plugin-ext": "1.31.0", + "@theia/plugin-ext-vscode": "1.31.0", + "@theia/plugin-metrics": "1.31.0", + "@theia/preferences": "1.31.0", + "@theia/preview": "1.31.0", + "@theia/process": "1.31.0", + "@theia/property-view": "1.31.0", + "@theia/scm": "1.31.0", + "@theia/scm-extra": "1.31.0", + "@theia/search-in-workspace": "1.31.0", + "@theia/secondary-window": "1.31.0", + "@theia/task": "1.31.0", + "@theia/terminal": "1.31.0", + "@theia/timeline": "1.31.0", + "@theia/toolbar": "1.31.0", + "@theia/typehierarchy": "1.31.0", + "@theia/userstorage": "1.31.0", + "@theia/variable-resolver": "1.31.0", + "@theia/vsx-registry": "1.31.0", + "@theia/workspace": "1.31.0" }, "scripts": { "clean": "theia clean", @@ -77,6 +77,6 @@ "watch:compile": "tsc -b -w" }, "devDependencies": { - "@theia/cli": "1.30.0" + "@theia/cli": "1.31.0" } } diff --git a/examples/electron/package.json b/examples/electron/package.json index dd2939afd36d0..7d5d1669950bc 100644 --- a/examples/electron/package.json +++ b/examples/electron/package.json @@ -2,7 +2,7 @@ "private": true, "name": "@theia/example-electron", "productName": "Theia Electron Example", - "version": "1.30.0", + "version": "1.31.0", "main": "src-gen/frontend/electron-main.js", "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0", "theia": { @@ -14,49 +14,49 @@ } }, "dependencies": { - "@theia/api-samples": "1.30.0", - "@theia/bulk-edit": "1.30.0", - "@theia/callhierarchy": "1.30.0", - "@theia/console": "1.30.0", - "@theia/core": "1.30.0", - "@theia/debug": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/editor-preview": "1.30.0", - "@theia/electron": "1.30.0", - "@theia/external-terminal": "1.30.0", - "@theia/file-search": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/getting-started": "1.30.0", - "@theia/git": "1.30.0", - "@theia/keymaps": "1.30.0", - "@theia/markers": "1.30.0", - "@theia/memory-inspector": "1.30.0", - "@theia/messages": "1.30.0", - "@theia/metrics": "1.30.0", - "@theia/mini-browser": "1.30.0", - "@theia/monaco": "1.30.0", - "@theia/navigator": "1.30.0", - "@theia/outline-view": "1.30.0", - "@theia/output": "1.30.0", - "@theia/plugin-dev": "1.30.0", - "@theia/plugin-ext": "1.30.0", - "@theia/plugin-ext-vscode": "1.30.0", - "@theia/preferences": "1.30.0", - "@theia/preview": "1.30.0", - "@theia/process": "1.30.0", - "@theia/property-view": "1.30.0", - "@theia/scm": "1.30.0", - "@theia/scm-extra": "1.30.0", - "@theia/search-in-workspace": "1.30.0", - "@theia/task": "1.30.0", - "@theia/terminal": "1.30.0", - "@theia/timeline": "1.30.0", - "@theia/toolbar": "1.30.0", - "@theia/typehierarchy": "1.30.0", - "@theia/userstorage": "1.30.0", - "@theia/variable-resolver": "1.30.0", - "@theia/vsx-registry": "1.30.0", - "@theia/workspace": "1.30.0" + "@theia/api-samples": "1.31.0", + "@theia/bulk-edit": "1.31.0", + "@theia/callhierarchy": "1.31.0", + "@theia/console": "1.31.0", + "@theia/core": "1.31.0", + "@theia/debug": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/editor-preview": "1.31.0", + "@theia/electron": "1.31.0", + "@theia/external-terminal": "1.31.0", + "@theia/file-search": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/getting-started": "1.31.0", + "@theia/git": "1.31.0", + "@theia/keymaps": "1.31.0", + "@theia/markers": "1.31.0", + "@theia/memory-inspector": "1.31.0", + "@theia/messages": "1.31.0", + "@theia/metrics": "1.31.0", + "@theia/mini-browser": "1.31.0", + "@theia/monaco": "1.31.0", + "@theia/navigator": "1.31.0", + "@theia/outline-view": "1.31.0", + "@theia/output": "1.31.0", + "@theia/plugin-dev": "1.31.0", + "@theia/plugin-ext": "1.31.0", + "@theia/plugin-ext-vscode": "1.31.0", + "@theia/preferences": "1.31.0", + "@theia/preview": "1.31.0", + "@theia/process": "1.31.0", + "@theia/property-view": "1.31.0", + "@theia/scm": "1.31.0", + "@theia/scm-extra": "1.31.0", + "@theia/search-in-workspace": "1.31.0", + "@theia/task": "1.31.0", + "@theia/terminal": "1.31.0", + "@theia/timeline": "1.31.0", + "@theia/toolbar": "1.31.0", + "@theia/typehierarchy": "1.31.0", + "@theia/userstorage": "1.31.0", + "@theia/variable-resolver": "1.31.0", + "@theia/vsx-registry": "1.31.0", + "@theia/workspace": "1.31.0" }, "scripts": { "build": "yarn -s compile && yarn -s bundle", @@ -74,7 +74,7 @@ "watch:compile": "tsc -b -w" }, "devDependencies": { - "@theia/cli": "1.30.0", + "@theia/cli": "1.31.0", "electron": "^15.3.5" } } diff --git a/examples/playwright/package.json b/examples/playwright/package.json index 859a2d49d3942..3e8d56349bbfb 100644 --- a/examples/playwright/package.json +++ b/examples/playwright/package.json @@ -1,6 +1,6 @@ { "name": "@theia/playwright", - "version": "1.30.0", + "version": "1.31.0", "description": "System tests for Theia", "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0", "repository": { diff --git a/lerna.json b/lerna.json index 22a5259743b00..8392f4dbae32d 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "lerna": "2.2.0", "npmClient": "yarn", "useWorkspaces": true, - "version": "1.30.0", + "version": "1.31.0", "command": { "run": { "stream": true diff --git a/packages/bulk-edit/package.json b/packages/bulk-edit/package.json index 13ae0de6327c2..ed9edd4722159 100644 --- a/packages/bulk-edit/package.json +++ b/packages/bulk-edit/package.json @@ -1,14 +1,14 @@ { "name": "@theia/bulk-edit", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Bulk Edit Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/workspace": "1.30.0" + "@theia/workspace": "1.31.0" }, "publishConfig": { "access": "public" @@ -43,7 +43,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/callhierarchy/package.json b/packages/callhierarchy/package.json index c7acee09ac34c..d9f8d9995c52f 100644 --- a/packages/callhierarchy/package.json +++ b/packages/callhierarchy/package.json @@ -1,10 +1,10 @@ { "name": "@theia/callhierarchy", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Call Hierarchy Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", "ts-md5": "^1.2.2" }, "publishConfig": { @@ -40,7 +40,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/console/package.json b/packages/console/package.json index 8d6002ea00b7f..72076e6a58118 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -1,10 +1,10 @@ { "name": "@theia/console", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Console Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", "anser": "^2.0.1" }, @@ -41,7 +41,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/core/package.json b/packages/core/package.json index e49d51237c1ff..9e08233731daf 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@theia/core", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.", "main": "lib/common/index.js", "typings": "lib/common/index.d.ts", @@ -16,8 +16,8 @@ "@phosphor/signaling": "1", "@phosphor/virtualdom": "1", "@phosphor/widgets": "1", - "@theia/application-package": "1.30.0", - "@theia/request": "1.30.0", + "@theia/application-package": "1.31.0", + "@theia/request": "1.31.0", "@types/body-parser": "^1.16.4", "@types/cookie": "^0.3.3", "@types/dompurify": "^2.2.2", @@ -195,8 +195,8 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0", - "@theia/re-exports": "1.30.0", + "@theia/ext-scripts": "1.31.0", + "@theia/re-exports": "1.31.0", "minimist": "^1.2.0" }, "nyc": { diff --git a/packages/debug/package.json b/packages/debug/package.json index 37a48f98a3f0a..3a6775b7b8f6f 100644 --- a/packages/debug/package.json +++ b/packages/debug/package.json @@ -1,21 +1,21 @@ { "name": "@theia/debug", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Debug Extension", "dependencies": { - "@theia/console": "1.30.0", - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/markers": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/console": "1.31.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/markers": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/output": "1.30.0", - "@theia/process": "1.30.0", - "@theia/task": "1.30.0", - "@theia/terminal": "1.30.0", - "@theia/variable-resolver": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/output": "1.31.0", + "@theia/process": "1.31.0", + "@theia/task": "1.31.0", + "@theia/terminal": "1.31.0", + "@theia/variable-resolver": "1.31.0", + "@theia/workspace": "1.31.0", "@vscode/debugprotocol": "^1.51.0", "jsonc-parser": "^2.2.0", "mkdirp": "^0.5.0", @@ -63,7 +63,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/editor-preview/package.json b/packages/editor-preview/package.json index b8a2786e156bc..d0798e70b9f7c 100644 --- a/packages/editor-preview/package.json +++ b/packages/editor-preview/package.json @@ -1,11 +1,11 @@ { "name": "@theia/editor-preview", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Editor Preview Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/navigator": "1.30.0" + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/navigator": "1.31.0" }, "publishConfig": { "access": "public" @@ -40,7 +40,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/editor/package.json b/packages/editor/package.json index 9f5cbe42b4576..c9f3e5d40698b 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,10 +1,10 @@ { "name": "@theia/editor", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Editor Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/variable-resolver": "1.30.0" + "@theia/core": "1.31.0", + "@theia/variable-resolver": "1.31.0" }, "publishConfig": { "access": "public" @@ -39,7 +39,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/electron/package.json b/packages/electron/package.json index 5aa357edfbca2..41294289d4b34 100644 --- a/packages/electron/package.json +++ b/packages/electron/package.json @@ -1,6 +1,6 @@ { "name": "@theia/electron", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Electron utility package", "dependencies": { "@electron/remote": "^2.0.1 <2.0.4 || >2.0.4", @@ -9,8 +9,8 @@ "native-keymap": "^2.2.1" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0", - "@theia/re-exports": "1.30.0" + "@theia/ext-scripts": "1.31.0", + "@theia/re-exports": "1.31.0" }, "peerDependencies": { "electron": "^15.3.5" diff --git a/packages/external-terminal/package.json b/packages/external-terminal/package.json index 3ec9c13e4f770..9be8faecb1e4e 100644 --- a/packages/external-terminal/package.json +++ b/packages/external-terminal/package.json @@ -1,11 +1,11 @@ { "name": "@theia/external-terminal", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - External Terminal Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/workspace": "1.30.0" + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/workspace": "1.31.0" }, "publishConfig": { "access": "public" @@ -41,7 +41,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/file-search/package.json b/packages/file-search/package.json index e0f6e477ca483..b0d761a2b387b 100644 --- a/packages/file-search/package.json +++ b/packages/file-search/package.json @@ -1,13 +1,13 @@ { "name": "@theia/file-search", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - File Search Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/process": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/process": "1.31.0", + "@theia/workspace": "1.31.0", "@vscode/ripgrep": "^1.14.2" }, "publishConfig": { @@ -44,7 +44,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/filesystem/package.json b/packages/filesystem/package.json index b286cef5c01e0..02a73974097dd 100644 --- a/packages/filesystem/package.json +++ b/packages/filesystem/package.json @@ -1,9 +1,9 @@ { "name": "@theia/filesystem", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - FileSystem Extension", "dependencies": { - "@theia/core": "1.30.0", + "@theia/core": "1.31.0", "@types/body-parser": "^1.17.0", "@types/multer": "^1.4.7", "@types/rimraf": "^2.0.2", @@ -63,7 +63,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/getting-started/package.json b/packages/getting-started/package.json index 395ac5c38fbe0..f7addaf629758 100644 --- a/packages/getting-started/package.json +++ b/packages/getting-started/package.json @@ -1,11 +1,11 @@ { "name": "@theia/getting-started", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - GettingStarted Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/keymaps": "1.30.0", - "@theia/workspace": "1.30.0" + "@theia/core": "1.31.0", + "@theia/keymaps": "1.31.0", + "@theia/workspace": "1.31.0" }, "publishConfig": { "access": "public" @@ -41,7 +41,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/git/package.json b/packages/git/package.json index 281902a155d49..fe214a732466c 100644 --- a/packages/git/package.json +++ b/packages/git/package.json @@ -1,16 +1,16 @@ { "name": "@theia/git", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Git Integration", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/navigator": "1.30.0", - "@theia/scm": "1.30.0", - "@theia/scm-extra": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/navigator": "1.31.0", + "@theia/scm": "1.31.0", + "@theia/scm-extra": "1.31.0", + "@theia/workspace": "1.31.0", "@types/diff": "^3.2.2", "@types/p-queue": "^2.3.1", "diff": "^3.4.0", @@ -65,7 +65,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0", + "@theia/ext-scripts": "1.31.0", "@types/luxon": "^2.3.2", "upath": "^1.0.2" }, diff --git a/packages/keymaps/package.json b/packages/keymaps/package.json index 8296d0c2ce770..7b83b19b43182 100644 --- a/packages/keymaps/package.json +++ b/packages/keymaps/package.json @@ -1,17 +1,17 @@ { "name": "@theia/keymaps", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Custom Keymaps Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/preferences": "1.30.0", - "@theia/userstorage": "1.30.0", + "@theia/preferences": "1.31.0", + "@theia/userstorage": "1.31.0", "jsonc-parser": "^2.2.0" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "publishConfig": { "access": "public" diff --git a/packages/markers/package.json b/packages/markers/package.json index 2d89b773d10e7..2323963346310 100644 --- a/packages/markers/package.json +++ b/packages/markers/package.json @@ -1,11 +1,11 @@ { "name": "@theia/markers", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Markers Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/workspace": "1.30.0" + "@theia/core": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/workspace": "1.31.0" }, "publishConfig": { "access": "public" @@ -40,7 +40,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/memory-inspector/package.json b/packages/memory-inspector/package.json index 44f0568041427..e6af3d6e4d485 100644 --- a/packages/memory-inspector/package.json +++ b/packages/memory-inspector/package.json @@ -1,6 +1,6 @@ { "name": "@theia/memory-inspector", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Memory Inspector", "keywords": [ "theia-extension" @@ -27,8 +27,8 @@ "watch": "theiaext watch" }, "dependencies": { - "@theia/core": "1.30.0", - "@theia/debug": "1.30.0", + "@theia/core": "1.31.0", + "@theia/debug": "1.31.0", "@vscode/debugprotocol": "^1.51.0", "long": "^4.0.0" }, diff --git a/packages/messages/package.json b/packages/messages/package.json index d029310ede9e4..7908eec3409e2 100644 --- a/packages/messages/package.json +++ b/packages/messages/package.json @@ -1,9 +1,9 @@ { "name": "@theia/messages", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Messages Extension", "dependencies": { - "@theia/core": "1.30.0", + "@theia/core": "1.31.0", "react-perfect-scrollbar": "^1.5.3", "ts-md5": "^1.2.2" }, @@ -40,7 +40,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/metrics/package.json b/packages/metrics/package.json index b6bf7bd543066..79234879318e1 100644 --- a/packages/metrics/package.json +++ b/packages/metrics/package.json @@ -1,9 +1,9 @@ { "name": "@theia/metrics", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Metrics Extension", "dependencies": { - "@theia/core": "1.30.0", + "@theia/core": "1.31.0", "prom-client": "^10.2.0" }, "publishConfig": { @@ -39,7 +39,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/mini-browser/package.json b/packages/mini-browser/package.json index b7ad44fde7238..04cd7d165a228 100644 --- a/packages/mini-browser/package.json +++ b/packages/mini-browser/package.json @@ -1,10 +1,10 @@ { "name": "@theia/mini-browser", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Mini-Browser Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/filesystem": "1.30.0", + "@theia/core": "1.31.0", + "@theia/filesystem": "1.31.0", "@types/mime-types": "^2.1.0", "mime-types": "^2.1.18", "pdfobject": "^2.0.201604172", @@ -49,7 +49,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/monaco/package.json b/packages/monaco/package.json index 320f0751778c8..5d19b5632d3a9 100644 --- a/packages/monaco/package.json +++ b/packages/monaco/package.json @@ -1,14 +1,14 @@ { "name": "@theia/monaco", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Monaco Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/markers": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/markers": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/outline-view": "1.30.0", + "@theia/outline-view": "1.31.0", "fast-plist": "^0.1.2", "idb": "^4.0.5", "jsonc-parser": "^2.2.0", @@ -49,7 +49,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/navigator/package.json b/packages/navigator/package.json index 6204e85951aeb..1ea1893ef7238 100644 --- a/packages/navigator/package.json +++ b/packages/navigator/package.json @@ -1,11 +1,11 @@ { "name": "@theia/navigator", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Navigator Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/core": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/workspace": "1.31.0", "minimatch": "^3.0.4" }, "publishConfig": { @@ -44,7 +44,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/outline-view/package.json b/packages/outline-view/package.json index a22eb18cdd1d6..c2a8123813f72 100644 --- a/packages/outline-view/package.json +++ b/packages/outline-view/package.json @@ -1,9 +1,9 @@ { "name": "@theia/outline-view", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Outline View Extension", "dependencies": { - "@theia/core": "1.30.0" + "@theia/core": "1.31.0" }, "publishConfig": { "access": "public" @@ -38,7 +38,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/output/package.json b/packages/output/package.json index 078cb57a5e0df..c31edd20586e6 100644 --- a/packages/output/package.json +++ b/packages/output/package.json @@ -1,11 +1,11 @@ { "name": "@theia/output", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Output Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", "@types/p-queue": "^2.3.1", "p-queue": "^2.4.2" @@ -43,7 +43,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/plugin-dev/package.json b/packages/plugin-dev/package.json index b7e65f55939e8..5d103b0ebf7a1 100644 --- a/packages/plugin-dev/package.json +++ b/packages/plugin-dev/package.json @@ -1,16 +1,16 @@ { "name": "@theia/plugin-dev", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Plugin Development Extension", "main": "lib/common/index.js", "typings": "lib/common/index.d.ts", "dependencies": { - "@theia/core": "1.30.0", - "@theia/debug": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/output": "1.30.0", - "@theia/plugin-ext": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/core": "1.31.0", + "@theia/debug": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/output": "1.31.0", + "@theia/plugin-ext": "1.31.0", + "@theia/workspace": "1.31.0", "@types/request": "^2.0.3", "ps-tree": "^1.2.0", "request": "^2.82.0" @@ -50,7 +50,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/plugin-ext-vscode/package.json b/packages/plugin-ext-vscode/package.json index a376fe5014963..95a05815ff4a9 100644 --- a/packages/plugin-ext-vscode/package.json +++ b/packages/plugin-ext-vscode/package.json @@ -1,21 +1,21 @@ { "name": "@theia/plugin-ext-vscode", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Plugin Extension for VsCode", "dependencies": { - "@theia/callhierarchy": "1.30.0", - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/callhierarchy": "1.31.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/navigator": "1.30.0", - "@theia/plugin": "1.30.0", - "@theia/plugin-ext": "1.30.0", - "@theia/terminal": "1.30.0", - "@theia/typehierarchy": "1.30.0", - "@theia/userstorage": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/navigator": "1.31.0", + "@theia/plugin": "1.31.0", + "@theia/plugin-ext": "1.31.0", + "@theia/terminal": "1.31.0", + "@theia/typehierarchy": "1.31.0", + "@theia/userstorage": "1.31.0", + "@theia/workspace": "1.31.0", "@types/request": "^2.0.3", "filenamify": "^4.1.0", "request": "^2.82.0" @@ -54,7 +54,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/plugin-ext/package.json b/packages/plugin-ext/package.json index d5af9b0874bef..40daabffbd0aa 100644 --- a/packages/plugin-ext/package.json +++ b/packages/plugin-ext/package.json @@ -1,34 +1,34 @@ { "name": "@theia/plugin-ext", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Plugin Extension", "main": "lib/common/index.js", "typings": "lib/common/index.d.ts", "dependencies": { - "@theia/bulk-edit": "1.30.0", - "@theia/callhierarchy": "1.30.0", - "@theia/console": "1.30.0", - "@theia/core": "1.30.0", - "@theia/debug": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/file-search": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/markers": "1.30.0", - "@theia/messages": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/bulk-edit": "1.31.0", + "@theia/callhierarchy": "1.31.0", + "@theia/console": "1.31.0", + "@theia/core": "1.31.0", + "@theia/debug": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/file-search": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/markers": "1.31.0", + "@theia/messages": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/navigator": "1.30.0", - "@theia/output": "1.30.0", - "@theia/plugin": "1.30.0", - "@theia/preferences": "1.30.0", - "@theia/scm": "1.30.0", - "@theia/search-in-workspace": "1.30.0", - "@theia/task": "1.30.0", - "@theia/terminal": "1.30.0", - "@theia/timeline": "1.30.0", - "@theia/typehierarchy": "1.30.0", - "@theia/variable-resolver": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/navigator": "1.31.0", + "@theia/output": "1.31.0", + "@theia/plugin": "1.31.0", + "@theia/preferences": "1.31.0", + "@theia/scm": "1.31.0", + "@theia/search-in-workspace": "1.31.0", + "@theia/task": "1.31.0", + "@theia/terminal": "1.31.0", + "@theia/timeline": "1.31.0", + "@theia/typehierarchy": "1.31.0", + "@theia/variable-resolver": "1.31.0", + "@theia/workspace": "1.31.0", "@types/mime": "^2.0.1", "@vscode/debugprotocol": "^1.51.0", "decompress": "^4.2.1", @@ -85,7 +85,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0", + "@theia/ext-scripts": "1.31.0", "@types/decompress": "^4.2.2", "@types/escape-html": "^0.0.20", "@types/lodash.clonedeep": "^4.5.3", diff --git a/packages/plugin-metrics/package.json b/packages/plugin-metrics/package.json index 5c727c616acd9..9ee5cc7dc6535 100644 --- a/packages/plugin-metrics/package.json +++ b/packages/plugin-metrics/package.json @@ -1,13 +1,13 @@ { "name": "@theia/plugin-metrics", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Plugin Metrics", "dependencies": { - "@theia/core": "1.30.0", - "@theia/metrics": "1.30.0", + "@theia/core": "1.31.0", + "@theia/metrics": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/plugin": "1.30.0", - "@theia/plugin-ext": "1.30.0" + "@theia/plugin": "1.31.0", + "@theia/plugin-ext": "1.31.0" }, "publishConfig": { "access": "public" @@ -43,7 +43,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 5e608260b0188..69c967eca7b11 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,6 +1,6 @@ { "name": "@theia/plugin", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Plugin API", "types": "./src/theia.d.ts", "publishConfig": { @@ -27,7 +27,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/preferences/package.json b/packages/preferences/package.json index dd37b4a06556a..122c01d3a7d4b 100644 --- a/packages/preferences/package.json +++ b/packages/preferences/package.json @@ -1,15 +1,15 @@ { "name": "@theia/preferences", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Preferences Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/userstorage": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/userstorage": "1.31.0", + "@theia/workspace": "1.31.0", "async-mutex": "^0.3.1", "jsonc-parser": "^2.2.0", "p-debounce": "^2.1.0" @@ -47,7 +47,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/preview/package.json b/packages/preview/package.json index a53e2b0ea50c1..28ca80cf3cdae 100644 --- a/packages/preview/package.json +++ b/packages/preview/package.json @@ -1,12 +1,12 @@ { "name": "@theia/preview", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Preview Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/mini-browser": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/mini-browser": "1.31.0", + "@theia/monaco": "1.31.0", "@types/highlight.js": "^10.1.0", "@types/markdown-it-anchor": "^4.0.1", "highlight.js": "10.4.1", @@ -45,7 +45,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/process/package.json b/packages/process/package.json index 260e54761340d..ca89c7796a7e0 100644 --- a/packages/process/package.json +++ b/packages/process/package.json @@ -1,9 +1,9 @@ { "name": "@theia/process", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia process support.", "dependencies": { - "@theia/core": "1.30.0", + "@theia/core": "1.31.0", "node-pty": "0.11.0-beta17", "string-argv": "^0.1.1" }, @@ -44,7 +44,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/property-view/package.json b/packages/property-view/package.json index abc1f9f5e367c..1744b2aaacf08 100644 --- a/packages/property-view/package.json +++ b/packages/property-view/package.json @@ -1,10 +1,10 @@ { "name": "@theia/property-view", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Property View Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/filesystem": "1.30.0" + "@theia/core": "1.31.0", + "@theia/filesystem": "1.31.0" }, "publishConfig": { "access": "public" @@ -39,7 +39,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/scm-extra/package.json b/packages/scm-extra/package.json index e3c21da1d74d3..90fde69b2dc59 100644 --- a/packages/scm-extra/package.json +++ b/packages/scm-extra/package.json @@ -1,13 +1,13 @@ { "name": "@theia/scm-extra", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Source control extras Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/navigator": "1.30.0", - "@theia/scm": "1.30.0" + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/navigator": "1.31.0", + "@theia/scm": "1.31.0" }, "publishConfig": { "access": "public" @@ -42,7 +42,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/scm/package.json b/packages/scm/package.json index 7e7a3e07b1f5e..8781c05308280 100644 --- a/packages/scm/package.json +++ b/packages/scm/package.json @@ -1,11 +1,11 @@ { "name": "@theia/scm", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Source control Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", "@types/diff": "^3.2.2", "diff": "^3.4.0", "p-debounce": "^2.1.0", @@ -45,7 +45,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/search-in-workspace/package.json b/packages/search-in-workspace/package.json index 33652b9094d16..53a48a09be5e8 100644 --- a/packages/search-in-workspace/package.json +++ b/packages/search-in-workspace/package.json @@ -1,14 +1,14 @@ { "name": "@theia/search-in-workspace", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Search in workspace", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/navigator": "1.30.0", - "@theia/process": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/navigator": "1.31.0", + "@theia/process": "1.31.0", + "@theia/workspace": "1.31.0", "@vscode/ripgrep": "^1.14.2", "minimatch": "^3.0.4" }, @@ -46,6 +46,6 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" } } diff --git a/packages/secondary-window/package.json b/packages/secondary-window/package.json index 4e34a6045f069..3b224675cf3ee 100644 --- a/packages/secondary-window/package.json +++ b/packages/secondary-window/package.json @@ -1,9 +1,9 @@ { "name": "@theia/secondary-window", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Secondary Window Extension", "dependencies": { - "@theia/core": "1.30.0" + "@theia/core": "1.31.0" }, "publishConfig": { "access": "public" @@ -38,6 +38,6 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" } } diff --git a/packages/task/package.json b/packages/task/package.json index 93c4baef1b2d2..2cb54e4de6150 100644 --- a/packages/task/package.json +++ b/packages/task/package.json @@ -1,19 +1,19 @@ { "name": "@theia/task", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Task extension. This extension adds support for executing raw or terminal processes in the backend.", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/markers": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/markers": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/process": "1.30.0", - "@theia/terminal": "1.30.0", - "@theia/userstorage": "1.30.0", - "@theia/variable-resolver": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/process": "1.31.0", + "@theia/terminal": "1.31.0", + "@theia/userstorage": "1.31.0", + "@theia/variable-resolver": "1.31.0", + "@theia/workspace": "1.31.0", "async-mutex": "^0.3.1", "jsonc-parser": "^2.2.0", "p-debounce": "^2.1.0" @@ -52,7 +52,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/terminal/package.json b/packages/terminal/package.json index 37728de105a72..481d5f050241b 100644 --- a/packages/terminal/package.json +++ b/packages/terminal/package.json @@ -1,13 +1,13 @@ { "name": "@theia/terminal", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Terminal Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/process": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/process": "1.31.0", + "@theia/workspace": "1.31.0", "xterm": "^4.16.0", "xterm-addon-fit": "^0.5.0", "xterm-addon-search": "^0.8.2" @@ -47,7 +47,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/timeline/package.json b/packages/timeline/package.json index 1ed98b93a4bf1..25dcec3162042 100644 --- a/packages/timeline/package.json +++ b/packages/timeline/package.json @@ -1,10 +1,10 @@ { "name": "@theia/timeline", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Timeline Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/navigator": "1.30.0" + "@theia/core": "1.31.0", + "@theia/navigator": "1.31.0" }, "publishConfig": { "access": "public" @@ -39,7 +39,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/toolbar/package.json b/packages/toolbar/package.json index a940b442ccd43..57b7df2feca58 100644 --- a/packages/toolbar/package.json +++ b/packages/toolbar/package.json @@ -1,6 +1,6 @@ { "name": "@theia/toolbar", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Toolbar", "keywords": [ "theia-extension" @@ -27,15 +27,15 @@ "watch": "theiaext watch" }, "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", - "@theia/file-search": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/monaco": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", + "@theia/file-search": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/monaco": "1.31.0", "@theia/monaco-editor-core": "1.67.2", - "@theia/search-in-workspace": "1.30.0", - "@theia/userstorage": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/search-in-workspace": "1.31.0", + "@theia/userstorage": "1.31.0", + "@theia/workspace": "1.31.0", "ajv": "^6.5.3", "jsonc-parser": "^2.2.0", "perfect-scrollbar": "^1.3.0" diff --git a/packages/typehierarchy/package.json b/packages/typehierarchy/package.json index 33cea613690e9..fc08c54ec45f6 100644 --- a/packages/typehierarchy/package.json +++ b/packages/typehierarchy/package.json @@ -1,10 +1,10 @@ { "name": "@theia/typehierarchy", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Type Hierarchy Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/editor": "1.30.0", + "@theia/core": "1.31.0", + "@theia/editor": "1.31.0", "@types/uuid": "^7.0.3", "uuid": "^8.0.0" }, @@ -41,7 +41,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/userstorage/package.json b/packages/userstorage/package.json index 4877b1d23fa5f..3e8a16eb0f627 100644 --- a/packages/userstorage/package.json +++ b/packages/userstorage/package.json @@ -1,10 +1,10 @@ { "name": "@theia/userstorage", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - User Storage Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/filesystem": "1.30.0" + "@theia/core": "1.31.0", + "@theia/filesystem": "1.31.0" }, "publishConfig": { "access": "public" @@ -39,7 +39,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/variable-resolver/package.json b/packages/variable-resolver/package.json index 666cbbd8b8430..e0c051992a8e8 100644 --- a/packages/variable-resolver/package.json +++ b/packages/variable-resolver/package.json @@ -1,9 +1,9 @@ { "name": "@theia/variable-resolver", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Variable Resolver Extension", "dependencies": { - "@theia/core": "1.30.0" + "@theia/core": "1.31.0" }, "publishConfig": { "access": "public" @@ -44,7 +44,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" diff --git a/packages/vsx-registry/package.json b/packages/vsx-registry/package.json index edfb50835bb73..93e0986562238 100644 --- a/packages/vsx-registry/package.json +++ b/packages/vsx-registry/package.json @@ -1,15 +1,15 @@ { "name": "@theia/vsx-registry", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - VSX Registry", "dependencies": { - "@theia/core": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/ovsx-client": "1.30.0", - "@theia/plugin-ext": "1.30.0", - "@theia/plugin-ext-vscode": "1.30.0", - "@theia/preferences": "1.30.0", - "@theia/workspace": "1.30.0", + "@theia/core": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/ovsx-client": "1.31.0", + "@theia/plugin-ext": "1.31.0", + "@theia/plugin-ext-vscode": "1.31.0", + "@theia/preferences": "1.31.0", + "@theia/workspace": "1.31.0", "luxon": "^2.4.0", "p-debounce": "^2.1.0", "semver": "^5.4.1", @@ -49,7 +49,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0", + "@theia/ext-scripts": "1.31.0", "@types/luxon": "^2.3.2" }, "nyc": { diff --git a/packages/workspace/package.json b/packages/workspace/package.json index fc86d50a3b6e7..9d0baddaffc64 100644 --- a/packages/workspace/package.json +++ b/packages/workspace/package.json @@ -1,11 +1,11 @@ { "name": "@theia/workspace", - "version": "1.30.0", + "version": "1.31.0", "description": "Theia - Workspace Extension", "dependencies": { - "@theia/core": "1.30.0", - "@theia/filesystem": "1.30.0", - "@theia/variable-resolver": "1.30.0", + "@theia/core": "1.31.0", + "@theia/filesystem": "1.31.0", + "@theia/variable-resolver": "1.31.0", "jsonc-parser": "^2.2.0", "valid-filename": "^2.0.1" }, @@ -43,7 +43,7 @@ "watch": "theiaext watch" }, "devDependencies": { - "@theia/ext-scripts": "1.30.0" + "@theia/ext-scripts": "1.31.0" }, "nyc": { "extends": "../../configs/nyc.json" From eb4b0475f3f18e9a3f2f9ebafa9087d9d01a6016 Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Thu, 27 Oct 2022 14:48:00 -0400 Subject: [PATCH 05/11] core: update re-exports for `1.31.0` Signed-off-by: vince-fugnitto --- packages/core/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/core/README.md b/packages/core/README.md index 18f987d7573a9..0bf55bc38a4ea 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -86,12 +86,12 @@ export class SomeClass { - `@phosphor/signaling` (from [`@phosphor/signaling@1`](https://www.npmjs.com/package/@phosphor/signaling)) - `@phosphor/virtualdom` (from [`@phosphor/virtualdom@1`](https://www.npmjs.com/package/@phosphor/virtualdom)) - `@phosphor/widgets` (from [`@phosphor/widgets@1`](https://www.npmjs.com/package/@phosphor/widgets)) - - `@theia/application-package` (from [`@theia/application-package@1.30.0`](https://www.npmjs.com/package/@theia/application-package/v/1.30.0)) - - `@theia/application-package/lib/api` (from [`@theia/application-package@1.30.0`](https://www.npmjs.com/package/@theia/application-package/v/1.30.0)) - - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.30.0`](https://www.npmjs.com/package/@theia/application-package/v/1.30.0)) - - `@theia/request` (from [`@theia/request@1.30.0`](https://www.npmjs.com/package/@theia/request/v/1.30.0)) - - `@theia/request/lib/proxy` (from [`@theia/request@1.30.0`](https://www.npmjs.com/package/@theia/request/v/1.30.0)) - - `@theia/request/lib/node-request-service` (from [`@theia/request@1.30.0`](https://www.npmjs.com/package/@theia/request/v/1.30.0)) + - `@theia/application-package` (from [`@theia/application-package@1.31.0`](https://www.npmjs.com/package/@theia/application-package/v/1.31.0)) + - `@theia/application-package/lib/api` (from [`@theia/application-package@1.31.0`](https://www.npmjs.com/package/@theia/application-package/v/1.31.0)) + - `@theia/application-package/lib/environment` (from [`@theia/application-package@1.31.0`](https://www.npmjs.com/package/@theia/application-package/v/1.31.0)) + - `@theia/request` (from [`@theia/request@1.31.0`](https://www.npmjs.com/package/@theia/request/v/1.31.0)) + - `@theia/request/lib/proxy` (from [`@theia/request@1.31.0`](https://www.npmjs.com/package/@theia/request/v/1.31.0)) + - `@theia/request/lib/node-request-service` (from [`@theia/request@1.31.0`](https://www.npmjs.com/package/@theia/request/v/1.31.0)) - `fs-extra` (from [`fs-extra@^4.0.2`](https://www.npmjs.com/package/fs-extra)) - `fuzzy` (from [`fuzzy@^0.1.3`](https://www.npmjs.com/package/fuzzy)) - `inversify` (from [`inversify@^5.1.1`](https://www.npmjs.com/package/inversify)) From 1242e2884b41cfec3e4bc7bc613edf8168ac8f75 Mon Sep 17 00:00:00 2001 From: Hanksha Date: Fri, 28 Oct 2022 14:52:08 +0200 Subject: [PATCH 06/11] git: add unit tests for `GitScmProvider.unstageAll` (#11806) The commit adds unit tests for `GitScmProvider.unstageAll` to confirm that unstaging works correctly. Signed-off-by: Vivien Jovet --- .../git/src/browser/git-scm-provider.spec.ts | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 packages/git/src/browser/git-scm-provider.spec.ts diff --git a/packages/git/src/browser/git-scm-provider.spec.ts b/packages/git/src/browser/git-scm-provider.spec.ts new file mode 100644 index 0000000000000..dfab2d7ef4be9 --- /dev/null +++ b/packages/git/src/browser/git-scm-provider.spec.ts @@ -0,0 +1,143 @@ +// ***************************************************************************** +// Copyright (C) 2022 Toro Cloud Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// http://www.eclipse.org/legal/epl-2.0. +// +// This Source Code may also be made available under the following Secondary +// Licenses when the conditions for such availability set forth in the Eclipse +// Public License v. 2.0 are satisfied: GNU General Public License, version 2 +// with the GNU Classpath Exception which is available at +// https://www.gnu.org/software/classpath/license.html. +// +// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +// ***************************************************************************** + +import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom'; +let disableJSDOM = enableJSDOM(); + +import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider'; +FrontendApplicationConfigProvider.set({}); + +import { CommandService, Disposable, ILogger, MessageService } from '@theia/core'; +import { LabelProvider } from '@theia/core/lib/browser'; +import { FileUri } from '@theia/core/lib/node'; +import { Container } from '@theia/core/shared/inversify'; +import { EditorManager } from '@theia/editor/lib/browser'; +import { FileService } from '@theia/filesystem/lib/browser/file-service'; +import { ScmInput } from '@theia/scm/lib/browser/scm-input'; +import { expect } from 'chai'; +import * as fs from 'fs-extra'; +import * as os from 'os'; +import * as path from 'path'; +import * as rimraf from 'rimraf'; +import * as sinon from 'sinon'; +import { Git, GitFileStatus, Repository } from '../common'; +import { DugiteGit } from '../node/dugite-git'; +import { DefaultGitEnvProvider, GitEnvProvider } from '../node/env/git-env-provider'; +import { bindGit } from '../node/git-backend-module'; +import { GitRepositoryWatcher, GitRepositoryWatcherFactory } from '../node/git-repository-watcher'; +import { GitErrorHandler } from './git-error-handler'; +import { GitPreferences } from './git-preferences'; +import { GitScmProvider, GitScmProviderOptions } from './git-scm-provider'; + +disableJSDOM(); + +describe('GitScmProvider', () => { + let testContainer: Container; + let mockEditorManager: EditorManager; + let mockGitErrorHandler: GitErrorHandler; + let mockFileService: FileService; + let git: Git; + let mockCommandService: CommandService; + let mockLabelProvider: LabelProvider; + let gitScmProvider: GitScmProvider; + const repository: Repository = { + localUri: FileUri.create(path.join(os.tmpdir(), 'GitScmProvider.test', 'repoA')).toString() + }; + + before(() => { + disableJSDOM = enableJSDOM(); + }); + after(async () => { + disableJSDOM(); + }); + + beforeEach(async () => { + mockEditorManager = sinon.createStubInstance(EditorManager); + mockGitErrorHandler = sinon.createStubInstance(GitErrorHandler); + mockFileService = sinon.createStubInstance(FileService); + git = sinon.createStubInstance(DugiteGit); + mockCommandService = {} as CommandService; + mockLabelProvider = sinon.createStubInstance(LabelProvider); + + testContainer = new Container(); + testContainer.bind(EditorManager).toConstantValue(mockEditorManager); + testContainer.bind(GitErrorHandler).toConstantValue(mockGitErrorHandler); + testContainer.bind(FileService).toConstantValue(mockFileService); + testContainer.bind(ILogger).toConstantValue(console); + testContainer.bind(GitEnvProvider).to(DefaultGitEnvProvider); + bindGit(testContainer.bind.bind(testContainer)); + + // We have to mock the watcher because it runs after the afterEach + // which removes the git repository, causing an error in the watcher + // which tries to get the git repo status. + testContainer.rebind(GitRepositoryWatcherFactory).toConstantValue(() => { + const mockWatcher = sinon.createStubInstance(GitRepositoryWatcher); + mockWatcher.sync.resolves(); + return mockWatcher; + }); + + testContainer.bind(MessageService).toConstantValue(sinon.createStubInstance(MessageService)); + testContainer.bind(CommandService).toConstantValue(mockCommandService); + testContainer.bind(LabelProvider).toConstantValue(mockLabelProvider); + testContainer.bind(GitPreferences).toConstantValue({ onPreferenceChanged: () => Disposable.NULL }); + testContainer.bind(GitScmProviderOptions).toConstantValue({ + repository + } as GitScmProviderOptions); + testContainer.bind(GitScmProvider).toSelf(); + gitScmProvider = testContainer.get(GitScmProvider); + gitScmProvider.input = sinon.createStubInstance(ScmInput); + + git = testContainer.get(Git); + await fs.mkdirp(FileUri.fsPath(repository.localUri)); + await git.exec(repository, ['init']); + }); + + afterEach(async () => { + await new Promise((resolve, reject) => rimraf(FileUri.fsPath(repository.localUri), error => { + if (error) { + reject(error); + } + resolve(); + })); + }); + + it('should unstage all the changes', async () => { + const uris = [ + repository.localUri + '/test1.txt', + repository.localUri + '/test2.txt' + ]; + + await Promise.all(uris.map(uri => fs.createFile(FileUri.fsPath(uri)))); + + await git.add(repository, uris); + + gitScmProvider.setStatus({ + changes: uris.map(uri => ({ + status: GitFileStatus.New, + uri, + staged: true + })), + exists: true + }); + expect(gitScmProvider.stagedChanges.length).to.eq(2); + + await gitScmProvider.unstageAll(); + + const status = await git.status(repository); + expect(status.changes.filter(change => change.staged).length).to.eq(0); + expect(status.changes.filter(change => !change.staged).length).to.eq(2); + }); +}); From 0a67da25bfd6b45f3e9c605e3a358f3a1a1f14be Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Fri, 28 Oct 2022 08:56:03 -0400 Subject: [PATCH 07/11] docs: update `1.31.0` changelog for `unstage all` The commit adds an entry for the `unstage all` fix in the `1.31.0` changelog. Signed-off-by: vince-fugnitto --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51916eced7c80..c1a5984d9ebaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ## v1.31.0 - 10/27/2022 - [debug] added confirmation message for debug exit [#11546](https://github.com/eclipse-theia/theia/pull/11546) +- [git] fixed the implementation of the `unstage all` command [#11805](https://github.com/eclipse-theia/theia/pull/11805) - [messages] fixed transparent notifications issue [#11714](https://github.com/eclipse-theia/theia/pull/11714) - [monaco] fixed issue with `editor-*` preferences not being applied properly [#11711](https://github.com/eclipse-theia/theia/pull/11711) - [output] fixed issue with channel selector [#11727](https://github.com/eclipse-theia/theia/pull/11727) From 4ae2a68f1e34d692571eed2b0016679f26789400 Mon Sep 17 00:00:00 2001 From: Vincent Fugnitto Date: Mon, 31 Oct 2022 12:37:30 -0400 Subject: [PATCH 08/11] deps: upgrade `socket.io` (#11819) The commit upgrades `socket.io` to fix a known critical vulnerability with `socket.io-parser`. CVE: https://security.snyk.io/vuln/SNYK-JS-SOCKETIOPARSER-3091012 Signed-off-by: vince-fugnitto --- packages/core/package.json | 4 +- yarn.lock | 126 +++++++++++-------------------------- 2 files changed, 40 insertions(+), 90 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 9e08233731daf..9176af37100d0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -65,8 +65,8 @@ "reflect-metadata": "^0.1.10", "route-parser": "^0.0.5", "safer-buffer": "^2.1.2", - "socket.io": "4.4.1", - "socket.io-client": "4.4.1", + "socket.io": "^4.5.3", + "socket.io-client": "^4.5.3", "uuid": "^8.3.2", "vscode-languageserver-protocol": "~3.15.3", "vscode-uri": "^2.1.1", diff --git a/yarn.lock b/yarn.lock index 9132a42549fda..611325d0ad737 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2240,10 +2240,10 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@socket.io/component-emitter@~3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz#8863915676f837d9dad7b76f50cb500c1e9422e9" - integrity sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q== +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== "@stroncium/procfs@^1.0.0": version "1.2.1" @@ -2333,11 +2333,6 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc" integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw== -"@types/component-emitter@^1.2.10": - version "1.2.11" - resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506" - integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ== - "@types/connect@*": version "3.4.35" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" @@ -3677,11 +3672,6 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -backo2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -4382,11 +4372,6 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - compression-webpack-plugin@^9.0.0: version "9.2.0" resolved "https://registry.yarnpkg.com/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz#57fd539d17c5907eebdeb4e83dcfe2d7eceb9ef6" @@ -5243,30 +5228,26 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -engine.io-client@~6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.1.1.tgz#800d4b9db5487d169686729e5bd887afa78d36b0" - integrity sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g== +engine.io-client@~6.2.3: + version "6.2.3" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.2.3.tgz#a8cbdab003162529db85e9de31575097f6d29458" + integrity sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw== dependencies: - "@socket.io/component-emitter" "~3.0.0" + "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" - engine.io-parser "~5.0.0" - has-cors "1.1.0" - parseqs "0.0.6" - parseuri "0.0.6" + engine.io-parser "~5.0.3" ws "~8.2.3" xmlhttprequest-ssl "~2.0.0" - yeast "0.1.2" -engine.io-parser@~5.0.0, engine.io-parser@~5.0.3: +engine.io-parser@~5.0.3: version "5.0.4" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== -engine.io@~6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.1.3.tgz#f156293d011d99a3df5691ac29d63737c3302e6f" - integrity sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA== +engine.io@~6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0" + integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg== dependencies: "@types/cookie" "^0.4.1" "@types/cors" "^2.8.12" @@ -6567,11 +6548,6 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA== - has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" @@ -9203,16 +9179,6 @@ parse5@4.0.0, parse5@^4.0.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== -parseqs@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" - integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== - -parseuri@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" - integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== - parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -10490,51 +10456,40 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -socket.io-adapter@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz#4d6111e4d42e9f7646e365b4f578269821f13486" - integrity sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ== +socket.io-adapter@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" + integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== -socket.io-client@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.4.1.tgz#b6aa9448149d09b8d0b2bbf3d2fac310631fdec9" - integrity sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ== +socket.io-client@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.5.3.tgz#bed69209d001465b2fea650d2e95c1e82768ab5e" + integrity sha512-I/hqDYpQ6JKwtJOf5ikM+Qz+YujZPMEl6qBLhxiP0nX+TfXKhW4KZZG8lamrD6Y5ngjmYHreESVasVCgi5Kl3A== dependencies: - "@socket.io/component-emitter" "~3.0.0" - backo2 "~1.0.2" + "@socket.io/component-emitter" "~3.1.0" debug "~4.3.2" - engine.io-client "~6.1.1" - parseuri "0.0.6" - socket.io-parser "~4.1.1" - -socket.io-parser@~4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.5.tgz#cb404382c32324cc962f27f3a44058cf6e0552df" - integrity sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig== - dependencies: - "@types/component-emitter" "^1.2.10" - component-emitter "~1.3.0" - debug "~4.3.1" + engine.io-client "~6.2.3" + socket.io-parser "~4.2.0" -socket.io-parser@~4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.1.2.tgz#0a97d4fb8e67022158a568450a6e41887e42035e" - integrity sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog== +socket.io-parser@~4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" + integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== dependencies: - "@socket.io/component-emitter" "~3.0.0" + "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -socket.io@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.4.1.tgz#cd6de29e277a161d176832bb24f64ee045c56ab8" - integrity sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg== +socket.io@^4.5.3: + version "4.5.3" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.3.tgz#44dffea48d7f5aa41df4a66377c386b953bc521c" + integrity sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg== dependencies: accepts "~1.3.4" base64id "~2.0.0" debug "~4.3.2" - engine.io "~6.1.0" - socket.io-adapter "~2.3.3" - socket.io-parser "~4.0.4" + engine.io "~6.2.0" + socket.io-adapter "~2.4.0" + socket.io-parser "~4.2.0" socks-proxy-agent@^5.0.0: version "5.0.1" @@ -12297,11 +12252,6 @@ yauzl@^2.10.0, yauzl@^2.4.2: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg== - yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 72fedc06a312ac2b28f28cbd9237286561c9c236 Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Mon, 31 Oct 2022 10:34:29 -0400 Subject: [PATCH 09/11] repo: upgrade `mocha` The commit includes the following changes: - upgrades `lerna` - upgrades `mocha` including our config files - upgrades `minimatch` The main reason of the upgrade was to fix known vulnerabilties and benefit from the newer mocha version. Signed-off-by: vince-fugnitto --- .vscode/launch.json | 4 +- configs/mocha.opts | 5 - configs/mocharc.yml | 7 + dev-packages/cli/package.json | 6 +- dev-packages/cli/src/test-page.ts | 4 +- dev-packages/private-ext-scripts/package.json | 4 +- package.json | 4 +- packages/filesystem/package.json | 2 +- packages/navigator/package.json | 2 +- packages/search-in-workspace/package.json | 2 +- yarn.lock | 1489 ++++++++--------- 11 files changed, 730 insertions(+), 799 deletions(-) delete mode 100644 configs/mocha.opts create mode 100644 configs/mocharc.yml diff --git a/.vscode/launch.json b/.vscode/launch.json index 3e935e83a6cca..33661222da358 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -128,8 +128,8 @@ "args": [ "--no-timeouts", "--colors", - "--opts", - "${workspaceFolder}/configs/mocha.opts", + "--config", + "${workspaceFolder}/configs/mocharc.yml", "**/${fileBasenameNoExtension}.js" ], "env": { diff --git a/configs/mocha.opts b/configs/mocha.opts deleted file mode 100644 index 5e9e81f04d001..0000000000000 --- a/configs/mocha.opts +++ /dev/null @@ -1,5 +0,0 @@ ---require ignore-styles ---require reflect-metadata/Reflect ---reporter spec ---watch-extensions js ---exit diff --git a/configs/mocharc.yml b/configs/mocharc.yml new file mode 100644 index 0000000000000..8bf8b95d7276f --- /dev/null +++ b/configs/mocharc.yml @@ -0,0 +1,7 @@ +require: + - 'ignore-styles' + - 'reflect-metadata/Reflect' +reporter: 'spec' +watch-files: + - '**/*.js' +exit: true diff --git a/dev-packages/cli/package.json b/dev-packages/cli/package.json index e4485c9c7ada9..13ff3064343c2 100644 --- a/dev-packages/cli/package.json +++ b/dev-packages/cli/package.json @@ -37,7 +37,7 @@ "@theia/ovsx-client": "1.31.0", "@theia/request": "1.31.0", "@types/chai": "^4.2.7", - "@types/mocha": "^5.2.7", + "@types/mocha": "^10.0.0", "@types/node-fetch": "^2.5.7", "@types/puppeteer": "^2.0.0", "chai": "^4.2.0", @@ -45,7 +45,7 @@ "decompress": "^4.2.1", "glob": "^8.0.3", "log-update": "^4.0.0", - "mocha": "^7.0.0", + "mocha": "^10.1.0", "puppeteer": "^2.0.0", "puppeteer-to-istanbul": "^1.2.2", "temp": "^0.9.1", @@ -53,7 +53,7 @@ }, "devDependencies": { "@types/chai": "^4.2.7", - "@types/mocha": "^5.2.7", + "@types/mocha": "^10.0.0", "@types/node-fetch": "^2.5.7", "@types/proxy-from-env": "^1.0.1", "@types/puppeteer": "^2.0.0" diff --git a/dev-packages/cli/src/test-page.ts b/dev-packages/cli/src/test-page.ts index cfd8332dee89a..29e50554f2a10 100644 --- a/dev-packages/cli/src/test-page.ts +++ b/dev-packages/cli/src/test-page.ts @@ -112,9 +112,9 @@ export default async function newTestPage(options: TestPageOptions): Promise=14.8.6 < 16" chalk "^4.1.0" dedent "^0.7.0" load-json-file "^6.2.0" @@ -1748,10 +1748,10 @@ slash "^3.0.0" write-json-file "^4.3.0" -"@lerna/write-log-file@5.5.4": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-5.5.4.tgz#28d04afa813457a58c6d32d8a4b4581cbaf34d02" - integrity sha512-PDdVuWHLkMw6ygP1hKTciphmYKRDTmNJASxVlxxOv9UkZe7QQvfke0i/OXNPRZHJK7eKCtv2Zu91amE8qCjVNw== +"@lerna/write-log-file@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-6.0.1.tgz#4335d5e08686f8250ebae9d7f56b64452bd90cd3" + integrity sha512-fJGDE8rlE35DwKSqV8M1VV2xw/vQlgwTwURjNOMvd1Ar23Aa9CkJC4XAwc9uUgIku34IsWUM8MNbw9ClSsJaqw== dependencies: npmlog "^6.0.2" write-file-atomic "^4.0.1" @@ -1948,19 +1948,30 @@ read-package-json-fast "^2.0.3" which "^2.0.2" -"@nrwl/cli@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.0.0.tgz#7b00d95a6502f83fdd84f8888fd1ba7a180cdd07" - integrity sha512-D0zAhZ375bQnoUM2HLifMzAa75A3/lC9OkkewsiVVbqaznjEIry8ezHZepgfjFRVzLr3ue7FIpDEH3iJIYzvVw== +"@nrwl/cli@15.0.4": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.0.4.tgz#a10da4912d525c4ebc14d3a19810c7e5f09d0ac0" + integrity sha512-H3lni8iXUOzWTg1nH4YqOYxpyDz8Bq1Y30bb26r5yRlhdwsNtDBCZCaJQim8yCqYXYJVbxQnU4Ree2WR8xSg/g== dependencies: - nx "15.0.0" + nx "15.0.4" + +"@nrwl/devkit@>=14.8.6 < 16": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.0.4.tgz#5139b236bef73e8f680478a4b5d76daad5c39e22" + integrity sha512-m32ust10hw2zZyWuspJNHeRGFzfvpgz8TI6OXsOt39TEk8aZiPm3CjxyKW0ntkwS6/VoYqVL7Xz+Q49R0UlItA== + dependencies: + "@phenomnomnominal/tsquery" "4.1.1" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.3.4" + tslib "^2.3.0" -"@nrwl/tao@15.0.0": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.0.0.tgz#128499a4256e408716f7347131a3ed32d1fec5f0" - integrity sha512-qup1eSWYwp/KVrw/wxeWBvYttQ9dcbQnqpXb5NQMD31SpXEZSpJB1i3GV/o6CF5qQQSNLwICXZx25rNTTQAqpg== +"@nrwl/tao@15.0.4": + version "15.0.4" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.0.4.tgz#193bf740bd1811d8506de79ce34a70086705b028" + integrity sha512-hBmHI6Zlq/bAyeF+SPa9EJdWEFGAAUB+puz2jQfPWcyvTBTYDwqimLNJCaj8uy+aXBmrRCjmfNSBvgNxRiA0Sg== dependencies: - nx "15.0.0" + nx "15.0.4" "@octokit/auth-token@^3.0.0": version "3.0.2" @@ -2076,6 +2087,13 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" +"@phenomnomnominal/tsquery@4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz#42971b83590e9d853d024ddb04a18085a36518df" + integrity sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ== + dependencies: + esquery "^1.0.1" + "@phosphor/algorithm@1", "@phosphor/algorithm@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@phosphor/algorithm/-/algorithm-1.2.0.tgz#4a19aa59261b7270be696672dc3f0663f7bef152" @@ -2581,10 +2599,10 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== -"@types/mocha@^5.2.7": - version "5.2.7" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" - integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== +"@types/mocha@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.0.tgz#3d9018c575f0e3f7386c1de80ee66cc21fbb7a52" + integrity sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg== "@types/multer@^1.4.7": version "1.4.7" @@ -2942,6 +2960,11 @@ "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + "@virtuoso.dev/react-urx@^0.2.12": version "0.2.13" resolved "https://registry.yarnpkg.com/@virtuoso.dev/react-urx/-/react-urx-0.2.13.tgz#e2cfc42d259d2a002695e7517d34cb97b64ee9c4" @@ -3308,10 +3331,10 @@ anser@^2.0.1: resolved "https://registry.yarnpkg.com/anser/-/anser-2.1.1.tgz#8afae28d345424c82de89cc0e4d1348eb0c5af7c" integrity sha512-nqLm4HxOTpeLOxcmB3QWmV5TcDFhW9y/fyQ+hivtDFcK4OQ+pQ5fzPnXHM1Mfcm0VkLtvVi1TCPr++Qy0Q/3EQ== -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-colors@^4.1.1: version "4.1.3" @@ -3330,22 +3353,12 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^3.2.0, ansi-styles@^3.2.1: +ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== @@ -3359,7 +3372,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -anymatch@~3.1.1, anymatch@~3.1.2: +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== @@ -3490,17 +3503,6 @@ array.prototype.flatmap@^1.3.0: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3560,6 +3562,11 @@ async-mutex@^0.3.1: dependencies: tslib "^2.3.1" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -4032,6 +4039,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + caniuse-lite@^1.0.30001400: version "1.0.30001420" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001420.tgz#f62f35f051e0b6d25532cf376776d41e45b47ef6" @@ -4100,7 +4112,7 @@ chalk@4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4109,7 +4121,7 @@ chalk@^2.0.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4134,22 +4146,7 @@ checksum@^0.1.1: dependencies: optimist "~0.3.5" -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.2.0" - optionalDependencies: - fsevents "~2.1.1" - -chokidar@^3.5.1: +chokidar@3.5.3, chokidar@^3.5.1: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -4216,15 +4213,6 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -4751,20 +4739,20 @@ debug@2.6.9, debug@^2.6.9: dependencies: ms "2.0.0" -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -4790,6 +4778,11 @@ decamelize@^1.1.0, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -4925,7 +4918,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: +define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== @@ -4996,7 +4989,12 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" -diff@3.5.0, diff@^3.4.0: +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^3.4.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== @@ -5132,18 +5130,24 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-mocha@^8.2.0: - version "8.2.2" - resolved "https://registry.yarnpkg.com/electron-mocha/-/electron-mocha-8.2.2.tgz#871d1fbbffcfdb7b880bbaf299e33ba993b4fe71" - integrity sha512-kMXj+1TzQQODP0osIAg82YpwOsfRKx0xV+F5AxV+3UP54CIPwxaeZYC6pQoEVZBRKyPbcrhQzl8ar+6uGMvaUA== +ejs@^3.1.7: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + +electron-mocha@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/electron-mocha/-/electron-mocha-11.0.2.tgz#f8fd6c3af539f3c7a9aed4aba29cf12c3f408810" + integrity sha512-fOk+zUgSIsmL2cuIrd7IlK4eRhGVi1PYIB3QvqiBO+6f6AP8XLkYkT9eORlL2xwaS3yAAk02Y+4OTuhtqHPkEQ== dependencies: ansi-colors "^4.1.1" electron-window "^0.8.0" - fs-extra "^9.0.0" - log-symbols "^3.0.0" - mocha "^7.1.2" + fs-extra "^10.0.0" + mocha "^9.1.1" which "^2.0.2" - yargs "^15.3.1" + yargs "^16.2.0" electron-rebuild@^3.2.7: version "3.2.9" @@ -5194,11 +5198,6 @@ electron@^15.3.5: "@types/node" "^14.6.2" extract-zip "^1.0.3" -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -5309,7 +5308,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: version "1.20.4" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861" integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA== @@ -5339,11 +5338,6 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" @@ -5385,16 +5379,16 @@ escape-html@^1.0.3, escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escodegen@^1.9.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" @@ -5577,7 +5571,7 @@ esprima@~3.1.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg== -esquery@^1.4.0: +esquery@^1.0.1, esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -5854,6 +5848,13 @@ file-uri-to-path@2: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + filename-reserved-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" @@ -5913,12 +5914,13 @@ find-git-repositories@^0.1.1: dependencies: nan "^2.14.0" -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - locate-path "^3.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" find-up@^2.0.0: version "2.1.0" @@ -5927,6 +5929,13 @@ find-up@^2.0.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -5950,13 +5959,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flat@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" - integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== - dependencies: - is-buffer "~2.0.3" - flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" @@ -6078,7 +6080,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.0, fs-extra@^9.0.8, fs-extra@^9.1.0: +fs-extra@^9.0.8, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -6107,11 +6109,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -6345,7 +6342,7 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -6357,10 +6354,10 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +glob@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -6369,10 +6366,10 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -6570,7 +6567,7 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" -has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -6956,11 +6953,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -7014,11 +7006,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -7078,7 +7065,7 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.0.0: +is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== @@ -7272,6 +7259,16 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -7291,14 +7288,6 @@ js-levenshtein@^1.1.6: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - js-yaml@4.1.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -7529,30 +7518,33 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -lerna@5.5.4: - version "5.5.4" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-5.5.4.tgz#34d95dd3e26c725ce4ba981b887aaf59ce899519" - integrity sha512-LAFQ/U6SL7/EM0sedtFaFS4b0RbTqsYYOJ6LV9Y7l/zWFlqLcg41vLblkNRuxsNB5FZBNpfiWvXmd1KiWkQ/yQ== - dependencies: - "@lerna/add" "5.5.4" - "@lerna/bootstrap" "5.5.4" - "@lerna/changed" "5.5.4" - "@lerna/clean" "5.5.4" - "@lerna/cli" "5.5.4" - "@lerna/create" "5.5.4" - "@lerna/diff" "5.5.4" - "@lerna/exec" "5.5.4" - "@lerna/import" "5.5.4" - "@lerna/info" "5.5.4" - "@lerna/init" "5.5.4" - "@lerna/link" "5.5.4" - "@lerna/list" "5.5.4" - "@lerna/publish" "5.5.4" - "@lerna/run" "5.5.4" - "@lerna/version" "5.5.4" +lerna@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.0.1.tgz#7b14f05d1e17dc628478d33f225a579a6088d317" + integrity sha512-aNodtj1jyuEqzYmkYh+vTfRuzLkG3RZkvYxFCuLeXXzIYD5pjMHtf+1q4m03SPsZt+cElhhwkgjdg6GjihraBw== + dependencies: + "@lerna/add" "6.0.1" + "@lerna/bootstrap" "6.0.1" + "@lerna/changed" "6.0.1" + "@lerna/clean" "6.0.1" + "@lerna/cli" "6.0.1" + "@lerna/command" "6.0.1" + "@lerna/create" "6.0.1" + "@lerna/diff" "6.0.1" + "@lerna/exec" "6.0.1" + "@lerna/import" "6.0.1" + "@lerna/info" "6.0.1" + "@lerna/init" "6.0.1" + "@lerna/link" "6.0.1" + "@lerna/list" "6.0.1" + "@lerna/publish" "6.0.1" + "@lerna/run" "6.0.1" + "@lerna/version" "6.0.1" + "@nrwl/devkit" ">=14.8.6 < 16" import-local "^3.0.2" + inquirer "^8.2.4" npmlog "^6.0.2" - nx ">=14.6.1 < 16" + nx ">=14.8.6 < 16" typescript "^3 || ^4" less@^3.0.3: @@ -7698,6 +7690,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -7748,14 +7747,7 @@ lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.5. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@3.0.0, log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -log-symbols@^4.1.0: +log-symbols@4.1.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -8047,13 +8039,6 @@ mini-css-extract-plugin@^2.6.1: dependencies: schema-utils "^4.0.0" -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -8061,6 +8046,20 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.0, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -8180,13 +8179,6 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.4, mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -8199,35 +8191,62 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^7.0.0, mocha@^7.1.2: - version "7.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" - integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== +mocha@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.1.0.tgz#dbf1114b7c3f9d0ca5de3133906aea3dfc89ef7a" + integrity sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mocha@^9.1.1: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: - ansi-colors "3.2.3" + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.3.0" - debug "3.2.6" - diff "3.5.0" - escape-string-regexp "1.0.5" - find-up "3.0.0" - glob "7.1.3" + chokidar "3.5.3" + debug "4.3.3" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" growl "1.10.5" he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.0.0" - minimatch "3.0.4" - mkdirp "0.5.5" - ms "2.1.1" - node-environment-flags "1.0.6" - object.assign "4.1.0" - strip-json-comments "2.0.1" - supports-color "6.0.0" - which "1.3.1" - wide-align "1.1.3" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" + ms "2.1.3" + nanoid "3.3.1" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.2.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" modify-values@^1.0.0: version "1.0.1" @@ -8257,11 +8276,6 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -8343,6 +8357,16 @@ nano@^9.0.5: qs "^6.9.4" tough-cookie "^4.0.0" +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -8425,14 +8449,6 @@ node-api-version@^0.1.4: dependencies: semver "^7.3.5" -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -8709,13 +8725,13 @@ nwsapi@^2.0.7: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== -nx@15.0.0, "nx@>=14.6.1 < 16": - version "15.0.0" - resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.0.tgz#8f1a291b7393861242b5c0f0d03c6317aed9c182" - integrity sha512-uh9Ou5oj7yr6Uyp4QhqW1vIVoanYn1sJM1jzOyoT17GAhhODfS0BtQgUvlmInDuRqP8LMaPg4LXFMby07U1HXg== +nx@15.0.4, "nx@>=14.8.6 < 16": + version "15.0.4" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.0.4.tgz#7299d4670c6a58584d47ca79ef79bec450163514" + integrity sha512-tCCiVJgCiX/R2zlL73dQsY49AxR/cA0dHX764KvLWIvB0mO8Zb7UWAwb8sdIbop3DqtGCopRTsAdOBcZXbe/9A== dependencies: - "@nrwl/cli" "15.0.0" - "@nrwl/tao" "15.0.0" + "@nrwl/cli" "15.0.4" + "@nrwl/tao" "15.0.4" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "^3.0.0-rc.18" @@ -8798,21 +8814,11 @@ object-inspect@^1.12.2, object-inspect@^1.9.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -object-keys@^1.0.11, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - object.assign@^4.1.0, object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" @@ -8841,16 +8847,6 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.0.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== - dependencies: - array.prototype.reduce "^1.0.4" - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.1" - object.hasown@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" @@ -8995,7 +8991,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -9023,6 +9019,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-map-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" @@ -9851,13 +9854,6 @@ readdir-scoped-modules@^1.1.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -10254,7 +10250,7 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.6.0, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -10304,6 +10300,13 @@ serialize-error@^7.0.1: dependencies: type-fest "^0.13.1" +serialize-javascript@6.0.0, serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -10311,13 +10314,6 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" @@ -10708,14 +10704,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -10725,15 +10713,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" @@ -10792,20 +10771,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -10847,16 +10812,16 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@2.0.1, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + strip-outer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" @@ -10888,12 +10853,12 @@ sumchecker@^3.0.1: dependencies: debug "^4.1.0" -supports-color@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== +supports-color@8.1.1, supports-color@^8.0.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 "^3.0.0" + has-flag "^4.0.0" supports-color@^3.2.3: version "3.2.3" @@ -10916,13 +10881,6 @@ supports-color@^7.1.0, supports-color@^7.2.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.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" @@ -11873,26 +11831,19 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.1.0.tgz#35ccf7b1a0fce87bd8b92a478c9d045785d3bf35" integrity sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA== -which@1.3.1, which@^1.2.0, which@^1.2.8, which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: +which@2.0.2, which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +which@^1.2.0, which@^1.2.8, which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: - string-width "^1.0.2 || 2" + isexe "^2.0.0" wide-align@^1.1.0, wide-align@^1.1.5: version "1.1.5" @@ -11929,14 +11880,15 @@ worker-loader@^3.0.8: loader-utils "^2.0.0" schema-utils "^3.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== wrap-ansi@^6.2.0: version "6.2.0" @@ -12140,14 +12092,6 @@ yaml@^1.10.0: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@13.1.2, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" @@ -12176,30 +12120,28 @@ yargs-parser@^21.0.0: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" - integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: - flat "^4.1.0" - lodash "^4.17.15" - yargs "^13.3.0" + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" -yargs@13.3.2, yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== +yargs@16.2.0, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" yargs@^15.0.2, yargs@^15.3.1: version "15.4.1" @@ -12218,19 +12160,6 @@ yargs@^15.0.2, yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@^17.0.1, yargs@^17.4.0: version "17.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.0.tgz#e134900fc1f218bc230192bdec06a0a5f973e46c" From 000988a8ca23ef33909748f0bad976836f1d57c4 Mon Sep 17 00:00:00 2001 From: vince-fugnitto Date: Tue, 1 Nov 2022 11:53:02 -0400 Subject: [PATCH 10/11] security: `socket.io-parser` resolution docs The commit adds a note regarding the `socket.io-parser` resolution in our migration guide for downstream adopters. Signed-off-by: vince-fugnitto --- doc/Migration.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/Migration.md b/doc/Migration.md index 1461da2c052d1..b7489a0dbb6fc 100644 --- a/doc/Migration.md +++ b/doc/Migration.md @@ -9,13 +9,14 @@ Please see the latest version (`master`) for the most up-to-date information. Pl ### General -Due to a [colors.js](https://github.com/Marak/colors.js) issue, a [resolution](https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/) may be necessary for your application in order to workaround the problem: +Prior to [`v1.31.1`](https://github.com/eclipse-theia/theia/releases/tag/v1.31.1), a [resolution](https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/) might be necessary to work-around a recently discovered [critical vulnerability](https://security.snyk.io/vuln/SNYK-JS-SOCKETIOPARSER-3091012) in one of our runtime dependencies [socket.io-parser](https://github.com/socketio/socket.io-parser). For example: ```json "resolutions": { - "**/colors": "<=1.4.0" + "**/socket.io": "^4.5.3", + "**/socket.io-client": "^4.5.3" } ``` @@ -109,6 +110,18 @@ For more details, see the socket.io documentation about [using multiple nodes](h ### v1.22.0 +#### Resolutions + +Due to a [colors.js](https://github.com/Marak/colors.js) issue, a [resolution](https://classic.yarnpkg.com/lang/en/docs/selective-version-resolutions/) may be necessary for your application in order to workaround the problem: + +For example: + +```json +"resolutions": { + "**/colors": "<=1.4.0" +} +``` + #### Electron Update Electron got updated from 9 to 15, this might involve some modifications in your code based on the new APIs. From d5d67db470a88738fdac9593fd6e0393a206b2c8 Mon Sep 17 00:00:00 2001 From: Tobias Ortmayr Date: Tue, 8 Nov 2022 18:25:21 +0100 Subject: [PATCH 11/11] Use binary message RPC protocol for plugin API Refactors the plugin RPC protocol to make use of the new message-rpc introduced with #11011/#11228. - Refactor plugin-ext RpcProtocol API to reuse the new message-rpc protocol - Remove custom RPC message encoding and handling reuse message-rpc - Implement `BatchingChannel` that queues messages and sends them accumulated on the next process.tick (replaces the old Multiplexer implementation) - Refactors proxy handlers and remote target handlers - Use `Channel` instead of `MessageConnection` for creating new instances of RPCProtocol - Refactor `RpcMessageEncoder`/`RpcMessageDecoder` to enable overwritting of already registered value encoders/decoders. - Add mode property to base `RpcProtocol` to enable switching from a bidirectional RPC protocol to a client-only or server-only variant. - Implement special message encoders and decoders for the plugin communication. (Replacement for the old `ObjectTransferrer` JSON replacers/revivers) - Adapt `HostedPluginServer` and `HostedPluginClient` API to send/receive messages in binary format instead of strings. This enables direct writethrough of the binary messages received from the hosted plugin process. - Adapt `hosted-plugin-process` and `plugin-host` to directly send binary messages via `IpcChannel`/`BinaryMessagePipe` - Remove incorrect (and unused) notification proxy identifiers and instantiation - NotificationExt was instantiated in the main context - There were unused notification proxy identifiers for main and ext in the wrong contexts Part of #10684 Fixes #9514 Contributed on behalf of STMicroelectronics --- .../core/src/common/message-rpc/channel.ts | 25 +- .../message-rpc/msg-pack-extension-manager.ts | 87 +++ .../common/message-rpc/rpc-message-encoder.ts | 26 +- .../src/common/message-rpc/rpc-protocol.ts | 90 +-- packages/core/src/node/messaging/index.ts | 1 + packages/plugin-ext/src/common/index.ts | 4 + .../plugin-ext/src/common/plugin-api-rpc.ts | 2 - .../plugin-ext/src/common/plugin-protocol.ts | 8 +- .../plugin-ext/src/common/proxy-handler.ts | 126 +++++ .../plugin-ext/src/common/rpc-protocol.ts | 529 +++++------------- .../hosted/browser/hosted-plugin-watcher.ts | 7 +- .../src/hosted/browser/hosted-plugin.ts | 25 +- .../src/hosted/browser/plugin-worker.ts | 26 +- .../src/hosted/browser/worker/worker-main.ts | 51 +- .../src/hosted/node/hosted-plugin-process.ts | 41 +- .../src/hosted/node/hosted-plugin-protocol.ts | 49 ++ .../src/hosted/node/hosted-plugin.ts | 2 +- .../plugin-ext/src/hosted/node/plugin-host.ts | 33 +- .../src/hosted/node/plugin-service.ts | 2 +- .../src/main/browser/main-context.ts | 4 - packages/plugin-ext/src/plugin/types-impl.ts | 14 - 21 files changed, 579 insertions(+), 573 deletions(-) create mode 100644 packages/core/src/common/message-rpc/msg-pack-extension-manager.ts create mode 100644 packages/plugin-ext/src/common/proxy-handler.ts create mode 100644 packages/plugin-ext/src/hosted/node/hosted-plugin-protocol.ts diff --git a/packages/core/src/common/message-rpc/channel.ts b/packages/core/src/common/message-rpc/channel.ts index cff56221df2a8..5cc433fbb68d0 100644 --- a/packages/core/src/common/message-rpc/channel.ts +++ b/packages/core/src/common/message-rpc/channel.ts @@ -14,7 +14,6 @@ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 // ***************************************************************************** -import { injectable } from '../../../shared/inversify'; import { Disposable, DisposableCollection } from '../disposable'; import { Emitter, Event } from '../event'; import { ReadBuffer, WriteBuffer } from './message-buffer'; @@ -72,7 +71,6 @@ export type MessageProvider = () => ReadBuffer; * Reusable abstract {@link Channel} implementation that sets up * the basic channel event listeners and offers a generic close method. */ -@injectable() export abstract class AbstractChannel implements Channel { onCloseEmitter: Emitter = new Emitter(); @@ -101,7 +99,21 @@ export abstract class AbstractChannel implements Channel { } abstract getWriteBuffer(): WriteBuffer; +} + +/** + * A very basic {@link AbstractChannel} implementation which takes a function + * for retrieving the {@link WriteBuffer} as constructor argument. + */ +export class BasicChannel extends AbstractChannel { + + constructor(protected writeBufferProvider: () => WriteBuffer) { + super(); + } + getWriteBuffer(): WriteBuffer { + return this.writeBufferProvider(); + } } /** @@ -194,7 +206,7 @@ export class ChannelMultiplexer implements Disposable { return this.handleClose(id); } case MessageTypes.Data: { - return this.handleData(id, buffer.sliceAtReadPosition()); + return this.handleData(id, buffer); } } } @@ -206,7 +218,7 @@ export class ChannelMultiplexer implements Disposable { const channel = this.createChannel(id); this.pendingOpen.delete(id); this.openChannels.set(id, channel); - resolve!(channel); + resolve(channel); this.onOpenChannelEmitter.fire({ id, channel }); } } @@ -236,7 +248,7 @@ export class ChannelMultiplexer implements Disposable { protected handleData(id: string, data: ReadBuffer): void { const channel = this.openChannels.get(id); if (channel) { - channel.onMessageEmitter.fire(() => data); + channel.onMessageEmitter.fire(() => data.sliceAtReadPosition()); } } @@ -263,6 +275,9 @@ export class ChannelMultiplexer implements Disposable { } open(id: string): Promise { + if (this.openChannels.has(id)) { + throw new Error(`Another channel with the id '${id}' is already open.`); + } const result = new Promise((resolve, reject) => { this.pendingOpen.set(id, resolve); }); diff --git a/packages/core/src/common/message-rpc/msg-pack-extension-manager.ts b/packages/core/src/common/message-rpc/msg-pack-extension-manager.ts new file mode 100644 index 0000000000000..21cc4bcc63d22 --- /dev/null +++ b/packages/core/src/common/message-rpc/msg-pack-extension-manager.ts @@ -0,0 +1,87 @@ +// ***************************************************************************** +// Copyright (C) 2022 STMicroelectronics and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// http://www.eclipse.org/legal/epl-2.0. +// +// This Source Code may also be made available under the following Secondary +// Licenses when the conditions for such availability set forth in the Eclipse +// Public License v. 2.0 are satisfied: GNU General Public License, version 2 +// with the GNU Classpath Exception which is available at +// https://www.gnu.org/software/classpath/license.html. +// +// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +// ***************************************************************************** + +import { addExtension } from 'msgpackr'; +import { ResponseError } from './rpc-message-encoder'; + +/** + * Handles the global registration of custom MsgPackR extensions + * required for the default RPC communication. MsgPackR extensions + * are installed globally on both ends of the communication channel. + * (frontend-backend, pluginExt-pluginMain). + * Is implemented as singleton as it is also used in plugin child processes which have no access to inversify. + */ +export class MsgPackExtensionManager { + private static readonly INSTANCE = new MsgPackExtensionManager(); + public static getInstance(): MsgPackExtensionManager { + return this.INSTANCE; + } + + private extensions = new Map(); + + private constructor() { + } + + registerExtensions(...extensions: MsgPackExtension[]): void { + extensions.forEach(extension => { + if (extension.tag < 1 || extension.tag > 100) { + // MsgPackR reserves the tag range 1-100 for custom extensions. + throw new Error(`MsgPack extension tag should be a number from 1-100 but was '${extension.tag}'`); + } + if (this.extensions.has(extension.tag)) { + throw new Error(`Another MsgPack extension with the tag '${extension.tag}' is already registered`); + } + this.extensions.set(extension.tag, extension); + addExtension({ + Class: extension.class, + type: extension.tag, + write: extension.serialize, + read: extension.deserialize + }); + }); + } + + getExtension(tag: number): MsgPackExtension | undefined { + return this.extensions.get(tag); + } +} + +// Register custom msgPack extension for ResponseErrors. +MsgPackExtensionManager.getInstance().registerExtensions({ + class: ResponseError, + tag: 1, + serialize: (instance: ResponseError) => { + const { code, data, message, name, stack } = instance; + return { code, data, message, name, stack }; + }, + deserialize: data => { + const error = new ResponseError(data.code, data.message, data.data); + error.name = data.name; + error.stack = data.stack; + return error; + } +}); + +export interface MsgPackExtension { + class: Function, + tag: number, + serialize(instance: unknown): unknown, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + deserialize(serialized: any): unknown +} + +export type Constructor = new (...params: unknown[]) => T; + diff --git a/packages/core/src/common/message-rpc/rpc-message-encoder.ts b/packages/core/src/common/message-rpc/rpc-message-encoder.ts index f8a91857d8ec6..03b93755a5251 100644 --- a/packages/core/src/common/message-rpc/rpc-message-encoder.ts +++ b/packages/core/src/common/message-rpc/rpc-message-encoder.ts @@ -15,7 +15,7 @@ // ***************************************************************************** /* eslint-disable @typescript-eslint/no-explicit-any */ -import { addExtension, Packr as MsgPack } from 'msgpackr'; +import { Packr as MsgPack } from 'msgpackr'; import { ReadBuffer, WriteBuffer } from './message-buffer'; /** @@ -121,27 +121,10 @@ export interface RpcMessageEncoder { } export const defaultMsgPack = new MsgPack({ moreTypes: true, encodeUndefinedAsNil: false, bundleStrings: false }); -// Add custom msgpackR extension for ResponseErrors. -addExtension({ - Class: ResponseError, - type: 1, - write: (instance: ResponseError) => { - const { code, data, message, name, stack } = instance; - return { code, data, message, name, stack }; - }, - read: data => { - const error = new ResponseError(data.code, data.message, data.data); - error.name = data.name; - error.stack = data.stack; - return error; - } -}); export class MsgPackMessageEncoder implements RpcMessageEncoder { - constructor(protected readonly msgPack: MsgPack = defaultMsgPack) { - - } + constructor(protected readonly msgPack: MsgPack = defaultMsgPack) { } cancel(buf: WriteBuffer, requestId: number): void { this.encode(buf, { type: RpcMessageType.Cancel, id: requestId }); @@ -169,13 +152,11 @@ export class MsgPackMessageEncoder implements RpcMessageEncoder { throw err; } } - } export class MsgPackMessageDecoder implements RpcMessageDecoder { - constructor(protected readonly msgPack: MsgPack = defaultMsgPack) { + constructor(protected readonly msgPack: MsgPack = defaultMsgPack) { } - } decode(buf: ReadBuffer): T { const bytes = buf.readBytes(); return this.msgPack.decode(bytes); @@ -184,5 +165,4 @@ export class MsgPackMessageDecoder implements RpcMessageDecoder { parse(buffer: ReadBuffer): RpcMessage { return this.decode(buffer); } - } diff --git a/packages/core/src/common/message-rpc/rpc-protocol.ts b/packages/core/src/common/message-rpc/rpc-protocol.ts index 61be9c73d3881..4dbf422e0b877 100644 --- a/packages/core/src/common/message-rpc/rpc-protocol.ts +++ b/packages/core/src/common/message-rpc/rpc-protocol.ts @@ -16,15 +16,14 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { CancellationToken, CancellationTokenSource } from '../cancellation'; -import { DisposableCollection } from '../disposable'; +import { Disposable, DisposableCollection } from '../disposable'; import { Emitter, Event } from '../event'; import { Deferred } from '../promise-util'; import { Channel } from './channel'; import { MsgPackMessageDecoder, MsgPackMessageEncoder, RpcMessage, RpcMessageDecoder, RpcMessageEncoder, RpcMessageType } from './rpc-message-encoder'; -import { Uint8ArrayWriteBuffer } from './uint8-array-message-buffer'; /** - * Handles request messages received by the {@link RpcServer}. + * Handles request messages received by the {@link RPCProtocol}. */ export type RequestHandler = (method: string, args: any[]) => Promise; @@ -39,15 +38,20 @@ export interface RpcProtocolOptions { /** * The message decoder that should be used. If `undefined` the default {@link RpcMessageDecoder} will be used. */ - decoder?: RpcMessageDecoder + decoder?: RpcMessageDecoder, + /** + * The runtime mode determines whether the RPC protocol is bi-directional (default) or acts as a client or server only. + */ + mode?: 'default' | 'clientOnly' | 'serverOnly' } /** - * Establish a bi-directional RPC protocol on top of a given channel. Bi-directional means to send - * sends requests and notifications to the remote side as well as receiving requests and notifications from the remote side. + * Establish a RPC protocol on top of a given channel. By default the rpc protocol is bi-directional, meaning it is possible to send + * requests and notifications to the remote side (i.e. acts as client) as well as receiving requests and notifications from the remote side (i.e. acts as a server). * Clients can get a promise for a remote request result that will be either resolved or * rejected depending on the success of the request. Keeps track of outstanding requests and matches replies to the appropriate request * Currently, there is no timeout handling for long running requests implemented. + * The bi-directional mode can be reconfigured using the {@link RpcProtocolOptions} to construct an RPC protocol instance that acts only as client or server instead. */ export class RpcProtocol { static readonly CANCELLATION_TOKEN_KEY = 'add.cancellation.token'; @@ -58,6 +62,7 @@ export class RpcProtocol { protected readonly encoder: RpcMessageEncoder; protected readonly decoder: RpcMessageDecoder; + protected readonly mode: 'default' | 'clientOnly' | 'serverOnly'; protected readonly onNotificationEmitter: Emitter<{ method: string; args: any[]; }> = new Emitter(); protected readonly cancellationTokenSources = new Map(); @@ -68,37 +73,50 @@ export class RpcProtocol { protected toDispose = new DisposableCollection(); - constructor(public readonly channel: Channel, public readonly requestHandler: RequestHandler, options: RpcProtocolOptions = {}) { + constructor(public readonly channel: Channel, public readonly requestHandler: RequestHandler | undefined, options: RpcProtocolOptions = {}) { this.encoder = options.encoder ?? new MsgPackMessageEncoder(); this.decoder = options.decoder ?? new MsgPackMessageDecoder(); this.toDispose.push(this.onNotificationEmitter); - this.toDispose.push(channel.onMessage(readBuffer => this.handleMessage(this.decoder.parse(readBuffer())))); channel.onClose(() => this.toDispose.dispose()); + this.toDispose.push(channel.onMessage(readBuffer => this.handleMessage(this.decoder.parse(readBuffer())))); + this.mode = options.mode ?? 'default'; + + if (this.mode !== 'clientOnly' && requestHandler === undefined) { + console.error('RPCProtocol was initialized without a request handler but was not set to clientOnly mode.'); + } } handleMessage(message: RpcMessage): void { - switch (message.type) { - case RpcMessageType.Cancel: { - this.handleCancel(message.id); - break; - } - case RpcMessageType.Request: { - this.handleRequest(message.id, message.method, message.args); - break; - } - case RpcMessageType.Notification: { - this.handleNotify(message.id, message.method, message.args); - break; + if (this.mode !== 'clientOnly') { + switch (message.type) { + case RpcMessageType.Cancel: { + this.handleCancel(message.id); + return; + } + case RpcMessageType.Request: { + this.handleRequest(message.id, message.method, message.args); + return; + } + case RpcMessageType.Notification: { + this.handleNotify(message.id, message.method, message.args); + return; + } } - case RpcMessageType.Reply: { - this.handleReply(message.id, message.res); - break; - } - case RpcMessageType.ReplyErr: { - this.handleReplyErr(message.id, message.err); - break; + } + if (this.mode !== 'serverOnly') { + switch (message.type) { + case RpcMessageType.Reply: { + this.handleReply(message.id, message.res); + return; + } + case RpcMessageType.ReplyErr: { + this.handleReplyErr(message.id, message.err); + return; + } } } + // If the message was not handled until here, it is incompatible with the mode. + console.warn(`Received message incompatible with this RPCProtocol's mode '${this.mode}'. Type: ${message.type}. ID: ${message.id}.`); } protected handleReply(id: number, value: any): void { @@ -126,13 +144,13 @@ export class RpcProtocol { } sendRequest(method: string, args: any[]): Promise { - const id = this.nextMessageId++; - const reply = new Deferred(); - // The last element of the request args might be a cancellation token. As these tokens are not serializable we have to remove it from the // args array and the `CANCELLATION_TOKEN_KEY` string instead. const cancellationToken: CancellationToken | undefined = args.length && CancellationToken.is(args[args.length - 1]) ? args.pop() : undefined; + const id = this.nextMessageId++; + const reply = new Deferred(); + if (cancellationToken) { args.push(RpcProtocol.CANCELLATION_TOKEN_KEY); } @@ -153,6 +171,13 @@ export class RpcProtocol { } sendNotification(method: string, args: any[]): void { + // If the notification supports a CancellationToken, it needs to be treated like a request + // because cancellation does not work with the simplified "fire and forget" approach of simple notifications. + if (args.length && CancellationToken.is(args[args.length - 1])) { + this.sendRequest(method, args); + return; + } + const output = this.channel.getWriteBuffer(); this.encoder.notification(output, this.nextMessageId++, method, args); output.commit(); @@ -167,7 +192,6 @@ export class RpcProtocol { protected handleCancel(id: number): void { const cancellationTokenSource = this.cancellationTokenSources.get(id); if (cancellationTokenSource) { - this.cancellationTokenSources.delete(id); cancellationTokenSource.cancel(); } } @@ -185,14 +209,14 @@ export class RpcProtocol { } try { - const result = await this.requestHandler(method, args); + const result = await this.requestHandler!(method, args); this.cancellationTokenSources.delete(id); this.encoder.replyOK(output, id, result); output.commit(); } catch (err) { // In case of an error the output buffer might already contains parts of an message. // => Dispose the current buffer and retrieve a new, clean one for writing the response error. - if (output instanceof Uint8ArrayWriteBuffer) { + if (Disposable.is(output)) { output.dispose(); } const errorOutput = this.channel.getWriteBuffer(); diff --git a/packages/core/src/node/messaging/index.ts b/packages/core/src/node/messaging/index.ts index fd161d93a9df0..23da1fe350586 100644 --- a/packages/core/src/node/messaging/index.ts +++ b/packages/core/src/node/messaging/index.ts @@ -16,3 +16,4 @@ export * from './messaging-service'; export * from './ipc-connection-provider'; +export * from './ipc-channel'; diff --git a/packages/plugin-ext/src/common/index.ts b/packages/plugin-ext/src/common/index.ts index f77f053e2d32d..d39f1fc134210 100644 --- a/packages/plugin-ext/src/common/index.ts +++ b/packages/plugin-ext/src/common/index.ts @@ -18,3 +18,7 @@ export * from './plugin-protocol'; export * from './plugin-api-rpc'; export * from './plugin-ext-api-contribution'; + +import { registerMsgPackExtensions } from './rpc-protocol'; + +registerMsgPackExtensions(); diff --git a/packages/plugin-ext/src/common/plugin-api-rpc.ts b/packages/plugin-ext/src/common/plugin-api-rpc.ts index cc04bd3b288c5..dc1083bb98e21 100644 --- a/packages/plugin-ext/src/common/plugin-api-rpc.ts +++ b/packages/plugin-ext/src/common/plugin-api-rpc.ts @@ -1914,7 +1914,6 @@ export const PLUGIN_RPC_CONTEXT = { STATUS_BAR_MESSAGE_REGISTRY_MAIN: >createProxyIdentifier('StatusBarMessageRegistryMain'), ENV_MAIN: createProxyIdentifier('EnvMain'), NOTIFICATION_MAIN: createProxyIdentifier('NotificationMain'), - NOTIFICATION_EXT: createProxyIdentifier('NotificationExt'), TERMINAL_MAIN: createProxyIdentifier('TerminalServiceMain'), TREE_VIEWS_MAIN: createProxyIdentifier('TreeViewsMain'), PREFERENCE_REGISTRY_MAIN: createProxyIdentifier('PreferenceRegistryMain'), @@ -1946,7 +1945,6 @@ export const MAIN_RPC_CONTEXT = { QUICK_OPEN_EXT: createProxyIdentifier('QuickOpenExt'), WINDOW_STATE_EXT: createProxyIdentifier('WindowStateExt'), NOTIFICATION_EXT: createProxyIdentifier('NotificationExt'), - NOTIFICATION_MAIN: createProxyIdentifier('NotificationMain'), WORKSPACE_EXT: createProxyIdentifier('WorkspaceExt'), TEXT_EDITORS_EXT: createProxyIdentifier('TextEditorsExt'), EDITORS_AND_DOCUMENTS_EXT: createProxyIdentifier('EditorsAndDocumentsExt'), diff --git a/packages/plugin-ext/src/common/plugin-protocol.ts b/packages/plugin-ext/src/common/plugin-protocol.ts index d4aeea1ac05cc..f4e84cbbf9d77 100644 --- a/packages/plugin-ext/src/common/plugin-protocol.ts +++ b/packages/plugin-ext/src/common/plugin-protocol.ts @@ -838,7 +838,7 @@ export function buildFrontendModuleName(plugin: PluginPackage | PluginModel): st export const HostedPluginClient = Symbol('HostedPluginClient'); export interface HostedPluginClient { - postMessage(pluginHost: string, message: string): Promise; + postMessage(pluginHost: string, buffer: Uint8Array): Promise; log(logPart: LogPart): void; @@ -901,7 +901,7 @@ export interface HostedPluginServer extends JsonRpcServer { getExtPluginAPI(): Promise; - onMessage(targetHost: string, message: string): Promise; + onMessage(targetHost: string, message: Uint8Array): Promise; } @@ -944,9 +944,9 @@ export interface PluginServer { export const ServerPluginRunner = Symbol('ServerPluginRunner'); export interface ServerPluginRunner { // eslint-disable-next-line @typescript-eslint/no-explicit-any - acceptMessage(pluginHostId: string, jsonMessage: string): boolean; + acceptMessage(pluginHostId: string, jsonMessage: Uint8Array): boolean; // eslint-disable-next-line @typescript-eslint/no-explicit-any - onMessage(pluginHostId: string, jsonMessage: string): void; + onMessage(pluginHostId: string, jsonMessage: Uint8Array): void; setClient(client: HostedPluginClient): void; setDefault(defaultRunner: ServerPluginRunner): void; clientClosed(): void; diff --git a/packages/plugin-ext/src/common/proxy-handler.ts b/packages/plugin-ext/src/common/proxy-handler.ts new file mode 100644 index 0000000000000..deb5ebfa62c0e --- /dev/null +++ b/packages/plugin-ext/src/common/proxy-handler.ts @@ -0,0 +1,126 @@ +/******************************************************************************** + * Copyright (C) 2022 STMicroelectronics and others. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the Eclipse + * Public License v. 2.0 are satisfied: GNU General Public License, version 2 + * with the GNU Classpath Exception which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + ********************************************************************************/ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { Channel, RpcProtocol, RpcProtocolOptions } from '@theia/core/'; +import { RpcMessageDecoder, RpcMessageEncoder } from '@theia/core/lib/common/message-rpc/rpc-message-encoder'; +import { Deferred } from '@theia/core/lib/common/promise-util'; + +export interface RpcHandlerOptions { + id: string + encoder: RpcMessageEncoder, + decoder: RpcMessageDecoder +} +export interface ProxyHandlerOptions extends RpcHandlerOptions { + channelProvider: () => Promise, +} + +export interface InvocationHandlerOptions extends RpcHandlerOptions { + target: any +} +/** + * A proxy handler that will send any method invocation on the proxied object + * as a rcp protocol message over a channel. + */ +export class ClientProxyHandler implements ProxyHandler { + private rpcDeferred: Deferred = new Deferred(); + private isRpcInitialized = false; + + readonly id: string; + private readonly channelProvider: () => Promise; + private readonly encoder: RpcMessageEncoder; + private readonly decoder: RpcMessageDecoder; + + constructor(options: ProxyHandlerOptions) { + Object.assign(this, options); + } + + private initializeRpc(): void { + const clientOptions: RpcProtocolOptions = { encoder: this.encoder, decoder: this.decoder, mode: 'clientOnly' }; + this.channelProvider().then(channel => { + const rpc = new RpcProtocol(channel, undefined, clientOptions); + this.rpcDeferred.resolve(rpc); + this.isRpcInitialized = true; + }); + } + + get(target: any, name: string, receiver: any): any { + if (!this.isRpcInitialized) { + this.initializeRpc(); + } + + if (target[name] || name.charCodeAt(0) !== 36 /* CharCode.DollarSign */) { + return target[name]; + } + const isNotify = this.isNotification(name); + return (...args: any[]) => { + const method = name.toString(); + return this.rpcDeferred.promise.then(async (connection: RpcProtocol) => { + if (isNotify) { + connection.sendNotification(method, args); + } else { + return await connection.sendRequest(method, args) as Promise; + } + }); + }; + } + + /** + * Return whether the given property represents a notification. If true, + * the promise returned from the invocation will resolve immediately to `undefined` + * + * A property leads to a notification rather than a method call if its name + * begins with `notify` or `on`. + * + * @param p - The property being called on the proxy. + * @return Whether `p` represents a notification. + */ + protected isNotification(p: PropertyKey): boolean { + let propertyString = p.toString(); + if (propertyString.charCodeAt(0) === 36/* CharCode.DollarSign */) { + propertyString = propertyString.substring(1); + } + return propertyString.startsWith('notify') || propertyString.startsWith('on'); + } +} + +export class RpcInvocationHandler { + readonly id: string; + readonly target: any; + + private rpcDeferred: Deferred = new Deferred(); + private readonly encoder: RpcMessageEncoder; + private readonly decoder: RpcMessageDecoder; + + constructor(options: InvocationHandlerOptions) { + Object.assign(this, options); + } + + listen(channel: Channel): void { + const serverOptions: RpcProtocolOptions = { encoder: this.encoder, decoder: this.decoder, mode: 'serverOnly' }; + const server = new RpcProtocol(channel, (method: string, args: any[]) => this.handleRequest(method, args), serverOptions); + server.onNotification((e: { method: string, args: any }) => this.onNotification(e.method, e.args)); + this.rpcDeferred.resolve(server); + } + + protected handleRequest(method: string, args: any[]): Promise { + return this.rpcDeferred.promise.then(() => this.target[method](...args)); + } + + protected onNotification(method: string, args: any[]): void { + this.target[method](...args); + } +} + diff --git a/packages/plugin-ext/src/common/rpc-protocol.ts b/packages/plugin-ext/src/common/rpc-protocol.ts index efd5b9503bee3..dd47b8f5ae550 100644 --- a/packages/plugin-ext/src/common/rpc-protocol.ts +++ b/packages/plugin-ext/src/common/rpc-protocol.ts @@ -22,14 +22,17 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ +import { Channel, Disposable, DisposableCollection, ReadBuffer, WriteBuffer } from '@theia/core'; import { Emitter, Event } from '@theia/core/lib/common/event'; -import { DisposableCollection, Disposable } from '@theia/core/lib/common/disposable'; -import { Deferred } from '@theia/core/lib/common/promise-util'; +import { ChannelMultiplexer, MessageProvider } from '@theia/core/lib/common/message-rpc/channel'; +import { MsgPackMessageDecoder, MsgPackMessageEncoder } from '@theia/core/lib/common/message-rpc/rpc-message-encoder'; +import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '@theia/core/lib/common/message-rpc/uint8-array-message-buffer'; +import { ClientProxyHandler, RpcInvocationHandler } from './proxy-handler'; +import { MsgPackExtensionManager } from '@theia/core/lib/common/message-rpc/msg-pack-extension-manager'; import { URI as VSCodeURI } from '@theia/core/shared/vscode-uri'; import URI from '@theia/core/lib/common/uri'; -import { CancellationToken, CancellationTokenSource } from '@theia/core/shared/vscode-languageserver-protocol'; -import { Range, Position } from '../plugin/types-impl'; import { BinaryBuffer } from '@theia/core/lib/common/buffer'; +import { Range, Position } from '../plugin/types-impl'; export interface MessageConnection { send(msg: string): void; @@ -76,49 +79,29 @@ export namespace ConnectionClosedError { } export class RPCProtocolImpl implements RPCProtocol { - - private readonly locals = new Map(); + private readonly locals = new Map(); private readonly proxies = new Map(); - private lastMessageId = 0; - private readonly cancellationTokenSources = new Map(); - private readonly pendingRPCReplies = new Map>(); - private readonly multiplexer: RPCMultiplexer; - - private replacer: (key: string | undefined, value: any) => any; - private reviver: (key: string | undefined, value: any) => any; + private readonly multiplexer: ChannelMultiplexer; + private readonly encoder = new MsgPackMessageEncoder(); + private readonly decoder = new MsgPackMessageDecoder(); private readonly toDispose = new DisposableCollection( Disposable.create(() => { /* mark as no disposed */ }) ); - constructor(connection: MessageConnection, transformations?: { - replacer?: (key: string | undefined, value: any) => any, - reviver?: (key: string | undefined, value: any) => any - }) { - this.toDispose.push( - this.multiplexer = new RPCMultiplexer(connection) - ); - this.multiplexer.onMessage(msg => this.receiveOneMessage(msg)); - this.toDispose.push(Disposable.create(() => { - this.proxies.clear(); - for (const reply of this.pendingRPCReplies.values()) { - reply.reject(ConnectionClosedError.create()); - } - this.pendingRPCReplies.clear(); - })); - - this.reviver = transformations?.reviver || ObjectsTransferrer.reviver; - this.replacer = transformations?.replacer || ObjectsTransferrer.replacer; - } - - private get isDisposed(): boolean { - return this.toDispose.disposed; + constructor(channel: Channel) { + this.toDispose.push(this.multiplexer = new ChannelMultiplexer(new BatchingChannel(channel))); + this.toDispose.push(Disposable.create(() => this.proxies.clear())); } dispose(): void { this.toDispose.dispose(); } + protected get isDisposed(): boolean { + return this.toDispose.disposed; + } + getProxy(proxyId: ProxyIdentifier): T { if (this.isDisposed) { throw ConnectionClosedError.create(); @@ -131,274 +114,125 @@ export class RPCProtocolImpl implements RPCProtocol { return proxy; } - set(identifier: ProxyIdentifier, instance: R): R { - if (this.isDisposed) { - throw ConnectionClosedError.create(); - } - this.locals.set(identifier.id, instance); - if (Disposable.is(instance)) { - this.toDispose.push(instance); - } - this.toDispose.push(Disposable.create(() => this.locals.delete(identifier.id))); - return instance; - } - - private createProxy(proxyId: string): T { - const handler = { - get: (target: any, name: string) => { - if (!target[name] && name.charCodeAt(0) === 36 /* CharCode.DollarSign */) { - target[name] = (...myArgs: any[]) => - this.remoteCall(proxyId, name, myArgs); - } - return target[name]; - } - }; + protected createProxy(proxyId: string): T { + const handler = new ClientProxyHandler({ id: proxyId, encoder: this.encoder, decoder: this.decoder, channelProvider: () => this.multiplexer.open(proxyId) }); return new Proxy(Object.create(null), handler); } - private remoteCall(proxyId: string, methodName: string, args: any[]): Promise { + set(identifier: ProxyIdentifier, instance: R): R { if (this.isDisposed) { - return Promise.reject(ConnectionClosedError.create()); - } - const cancellationToken: CancellationToken | undefined = args.length && CancellationToken.is(args[args.length - 1]) ? args.pop() : undefined; - if (cancellationToken && cancellationToken.isCancellationRequested) { - return Promise.reject(canceled()); - } - - const callId = String(++this.lastMessageId); - const result = new Deferred(); - - if (cancellationToken) { - args.push('add.cancellation.token'); - cancellationToken.onCancellationRequested(() => - this.multiplexer.send(this.cancel(callId)) - ); + throw ConnectionClosedError.create(); } + const invocationHandler = this.locals.get(identifier.id); + if (!invocationHandler) { + const handler = new RpcInvocationHandler({ id: identifier.id, target: instance, encoder: this.encoder, decoder: this.decoder }); - this.pendingRPCReplies.set(callId, result); - this.multiplexer.send(this.request(callId, proxyId, methodName, args)); - return result.promise; - } - - private receiveOneMessage(rawmsg: string): void { - if (this.isDisposed) { - return; - } - try { - const msg = JSON.parse(rawmsg, this.reviver); - - switch (msg.type) { - case MessageType.Request: - this.receiveRequest(msg); - break; - case MessageType.Reply: - this.receiveReply(msg); - break; - case MessageType.ReplyErr: - this.receiveReplyErr(msg); - break; - case MessageType.Cancel: - this.receiveCancel(msg); - break; + const channel = this.multiplexer.getOpenChannel(identifier.id); + if (channel) { + handler.listen(channel); + } else { + const channelOpenListener = this.multiplexer.onDidOpenChannel(event => { + if (event.id === identifier.id) { + handler.listen(event.channel); + channelOpenListener.dispose(); + } + }); } - } catch (e) { - // exception does not show problematic content: log it! - console.log('failed to parse message: ' + rawmsg); - throw e; - } - - } - - private receiveCancel(msg: CancelMessage): void { - const cancellationTokenSource = this.cancellationTokenSources.get(msg.id); - if (cancellationTokenSource) { - cancellationTokenSource.cancel(); - } - } - - private receiveRequest(msg: RequestMessage): void { - const callId = msg.id; - const proxyId = msg.proxyId; - // convert `null` to `undefined`, since we don't use `null` in internal plugin APIs - const args = msg.args.map(arg => arg === null ? undefined : arg); // eslint-disable-line no-null/no-null - - const addToken = args.length && args[args.length - 1] === 'add.cancellation.token' ? args.pop() : false; - if (addToken) { - const tokenSource = new CancellationTokenSource(); - this.cancellationTokenSources.set(callId, tokenSource); - args.push(tokenSource.token); - } - const invocation = this.invokeHandler(proxyId, msg.method, args); - - invocation.then(result => { - this.cancellationTokenSources.delete(callId); - this.multiplexer.send(this.replyOK(callId, result)); - }, error => { - this.cancellationTokenSources.delete(callId); - this.multiplexer.send(this.replyErr(callId, error)); - }); - } - - private receiveReply(msg: ReplyMessage): void { - const callId = msg.id; - const pendingReply = this.pendingRPCReplies.get(callId); - if (!pendingReply) { - return; - } - this.pendingRPCReplies.delete(callId); - pendingReply.resolve(msg.res); - } - - private receiveReplyErr(msg: ReplyErrMessage): void { - const callId = msg.id; - const pendingReply = this.pendingRPCReplies.get(callId); - if (!pendingReply) { - return; - } - this.pendingRPCReplies.delete(callId); - - let err: Error | undefined = undefined; - if (msg.err && msg.err.$isError) { - err = new Error(); - err.name = msg.err.name; - err.message = msg.err.message; - err.stack = msg.err.stack; - } - pendingReply.reject(err); - } - - private invokeHandler(proxyId: string, methodName: string, args: any[]): Promise { - try { - return Promise.resolve(this.doInvokeHandler(proxyId, methodName, args)); - } catch (err) { - return Promise.reject(err); - } - } - - private doInvokeHandler(proxyId: string, methodName: string, args: any[]): any { - const actor = this.locals.get(proxyId); - if (!actor) { - throw new Error('Unknown actor ' + proxyId); - } - const method = actor[methodName]; - if (typeof method !== 'function') { - throw new Error('Unknown method ' + methodName + ' on actor ' + proxyId); - } - return method.apply(actor, args); - } - private cancel(req: string): string { - return `{"type":${MessageType.Cancel},"id":"${req}"}`; - } - - private request(req: string, rpcId: string, method: string, args: any[]): string { - return `{"type":${MessageType.Request},"id":"${req}","proxyId":"${rpcId}","method":"${method}","args":${JSON.stringify(args, this.replacer)}}`; - } - - private replyOK(req: string, res: any): string { - if (typeof res === 'undefined') { - return `{"type":${MessageType.Reply},"id":"${req}"}`; - } - return `{"type":${MessageType.Reply},"id":"${req}","res":${safeStringify(res, this.replacer)}}`; - } + this.locals.set(identifier.id, handler); + if (Disposable.is(instance)) { + this.toDispose.push(instance); + } + this.toDispose.push(Disposable.create(() => this.locals.delete(identifier.id))); - private replyErr(req: string, err: any): string { - err = typeof err === 'string' ? new Error(err) : err; - if (err instanceof Error) { - return `{"type":${MessageType.ReplyErr},"id":"${req}","err":${safeStringify(transformErrorForSerialization(err))}}`; } - return `{"type":${MessageType.ReplyErr},"id":"${req}","err":null}`; + return instance; } } -function canceled(): Error { - const error = new Error('Canceled'); - error.name = error.message; - return error; -} - /** - * Sends/Receives multiple messages in one go: + * Wraps and underlying channel to send/receive multiple messages in one go: * - multiple messages to be sent from one stack get sent in bulk at `process.nextTick`. * - each incoming message is handled in a separate `process.nextTick`. */ -class RPCMultiplexer implements Disposable, MessageConnection { - - private readonly connection: MessageConnection; - private readonly sendAccumulatedBound: () => void; - - private messagesToSend: string[]; +export class BatchingChannel implements Channel { + protected messagesToSend: Uint8Array[] = []; - private readonly messageEmitter = new Emitter(); - private readonly toDispose = new DisposableCollection(); + constructor(protected underlyingChannel: Channel) { + underlyingChannel.onMessage(msg => this.handleMessages(msg())); + } - constructor(connection: MessageConnection) { - this.connection = connection; - this.sendAccumulatedBound = this.sendAccumulated.bind(this); + protected onMessageEmitter: Emitter = new Emitter(); + get onMessage(): Event { + return this.onMessageEmitter.event; + }; - this.toDispose.push(Disposable.create(() => this.messagesToSend = [])); - this.toDispose.push(this.connection.onMessage((msg: string) => { - const messages = JSON.parse(msg); - for (const message of messages) { - this.messageEmitter.fire(message); - } - })); - this.toDispose.push(this.messageEmitter); + readonly onClose = this.underlyingChannel.onClose; + readonly onError = this.underlyingChannel.onError; + close(): void { + this.underlyingChannel.close(); + this.onMessageEmitter.dispose(); this.messagesToSend = []; } - dispose(): void { - this.toDispose.dispose(); - } - - get onMessage(): Event { - return this.messageEmitter.event; + getWriteBuffer(): WriteBuffer { + const writer = new Uint8ArrayWriteBuffer(); + writer.onCommit(buffer => this.commitSingleMessage(buffer)); + return writer; } - private sendAccumulated(): void { - const tmp = this.messagesToSend; - this.messagesToSend = []; - this.connection.send(JSON.stringify(tmp)); - } + protected commitSingleMessage(msg: Uint8Array): void { - public send(msg: string): void { - if (this.toDispose.disposed) { - throw ConnectionClosedError.create(); - } if (this.messagesToSend.length === 0) { if (typeof setImmediate !== 'undefined') { - setImmediate(this.sendAccumulatedBound); + setImmediate(() => this.sendAccumulated()); } else { - setTimeout(this.sendAccumulatedBound, 0); + setTimeout(() => this.sendAccumulated(), 0); } } this.messagesToSend.push(msg); } + + protected sendAccumulated(): void { + const cachedMessages = this.messagesToSend; + this.messagesToSend = []; + const writer = this.underlyingChannel.getWriteBuffer(); + + if (cachedMessages.length > 0) { + writer.writeLength(cachedMessages.length); + cachedMessages.forEach(msg => { + writer.writeBytes(msg); + }); + + } + writer.commit(); + } + + protected handleMessages(buffer: ReadBuffer): void { + // Read in the list of messages and dispatch each message individually + const length = buffer.readLength(); + if (length > 0) { + for (let index = 0; index < length; index++) { + const message = buffer.readBytes(); + this.onMessageEmitter.fire(() => new Uint8ArrayReadBuffer(message)); + } + } + } } -/** - * These functions are responsible for correct transferring objects via rpc channel. - * - * To reach that some specific kind of objects is converted to json in some custom way - * and then, after receiving, revived to objects again, - * so there is feeling that object was transferred via rpc channel. - * - * To distinguish between regular and altered objects, field $type is added to altered ones. - * Also value of that field specifies kind of the object. - */ -export namespace ObjectsTransferrer { - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - export function replacer(key: string | undefined, value: any): any { - if (value instanceof URI) { - return { - $type: SerializedObjectType.THEIA_URI, - data: value.toString() - } as SerializedObject; - } else if (value instanceof Range) { - const range = value as Range; - const serializedValue = { +export function registerMsgPackExtensions(): void { + MsgPackExtensionManager.getInstance().registerExtensions( + { + class: URI, + tag: 2, + serialize: (instance: URI) => instance.toString(), + deserialize: data => new URI(data) + }, + { + class: Range, + tag: 3, + serialize: (range: Range) => ({ start: { line: range.start.line, character: range.start.character @@ -407,140 +241,33 @@ export namespace ObjectsTransferrer { line: range.end.line, character: range.end.character } - }; - return { - $type: SerializedObjectType.THEIA_RANGE, - data: JSON.stringify(serializedValue) - } as SerializedObject; - } else if (value && value['$mid'] === 1) { - // Given value is VSCode URI - // We cannot use instanceof here because VSCode URI has toJSON method which is invoked before this replacer. - const uri = VSCodeURI.revive(value); - return { - $type: SerializedObjectType.VSCODE_URI, - data: uri.toString() - } as SerializedObject; - } else if (value instanceof BinaryBuffer) { - const bytes = [...value.buffer.values()]; - return { - $type: SerializedObjectType.TEXT_BUFFER, - data: JSON.stringify({ bytes }) - }; - } - - return value; - } - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - export function reviver(key: string | undefined, value: any): any { - if (isSerializedObject(value)) { - switch (value.$type) { - case SerializedObjectType.THEIA_URI: - return new URI(value.data); - case SerializedObjectType.VSCODE_URI: - return VSCodeURI.parse(value.data); - case SerializedObjectType.THEIA_RANGE: - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const obj: any = JSON.parse(value.data); - const start = new Position(obj.start.line, obj.start.character); - const end = new Position(obj.end.line, obj.end.character); - return new Range(start, end); - case SerializedObjectType.TEXT_BUFFER: - const data: { bytes: number[] } = JSON.parse(value.data); - return BinaryBuffer.wrap(Uint8Array.from(data.bytes)); + }), + deserialize: data => { + const start = new Position(data.start.line, data.start.character); + const end = new Position(data.end.line, data.end.character); + return new Range(start, end); + } + }, + { + class: VSCodeURI, + tag: 4, + // eslint-disable-next-line arrow-body-style + serialize: (instance: URI) => { + return instance.toString(); + }, + deserialize: data => VSCodeURI.parse(data) + }, + { + class: BinaryBuffer, + tag: 5, + // eslint-disable-next-line arrow-body-style + serialize: (instance: BinaryBuffer) => { + return instance.buffer; + }, + // eslint-disable-next-line arrow-body-style + deserialize: buffer => { + return BinaryBuffer.wrap(buffer); } } - - return value; - } - -} - -interface SerializedObject { - $type: SerializedObjectType; - data: string; -} - -enum SerializedObjectType { - THEIA_URI, - VSCODE_URI, - THEIA_RANGE, - TEXT_BUFFER -} - -function isSerializedObject(obj: unknown): obj is SerializedObject { - const serializedObject = obj as SerializedObject; - return !!obj && typeof obj === 'object' && serializedObject.$type !== undefined && serializedObject.data !== undefined; -} - -export const enum MessageType { - Request = 1, - Reply = 2, - ReplyErr = 3, - Cancel = 4, - Terminate = 5, - Terminated = 6 -} - -class CancelMessage { - type: MessageType.Cancel; - id: string; -} - -class RequestMessage { - type: MessageType.Request; - id: string; - proxyId: string; - method: string; - args: any[]; -} - -class ReplyMessage { - type: MessageType.Reply; - id: string; - res: any; -} - -class ReplyErrMessage { - type: MessageType.ReplyErr; - id: string; - err: SerializedError; -} - -type RPCMessage = RequestMessage | ReplyMessage | ReplyErrMessage | CancelMessage; - -export interface SerializedError { - readonly $isError: true; - readonly name: string; - readonly message: string; - readonly stack: string; -} - -export function transformErrorForSerialization(error: Error): SerializedError { - if (error instanceof Error) { - const { name, message } = error; - const stack: string = (error).stacktrace || error.stack; - return { - $isError: true, - name, - message, - stack - }; - } - - // return as is - return error; -} - -interface JSONStringifyReplacer { - (key: string, value: any): any; -} - -function safeStringify(obj: any, replacer?: JSONStringifyReplacer): string { - try { - return JSON.stringify(obj, replacer); - } catch (err) { - console.error('error stringifying response: ', err); - return 'null'; - } + ); } diff --git a/packages/plugin-ext/src/hosted/browser/hosted-plugin-watcher.ts b/packages/plugin-ext/src/hosted/browser/hosted-plugin-watcher.ts index 3c80f8d33d410..6fb3a0c55932b 100644 --- a/packages/plugin-ext/src/hosted/browser/hosted-plugin-watcher.ts +++ b/packages/plugin-ext/src/hosted/browser/hosted-plugin-watcher.ts @@ -21,7 +21,8 @@ import { LogPart } from '../../common/types'; @injectable() export class HostedPluginWatcher { - private onPostMessage = new Emitter<{ pluginHostId: string, message: string }>(); + private onPostMessage = new Emitter<{ pluginHostId: string, message: Uint8Array }>(); + private onLogMessage = new Emitter(); private readonly onDidDeployEmitter = new Emitter(); @@ -31,7 +32,7 @@ export class HostedPluginWatcher { const messageEmitter = this.onPostMessage; const logEmitter = this.onLogMessage; return { - postMessage(pluginHostId, message: string): Promise { + postMessage(pluginHostId, message: Uint8Array): Promise { messageEmitter.fire({ pluginHostId, message }); return Promise.resolve(); }, @@ -43,7 +44,7 @@ export class HostedPluginWatcher { }; } - get onPostMessageEvent(): Event<{ pluginHostId: string, message: string }> { + get onPostMessageEvent(): Event<{ pluginHostId: string, message: Uint8Array }> { return this.onPostMessage.event; } diff --git a/packages/plugin-ext/src/hosted/browser/hosted-plugin.ts b/packages/plugin-ext/src/hosted/browser/hosted-plugin.ts index e2c167f02dc68..62627760d3eb2 100644 --- a/packages/plugin-ext/src/hosted/browser/hosted-plugin.ts +++ b/packages/plugin-ext/src/hosted/browser/hosted-plugin.ts @@ -66,6 +66,8 @@ import { StandaloneServices } from '@theia/monaco-editor-core/esm/vs/editor/stan import { ILanguageService } from '@theia/monaco-editor-core/esm/vs/editor/common/languages/language'; import { LanguageService } from '@theia/monaco-editor-core/esm/vs/editor/common/services/languageService'; import { Measurement, Stopwatch } from '@theia/core/lib/common'; +import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '@theia/core/lib/common/message-rpc/uint8-array-message-buffer'; +import { BasicChannel } from '@theia/core/lib/common/message-rpc/channel'; export type PluginHost = 'frontend' | string; export type DebugActivationEvent = 'onDebugResolve' | 'onDebugInitialConfigurations' | 'onDebugAdapterProtocolTracker' | 'onDebugDynamicConfigurations'; @@ -534,18 +536,25 @@ export class HostedPluginSupport { } protected createServerRpc(pluginHostId: string): RPCProtocol { - const emitter = new Emitter(); + + const channel = new BasicChannel(() => { + const writer = new Uint8ArrayWriteBuffer(); + writer.onCommit(buffer => { + this.server.onMessage(pluginHostId, buffer); + }); + return writer; + }); + + // Create RPC protocol before adding the listener to the watcher to receive the watcher's cached messages after the rpc protocol was created. + const rpc = new RPCProtocolImpl(channel); + this.watcher.onPostMessageEvent(received => { if (pluginHostId === received.pluginHostId) { - emitter.fire(received.message); - } - }); - return new RPCProtocolImpl({ - onMessage: emitter.event, - send: message => { - this.server.onMessage(pluginHostId, message); + channel.onMessageEmitter.fire(() => new Uint8ArrayReadBuffer(received.message)); } }); + + return rpc; } protected async updateStoragePath(): Promise { diff --git a/packages/plugin-ext/src/hosted/browser/plugin-worker.ts b/packages/plugin-ext/src/hosted/browser/plugin-worker.ts index 874ad820448e6..6065211c436e3 100644 --- a/packages/plugin-ext/src/hosted/browser/plugin-worker.ts +++ b/packages/plugin-ext/src/hosted/browser/plugin-worker.ts @@ -13,8 +13,9 @@ // // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 // ***************************************************************************** +import { BasicChannel } from '@theia/core/lib/common/message-rpc/channel'; +import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '@theia/core/lib/common/message-rpc/uint8-array-message-buffer'; import { injectable } from '@theia/core/shared/inversify'; -import { Emitter } from '@theia/core/lib/common/event'; import { RPCProtocol, RPCProtocolImpl } from '../../common/rpc-protocol'; @injectable() @@ -25,22 +26,27 @@ export class PluginWorker { public readonly rpc: RPCProtocol; constructor() { - const emitter = new Emitter(); - this.worker = new Worker(new URL('./worker/worker-main', // @ts-expect-error (TS1343) // We compile to CommonJS but `import.meta` is still available in the browser import.meta.url)); - this.worker.onmessage = m => emitter.fire(m.data); - this.worker.onerror = e => console.error(e); + const channel = new BasicChannel(() => { + const writer = new Uint8ArrayWriteBuffer(); + writer.onCommit(buffer => { + this.worker.postMessage(buffer); + }); + return writer; + }); + + this.rpc = new RPCProtocolImpl(channel); - this.rpc = new RPCProtocolImpl({ - onMessage: emitter.event, - send: (m: string) => { - this.worker.postMessage(m); - } + // eslint-disable-next-line arrow-body-style + this.worker.onmessage = buffer => channel.onMessageEmitter.fire(() => { + return new Uint8ArrayReadBuffer(buffer.data); }); + + this.worker.onerror = e => channel.onErrorEmitter.fire(e); } } diff --git a/packages/plugin-ext/src/hosted/browser/worker/worker-main.ts b/packages/plugin-ext/src/hosted/browser/worker/worker-main.ts index 4176d07b499c0..bd6827e1d0f85 100644 --- a/packages/plugin-ext/src/hosted/browser/worker/worker-main.ts +++ b/packages/plugin-ext/src/hosted/browser/worker/worker-main.ts @@ -13,28 +13,29 @@ // // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 // ***************************************************************************** - -import { Emitter } from '@theia/core/lib/common/event'; -import { RPCProtocolImpl } from '../../../common/rpc-protocol'; -import { PluginManagerExtImpl } from '../../../plugin/plugin-manager'; -import { MAIN_RPC_CONTEXT, Plugin, emptyPlugin, TerminalServiceExt } from '../../../common/plugin-api-rpc'; -import { createAPIFactory } from '../../../plugin/plugin-context'; -import { getPluginId, PluginMetadata } from '../../../common/plugin-protocol'; +// eslint-disable-next-line import/no-extraneous-dependencies +import 'reflect-metadata'; +import { BasicChannel } from '@theia/core/lib/common/message-rpc/channel'; +import { Uint8ArrayReadBuffer, Uint8ArrayWriteBuffer } from '@theia/core/lib/common/message-rpc/uint8-array-message-buffer'; import * as theia from '@theia/plugin'; -import { PreferenceRegistryExtImpl } from '../../../plugin/preference-registry'; +import { emptyPlugin, MAIN_RPC_CONTEXT, Plugin, TerminalServiceExt } from '../../../common/plugin-api-rpc'; import { ExtPluginApi } from '../../../common/plugin-ext-api-contribution'; -import { createDebugExtStub } from './debug-stub'; +import { getPluginId, PluginMetadata } from '../../../common/plugin-protocol'; +import { RPCProtocolImpl } from '../../../common/rpc-protocol'; +import { ClipboardExt } from '../../../plugin/clipboard-ext'; import { EditorsAndDocumentsExtImpl } from '../../../plugin/editors-and-documents'; -import { WorkspaceExtImpl } from '../../../plugin/workspace'; import { MessageRegistryExt } from '../../../plugin/message-registry'; -import { WorkerEnvExtImpl } from './worker-env-ext'; -import { ClipboardExt } from '../../../plugin/clipboard-ext'; +import { createAPIFactory } from '../../../plugin/plugin-context'; +import { PluginManagerExtImpl } from '../../../plugin/plugin-manager'; import { KeyValueStorageProxy } from '../../../plugin/plugin-storage'; +import { PreferenceRegistryExtImpl } from '../../../plugin/preference-registry'; +import { SecretsExtImpl } from '../../../plugin/secrets-ext'; +import { TerminalServiceExtImpl } from '../../../plugin/terminal-ext'; import { WebviewsExtImpl } from '../../../plugin/webviews'; +import { WorkspaceExtImpl } from '../../../plugin/workspace'; +import { createDebugExtStub } from './debug-stub'; import { loadManifest } from './plugin-manifest-loader'; -import { TerminalServiceExtImpl } from '../../../plugin/terminal-ext'; -import { reviver } from '../../../plugin/types-impl'; -import { SecretsExtImpl } from '../../../plugin/secrets-ext'; +import { WorkerEnvExtImpl } from './worker-env-ext'; // eslint-disable-next-line @typescript-eslint/no-explicit-any const ctx = self as any; @@ -42,22 +43,20 @@ const ctx = self as any; const pluginsApiImpl = new Map(); const pluginsModulesNames = new Map(); -const emitter = new Emitter(); -const rpc = new RPCProtocolImpl({ - onMessage: emitter.event, - send: (m: string) => { - ctx.postMessage(m); - }, -}, -{ - reviver: reviver +const channel = new BasicChannel(() => { + const writeBuffer = new Uint8ArrayWriteBuffer(); + writeBuffer.onCommit(buffer => { + ctx.postMessage(buffer); + }); + return writeBuffer; }); - // eslint-disable-next-line @typescript-eslint/no-explicit-any addEventListener('message', (message: any) => { - emitter.fire(message.data); + channel.onMessageEmitter.fire(() => new Uint8ArrayReadBuffer(message.data)); }); +const rpc = new RPCProtocolImpl(channel); + const scripts = new Set(); function initialize(contextPath: string, pluginMetadata: PluginMetadata): void { diff --git a/packages/plugin-ext/src/hosted/node/hosted-plugin-process.ts b/packages/plugin-ext/src/hosted/node/hosted-plugin-process.ts index 2c0db80da4a72..85df499084cae 100644 --- a/packages/plugin-ext/src/hosted/node/hosted-plugin-process.ts +++ b/packages/plugin-ext/src/hosted/node/hosted-plugin-process.ts @@ -14,16 +14,18 @@ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 // ***************************************************************************** -import * as cp from 'child_process'; -import { injectable, inject, named } from '@theia/core/shared/inversify'; -import { ILogger, ConnectionErrorHandler, ContributionProvider, MessageService } from '@theia/core/lib/common'; +import { ConnectionErrorHandler, ContributionProvider, ILogger, MessageService } from '@theia/core/lib/common'; +import { Deferred } from '@theia/core/lib/common/promise-util'; import { createIpcEnv } from '@theia/core/lib/node/messaging/ipc-protocol'; -import { HostedPluginClient, ServerPluginRunner, PluginHostEnvironmentVariable, DeployedPlugin, PLUGIN_HOST_BACKEND, PluginIdentifiers } from '../../common/plugin-protocol'; -import { MessageType } from '../../common/rpc-protocol'; +import { inject, injectable, named } from '@theia/core/shared/inversify'; +import * as cp from 'child_process'; import { HostedPluginCliContribution } from './hosted-plugin-cli-contribution'; -import * as psTree from 'ps-tree'; -import { Deferred } from '@theia/core/lib/common/promise-util'; import { HostedPluginLocalizationService } from './hosted-plugin-localization-service'; +import { ProcessTerminatedMessage, ProcessTerminateMessage } from './hosted-plugin-protocol'; +import { BinaryMessagePipe } from '@theia/core/lib/node/messaging/binary-message-pipe'; +import { DeployedPlugin, HostedPluginClient, PluginHostEnvironmentVariable, PluginIdentifiers, PLUGIN_HOST_BACKEND, ServerPluginRunner } from '../../common/plugin-protocol'; +import psTree = require('ps-tree'); +import { Duplex } from 'stream'; export interface IPCConnectionOptions { readonly serverName: string; @@ -60,6 +62,7 @@ export class HostedPluginProcess implements ServerPluginRunner { protected readonly localizationService: HostedPluginLocalizationService; private childProcess: cp.ChildProcess | undefined; + private messagePipe?: BinaryMessagePipe; private client: HostedPluginClient; private terminatingPluginServer = false; @@ -82,14 +85,14 @@ export class HostedPluginProcess implements ServerPluginRunner { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - public acceptMessage(pluginHostId: string, message: string): boolean { + public acceptMessage(pluginHostId: string, message: Uint8Array): boolean { return pluginHostId === 'main'; } // eslint-disable-next-line @typescript-eslint/no-explicit-any - public onMessage(pluginHostId: string, jsonMessage: string): void { - if (this.childProcess) { - this.childProcess.send(jsonMessage); + public onMessage(pluginHostId: string, message: Uint8Array): void { + if (this.messagePipe) { + this.messagePipe.send(message); } } @@ -106,12 +109,12 @@ export class HostedPluginProcess implements ServerPluginRunner { const waitForTerminated = new Deferred(); cp.on('message', message => { const msg = JSON.parse(message as string); - if ('type' in msg && msg.type === MessageType.Terminated) { + if (ProcessTerminatedMessage.is(msg)) { waitForTerminated.resolve(); } }); const stopTimeout = this.cli.pluginHostStopTimeout; - cp.send(JSON.stringify({ type: MessageType.Terminate, stopTimeout })); + cp.send(JSON.stringify({ type: ProcessTerminateMessage.TYPE, stopTimeout })); const terminateTimeout = this.cli.pluginHostTerminateTimeout; if (terminateTimeout) { @@ -156,9 +159,11 @@ export class HostedPluginProcess implements ServerPluginRunner { logger: this.logger, args: [] }); - this.childProcess.on('message', message => { + + this.messagePipe = new BinaryMessagePipe(this.childProcess.stdio[4] as Duplex); + this.messagePipe.onMessage(buffer => { if (this.client) { - this.client.postMessage(PLUGIN_HOST_BACKEND, message as string); + this.client.postMessage(PLUGIN_HOST_BACKEND, buffer); } }); } @@ -184,7 +189,11 @@ export class HostedPluginProcess implements ServerPluginRunner { silent: true, env: env, execArgv: [], - stdio: ['pipe', 'pipe', 'pipe', 'ipc'] + // 5th element MUST be 'overlapped' for it to work properly on Windows. + // 'overlapped' works just like 'pipe' on non-Windows platforms. + // See: https://nodejs.org/docs/latest-v14.x/api/child_process.html#child_process_options_stdio + // Note: For some reason `@types/node` does not know about 'overlapped'. + stdio: ['pipe', 'pipe', 'pipe', 'ipc', 'overlapped' as 'pipe'] }; const inspectArgPrefix = `--${options.serverName}-inspect`; const inspectArg = process.argv.find(v => v.startsWith(inspectArgPrefix)); diff --git a/packages/plugin-ext/src/hosted/node/hosted-plugin-protocol.ts b/packages/plugin-ext/src/hosted/node/hosted-plugin-protocol.ts new file mode 100644 index 0000000000000..429c2168d92ac --- /dev/null +++ b/packages/plugin-ext/src/hosted/node/hosted-plugin-protocol.ts @@ -0,0 +1,49 @@ +// ***************************************************************************** +// Copyright (C) 2022 STMicroelectronics and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// http://www.eclipse.org/legal/epl-2.0. +// +// This Source Code may also be made available under the following Secondary +// Licenses when the conditions for such availability set forth in the Eclipse +// Public License v. 2.0 are satisfied: GNU General Public License, version 2 +// with the GNU Classpath Exception which is available at +// https://www.gnu.org/software/classpath/license.html. +// +// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +// ***************************************************************************** + +// Custom message protocol between `HostedPluginProcess` and its `PluginHost` child process. + +/** + * Sent to initiate termination of the counterpart process. + */ +export interface ProcessTerminateMessage { + type: typeof ProcessTerminateMessage.TYPE, + stopTimeout?: number +} + +export namespace ProcessTerminateMessage { + export const TYPE = 0; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + export function is(object: any): object is ProcessTerminateMessage { + return typeof object === 'object' && object.type === TYPE; + } +} + +/** + * Sent to inform the counter part process that the process termination has been completed. + */ +export interface ProcessTerminatedMessage { + type: typeof ProcessTerminateMessage.TYPE, +} + +export namespace ProcessTerminatedMessage { + export const TYPE = 1; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + export function is(object: any): object is ProcessTerminateMessage { + return typeof object === 'object' && object.type === TYPE; + } +} + diff --git a/packages/plugin-ext/src/hosted/node/hosted-plugin.ts b/packages/plugin-ext/src/hosted/node/hosted-plugin.ts index 119822628bd1e..81d03a156ea20 100644 --- a/packages/plugin-ext/src/hosted/node/hosted-plugin.ts +++ b/packages/plugin-ext/src/hosted/node/hosted-plugin.ts @@ -71,7 +71,7 @@ export class HostedPluginSupport { } } - onMessage(pluginHostId: string, message: string): void { + onMessage(pluginHostId: string, message: Uint8Array): void { // need to perform routing // eslint-disable-next-line @typescript-eslint/no-explicit-any if (this.pluginRunners.length > 0) { diff --git a/packages/plugin-ext/src/hosted/node/plugin-host.ts b/packages/plugin-ext/src/hosted/node/plugin-host.ts index fa54f21beb537..24b67a6304b83 100644 --- a/packages/plugin-ext/src/hosted/node/plugin-host.ts +++ b/packages/plugin-ext/src/hosted/node/plugin-host.ts @@ -13,11 +13,12 @@ // // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 // ***************************************************************************** - -import { Emitter } from '@theia/core/lib/common/event'; -import { RPCProtocolImpl, MessageType, ConnectionClosedError } from '../../common/rpc-protocol'; +// eslint-disable-next-line import/no-extraneous-dependencies +import 'reflect-metadata'; +import { ConnectionClosedError, RPCProtocolImpl } from '../../common/rpc-protocol'; +import { ProcessTerminatedMessage, ProcessTerminateMessage } from './hosted-plugin-protocol'; import { PluginHostRPC } from './plugin-host-rpc'; -import { reviver } from '../../plugin/types-impl'; +import { IPCChannel } from '@theia/core/lib/node'; console.log('PLUGIN_HOST(' + process.pid + ') starting instance'); @@ -74,18 +75,8 @@ process.on('rejectionHandled', (promise: Promise) => { }); let terminating = false; -const emitter = new Emitter(); -const rpc = new RPCProtocolImpl({ - onMessage: emitter.event, - send: (m: string) => { - if (process.send && !terminating) { - process.send(m); - } - } -}, -{ - reviver: reviver -}); +const channel = new IPCChannel(); +const rpc = new RPCProtocolImpl(channel); process.on('message', async (message: string) => { if (terminating) { @@ -93,10 +84,9 @@ process.on('message', async (message: string) => { } try { const msg = JSON.parse(message); - if ('type' in msg && msg.type === MessageType.Terminate) { + if (ProcessTerminateMessage.is(msg)) { terminating = true; - emitter.dispose(); - if ('stopTimeout' in msg && typeof msg.stopTimeout === 'number' && msg.stopTimeout) { + if (msg.stopTimeout) { await Promise.race([ pluginHostRPC.terminate(), new Promise(resolve => setTimeout(resolve, msg.stopTimeout)) @@ -106,10 +96,9 @@ process.on('message', async (message: string) => { } rpc.dispose(); if (process.send) { - process.send(JSON.stringify({ type: MessageType.Terminated })); + process.send(JSON.stringify({ type: ProcessTerminatedMessage.TYPE })); } - } else { - emitter.fire(message); + } } catch (e) { console.error(e); diff --git a/packages/plugin-ext/src/hosted/node/plugin-service.ts b/packages/plugin-ext/src/hosted/node/plugin-service.ts index fcd24918ed2f6..4789ffb38f0ac 100644 --- a/packages/plugin-ext/src/hosted/node/plugin-service.ts +++ b/packages/plugin-ext/src/hosted/node/plugin-service.ts @@ -164,7 +164,7 @@ export class HostedPluginServerImpl implements HostedPluginServer { return Promise.all(plugins.map(plugin => this.localizationService.localizePlugin(plugin))); } - onMessage(pluginHostId: string, message: string): Promise { + onMessage(pluginHostId: string, message: Uint8Array): Promise { this.hostedPlugin.onMessage(pluginHostId, message); return Promise.resolve(); } diff --git a/packages/plugin-ext/src/main/browser/main-context.ts b/packages/plugin-ext/src/main/browser/main-context.ts index 74288f2d67b36..eee7fd8cd7335 100644 --- a/packages/plugin-ext/src/main/browser/main-context.ts +++ b/packages/plugin-ext/src/main/browser/main-context.ts @@ -56,7 +56,6 @@ import { CustomEditorsMainImpl } from './custom-editors/custom-editors-main'; import { SecretsMainImpl } from './secrets-main'; import { WebviewViewsMainImpl } from './webview-views/webview-views-main'; import { MonacoLanguages } from '@theia/monaco/lib/browser/monaco-languages'; -import { NotificationExtImpl } from '../../plugin/notification'; import { UntitledResourceResolver } from '@theia/core/lib/common/resource'; import { ThemeService } from '@theia/core/lib/browser/theming'; @@ -110,9 +109,6 @@ export function setUpPluginApi(rpc: RPCProtocol, container: interfaces.Container const notificationMain = new NotificationMainImpl(rpc, container); rpc.set(PLUGIN_RPC_CONTEXT.NOTIFICATION_MAIN, notificationMain); - const notificationExt = new NotificationExtImpl(rpc); - rpc.set(MAIN_RPC_CONTEXT.NOTIFICATION_EXT, notificationExt); - const terminalMain = new TerminalServiceMainImpl(rpc, container); rpc.set(PLUGIN_RPC_CONTEXT.TERMINAL_MAIN, terminalMain); diff --git a/packages/plugin-ext/src/plugin/types-impl.ts b/packages/plugin-ext/src/plugin/types-impl.ts index cf9eea96158cb..5d4abbdee56d1 100644 --- a/packages/plugin-ext/src/plugin/types-impl.ts +++ b/packages/plugin-ext/src/plugin/types-impl.ts @@ -30,22 +30,8 @@ import { startsWithIgnoreCase } from '@theia/core/lib/common/strings'; import { SymbolKind } from '../common/plugin-api-rpc-model'; import { FileSystemProviderErrorCode, markAsFileSystemProviderError } from '@theia/filesystem/lib/common/files'; import * as paths from 'path'; -import { ObjectsTransferrer } from '../common/rpc-protocol'; import { es5ClassCompat } from '../common/types'; -/** - * A reviver that takes URI's transferred via JSON.stringify() and makes - * instances of our local plugin API URI class (below) - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export function reviver(key: string | undefined, value: any): any { - const revived = ObjectsTransferrer.reviver(key, value); - if (CodeURI.isUri(revived)) { - return URI.revive(revived); - } - return revived; -} - /** * This is an implementation of #theia.Uri based on vscode-uri. * This is supposed to fix https://github.com/eclipse-theia/theia/issues/8752