diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000000..3332d12a23 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,93 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "main", "insiders", "release", "vs" ] + pull_request: + branches: [ "main", "insiders", "release", "vs" ] + schedule: + - cron: '29 4 * * 3' + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners (GitHub.com only) + # Consider using larger runners or machines with greater resources for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }} + permissions: + # required for all workflows + security-events: write + + # required to fetch internal or private CodeQL packs + packages: read + + # only required for workflows in private repositories + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: javascript-typescript + build-mode: none + # CodeQL supports the following values keywords for 'language': 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' + # Use `c-cpp` to analyze code written in C, C++ or both + # Use 'java-kotlin' to analyze code written in Java, Kotlin or both + # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both + # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis, + # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning. + # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how + # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + # If the analyze step fails for one of the languages you are analyzing with + # "We were unable to automatically build your code", modify the matrix above + # to set the build mode to "manual" for that language. Then modify this step + # to build your code. + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + - if: matrix.build-mode == 'manual' + shell: bash + run: | + echo 'If you are using a "manual" build mode for one or more of the' \ + 'languages you are analyzing, replace this with the commands to build' \ + 'your code, for example:' + echo ' make bootstrap' + echo ' make release' + exit 1 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/Build/cg/cg.yml b/Build/cg/cg.yml index fe8811edf8..124c301f04 100644 --- a/Build/cg/cg.yml +++ b/Build/cg/cg.yml @@ -80,9 +80,9 @@ extends: displayName: Use Yarn 1.x - task: UseNode@1 - displayName: Use Node 16.x + displayName: Use Node 18.x inputs: - version: 16.x + version: 18.x - task: CmdLine@2 displayName: Delete .npmrc if it exists diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 900b545c07..1fcc45e2a5 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,6 +1,22 @@ # C/C++ for Visual Studio Code Changelog -## Version 1.21.1: July 15, 2024 +## Version 1.21.6: August 5, 2024 +* Fix a cpptools-srv crash on shutdown. [#12354](https://github.com/microsoft/vscode-cpptools/issues/12354) + +## Version 1.21.5: July 31, 2024 +### Bug Fixes +* Fix clang-format and clang-tidy not working on Windows 10. [#12289](https://github.com/microsoft/vscode-cpptools/issues/12289) +* Fix a crash with cpptools-srv on certain macOS versions. [#12354](https://github.com/microsoft/vscode-cpptools/issues/12354) +* Fix cpptools crashing on macOS Big Sur or older. [#12511](https://github.com/microsoft/vscode-cpptools/issues/12511) +* Fix debugging on Windows ARM64. [#12520](https://github.com/microsoft/vscode-cpptools/issues/12520) + +## Version 1.21.4: July 25, 2024 +* Re-enable compatibility with VS Code 1.67.0 (instead of 1.82.0). [#12507](https://github.com/microsoft/vscode-cpptools/issues/12507) + +## Version 1.21.3: July 24, 2024 +* Fix a crash on Linux ARM OS's. [#12497](https://github.com/microsoft/vscode-cpptools/issues/12497) + +## Version 1.21.2: July 12, 2024 ### Enhancements * Add `see` and `sa` to the `C_Cpp.doxygen.sectionTags` setting. [#12384](https://github.com/microsoft/vscode-cpptools/issues/12384) * Update the vcpkg header database. [PR #12430](https://github.com/microsoft/vscode-cpptools/pull/12430) @@ -9,30 +25,27 @@ * Various IntelliSense engine updates/fixes. ### Bug Fixes +* Stop logging file watch events for excluded files. [#11455](https://github.com/microsoft/vscode-cpptools/issues/11455) * Fix a crash if the Ryzen 3000 doesn't have updated drivers. [#12201](https://github.com/microsoft/vscode-cpptools/issues/12201) +* Fix handling of `-isystem` and `-iquote` for IntelliSense configuration. [#12207](https://github.com/microsoft/vscode-cpptools/issues/12207) +* Fix doxygen comment generation when `/**` comments are used. [#12249](https://github.com/microsoft/vscode-cpptools/issues/12249) +* Fix a code analysis crash on Linux if the message is too long. [#12285](https://github.com/microsoft/vscode-cpptools/issues/12285) * Fix relative paths in `compile_commands.json` to be relative to the `compile_commands.json`'s directory. [#12290](https://github.com/microsoft/vscode-cpptools/issues/12290) * Fix a tag parser performance regression. [#12292](https://github.com/microsoft/vscode-cpptools/issues/12292) +* Fix a regression with cl.exe system include path detection. [#12293](https://github.com/microsoft/vscode-cpptools/issues/12293) * Fix code analysis, find all references, and rename from getting the wrong configuration for non-open files on the first run when using a configuration provider. [#12313](https://github.com/microsoft/vscode-cpptools/issues/12313) -* Fix potential crashes. [#12354](https://github.com/microsoft/vscode-cpptools/issues/12354) +* Fix handling of doxygen comment blocks with `*//*` in them. [#12316](https://github.com/microsoft/vscode-cpptools/issues/12316) +* Fix potential crashes during IntelliSense process shutdown. [#12354](https://github.com/microsoft/vscode-cpptools/issues/12354) * Fix the language status not showing it's busy while the tag parser is initializing. [#12403](https://github.com/microsoft/vscode-cpptools/issues/12403) * Fix the vcpkg code action not appearing for missing headers available via vcpkg. [#12413](https://github.com/microsoft/vscode-cpptools/issues/12413) * Fix custom configurations sometimes not getting used. [PR #12427](https://github.com/microsoft/vscode-cpptools/pull/12427) * Fix a code analysis error when using gcc 14. [#12428](https://github.com/microsoft/vscode-cpptools/issues/12428) +* Fix warning notification showing when `C_Cpp.getIncludes` is disabled. [PR #12470](https://github.com/microsoft/vscode-cpptools/pull/12470) * Fix a cause of colorization, inactive regions, and inlay hints getting cleared when an update is pending. -* Fix a cause of semantic tokens transiently being placed in the wrong location. -* Fix a potential deadlock when configured using compile commands. - -## Version 1.21.0: June 17, 2024 -### Bug Fixes -* Stop logging file watch events for excluded files. [#11455](https://github.com/microsoft/vscode-cpptools/issues/11455) -* Fix handling of `-isystem` and `-iquote` for IntelliSense configuration. [#12207](https://github.com/microsoft/vscode-cpptools/issues/12207) -* Fix doxygen comment generation when `/**` comments are used. [#12249](https://github.com/microsoft/vscode-cpptools/issues/12249) -* Fix a code analysis crash on Linux if the message is too long. [#12285](https://github.com/microsoft/vscode-cpptools/issues/12285) -* Fix a regression with cl.exe system include path detection. [#12293](https://github.com/microsoft/vscode-cpptools/issues/12293) -* Fix handling of doxygen comment blocks with `*//*` in them. [#12316](https://github.com/microsoft/vscode-cpptools/issues/12316) -* Fix a crash during IntelliSense process shutdown. [#12354](https://github.com/microsoft/vscode-cpptools/issues/12354) * Update the default clang/gcc versions used for IntelliSense if an unknown version is found. +* Fix a cause of semantic tokens transiently being placed in the wrong location. * Update clang-format and clang-tidy from 18.1.2 to 18.1.7 (for the bug fixes). +* Fix a potential deadlock when configured using compile commands. ## Version 1.20.5: May 6, 2024 ### Enhancements diff --git a/Extension/ThirdPartyNotices.txt b/Extension/ThirdPartyNotices.txt index b1852efbc7..da66779df4 100644 --- a/Extension/ThirdPartyNotices.txt +++ b/Extension/ThirdPartyNotices.txt @@ -683,7 +683,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --------------------------------------------------------- -semver 7.6.2 - ISC +semver 7.6.3 - ISC https://github.com/npm/node-semver#readme Copyright Isaac Z. Schlueter @@ -762,12 +762,13 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --------------------------------------------------------- -@microsoft/applicationinsights-channel-js 3.2.2 - MIT +@microsoft/1ds-core-js 4.3.0 - MIT https://github.com/microsoft/ApplicationInsights-JS#readme +copyright Microsoft 2018 Copyright (c) Microsoft Corporation Copyright (c) Microsoft and contributors -Copyright (c) NevWare21 and contributors +Copyright (c) NevWare21 Solutions LLC and contributors The MIT License (MIT) @@ -791,17 +792,53 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--------------------------------------------------------- + +--------------------------------------------------------- + +@microsoft/1ds-post-js 4.3.0 - MIT +https://github.com/microsoft/ApplicationInsights-JS#readme + +copyright Microsoft 2018 +copyright Microsoft 2020 +copyright Microsoft 2018-2020 +copyright Microsoft 2022 Simple +Copyright (c) Microsoft Corporation +Copyright (c) Microsoft and contributors +Copyright (c) NevWare21 Solutions LLC and contributors + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. --------------------------------------------------------- --------------------------------------------------------- -@microsoft/applicationinsights-common 3.2.2 - MIT +@microsoft/applicationinsights-channel-js 3.3.0 - MIT https://github.com/microsoft/ApplicationInsights-JS#readme Copyright (c) Microsoft Corporation Copyright (c) Microsoft and contributors -Copyright (c) NevWare21 and contributors +Copyright (c) NevWare21 Solutions LLC and contributors The MIT License (MIT) @@ -830,12 +867,46 @@ SOFTWARE. --------------------------------------------------------- -@microsoft/applicationinsights-core-js 3.2.2 - MIT +@microsoft/applicationinsights-common 3.3.0 - MIT https://github.com/microsoft/ApplicationInsights-JS#readme Copyright (c) Microsoft Corporation Copyright (c) Microsoft and contributors -Copyright (c) NevWare21 and contributors +Copyright (c) NevWare21 Solutions LLC and contributors + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +--------------------------------------------------------- + +--------------------------------------------------------- + +@microsoft/applicationinsights-core-js 3.3.0 - MIT +https://github.com/microsoft/ApplicationInsights-JS#readme + +Copyright (c) Microsoft Corporation +Copyright (c) Microsoft and contributors +Copyright (c) NevWare21 Solutions LLC and contributors The MIT License (MIT) @@ -893,6 +964,40 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--------------------------------------------------------- + +--------------------------------------------------------- + +@microsoft/applicationinsights-web-basic 3.3.0 - MIT +https://github.com/microsoft/ApplicationInsights-JS#readme + +Copyright (c) Microsoft Corporation +Copyright (c) Microsoft and contributors +Copyright (c) NevWare21 Solutions LLC and contributors + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + --------------------------------------------------------- --------------------------------------------------------- @@ -931,17 +1036,17 @@ SOFTWARE. --------------------------------------------------------- -@nevware21/ts-async 0.5.1 - MIT +@nevware21/ts-async 0.5.2 - MIT https://github.com/nevware21/ts-async -Copyright (c) 2022 Nevware21 -Copyright (c) 2023 Nevware21 -Copyright (c) 2024 Nevware21 -Copyright (c) NevWare21 and contributors +Copyright (c) 2022 NevWare21 Solutions LLC +Copyright (c) 2023 NevWare21 Solutions LLC +Copyright (c) 2024 NevWare21 Solutions LLC +Copyright (c) NevWare21 Solutions LLC and contributors MIT License -Copyright (c) 2022 Nevware21 +Copyright (c) 2022 NevWare21 Solutions LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -966,18 +1071,17 @@ SOFTWARE. --------------------------------------------------------- -@nevware21/ts-utils 0.11.2 - MIT +@nevware21/ts-utils 0.11.3 - MIT https://github.com/nevware21/ts-utils -Copyright (c) 2022 NevWare21 -Copyright (c) 2022 Nevware21 -Copyright (c) 2023 Nevware21 -Copyright (c) 2024 Nevware21 -Copyright (c) NevWare21 and contributors +Copyright (c) 2022 NevWare21 Solutions LLC +Copyright (c) 2023 NevWare21 Solutions LLC +Copyright (c) 2024 NevWare21 Solutions LLC +Copyright (c) NevWare21 Solutions LLC and contributors MIT License -Copyright (c) 2022 NevWare21 +Copyright (c) 2022 NevWare21 Solutions LLC Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -1403,7 +1507,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------- -comment-json 4.2.3 - MIT +comment-json 4.2.4 - MIT https://github.com/kaelzhang/node-comment-json#readme Copyright (c) 2013 kaelzhang @@ -1489,6 +1593,38 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--------------------------------------------------------- + +--------------------------------------------------------- + +debug 4.3.4 - MIT +https://github.com/debug-js/debug#readme + +Copyright (c) 2018-2021 Josh Junon +Copyright (c) 2014-2017 TJ Holowaychuk + +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + --------------------------------------------------------- --------------------------------------------------------- @@ -1867,6 +2003,38 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--------------------------------------------------------- + +--------------------------------------------------------- + +ms 2.1.2 - MIT +https://github.com/zeit/ms#readme + +Copyright (c) 2016 Zeit, Inc. + +The MIT License (MIT) + +Copyright (c) 2016 Zeit, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + --------------------------------------------------------- --------------------------------------------------------- @@ -1907,6 +2075,7 @@ SOFTWARE. node-loader 2.0.0 - MIT https://github.com/webpack-contrib/node-loader +Copyright JS Foundation and other contributors Copyright JS Foundation and other contributors @@ -2395,7 +2564,7 @@ THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --------------------------------------------------------- -vscode-jsonrpc 8.2.0 - MIT +vscode-jsonrpc 8.1.0 - MIT https://github.com/Microsoft/vscode-languageserver-node#readme Copyright (c) Microsoft Corporation @@ -2417,7 +2586,7 @@ THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --------------------------------------------------------- -vscode-languageclient 9.0.1 - MIT +vscode-languageclient 8.1.0 - MIT https://github.com/Microsoft/vscode-languageserver-node#readme Copyright (c) Microsoft Corporation @@ -2439,7 +2608,7 @@ THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --------------------------------------------------------- -vscode-languageserver-protocol 3.17.5 - MIT +vscode-languageserver-protocol 3.17.3 - MIT https://github.com/Microsoft/vscode-languageserver-node#readme Copyright (c) Microsoft Corporation @@ -2462,7 +2631,7 @@ THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI --------------------------------------------------------- -vscode-languageserver-types 3.17.5 - MIT +vscode-languageserver-types 3.17.3 - MIT https://github.com/Microsoft/vscode-languageserver-node#readme Copyright (c) Microsoft Corporation diff --git a/Extension/bin/messages/cs/messages.json b/Extension/bin/messages/cs/messages.json index e69d4ee973..1af8bee7e8 100644 --- a/Extension/bin/messages/cs/messages.json +++ b/Extension/bin/messages/cs/messages.json @@ -2953,9 +2953,9 @@ "Neplatná hodnota sady pragma %s pro funkci s omezením AMP", "Překrývající se specifikátory omezení nejsou povolené.", "Specifikátory omezení destruktoru musejí pokrývat sjednocení specifikátorů omezení všech konstruktorů.", - null, + "", "Pro nostdlib se vyžaduje aspoň jedno nucené použití.", - null, + "", null, null, null, diff --git a/Extension/bin/messages/de/messages.json b/Extension/bin/messages/de/messages.json index 917bf8a82b..14666db3cd 100644 --- a/Extension/bin/messages/de/messages.json +++ b/Extension/bin/messages/de/messages.json @@ -2953,9 +2953,9 @@ "Unzulässiger Wert für Pragmapaket \"%s\" für die auf AMP begrenzte Funktion.", "Überlappende Einschränkungsspezifizierer sind unzulässig.", "Die Einschränkungsspezifizierer des Destruktors müssen die Union der Einschränkungsspezifizierer für alle Konstruktoren abdecken.", - null, + "", "Für \"nostdlib\" ist mindestens eine erzwungene Verwendung erforderlich.", - null, + "", null, null, null, diff --git a/Extension/bin/messages/es/messages.json b/Extension/bin/messages/es/messages.json index c280af10ec..3225a42f18 100644 --- a/Extension/bin/messages/es/messages.json +++ b/Extension/bin/messages/es/messages.json @@ -2953,9 +2953,9 @@ "valor de pragma pack %s no válido para la función con restricción amp", "no se permiten especificadores de restricción superpuestos", "los especificadores de restricción del destructor deben cubrir la unión de los especificadores de restricción de todos los constructores", - null, + "", "nostdlib requiere al menos un uso forzado", - null, + "", null, null, null, diff --git a/Extension/bin/messages/fr/messages.json b/Extension/bin/messages/fr/messages.json index d30630e8b1..a47e86e4ff 100644 --- a/Extension/bin/messages/fr/messages.json +++ b/Extension/bin/messages/fr/messages.json @@ -2953,9 +2953,9 @@ "valeur de pragma pack non conforme %s pour la fonction à restriction amp", "spécificateurs de restriction en chevauchement non autorisés", "les spécificateurs de restriction du destructeur doivent couvrir l'union des spécificateurs de restriction sur tous les constructeurs", - null, + "", "nostdlib nécessite au moins un using forcé", - null, + "", null, null, null, diff --git a/Extension/bin/messages/it/messages.json b/Extension/bin/messages/it/messages.json index ac5d0a035f..e5c7937ae6 100644 --- a/Extension/bin/messages/it/messages.json +++ b/Extension/bin/messages/it/messages.json @@ -2953,9 +2953,9 @@ "il valore %s del pacchetto pragma per la funzione con restrizioni AMP non è valido", "gli identificatori di limitazione sovrapposti non sono consentiti", "gli identificatori di limitazione del distruttore devono coprire l'unione degli identificatori di limitazione in tutti i costruttori", - null, + "", "con nostdlib è richiesta almeno un'opzione Forced Using", - null, + "", null, null, null, diff --git a/Extension/bin/messages/ja/messages.json b/Extension/bin/messages/ja/messages.json index d63a26d2da..9ef4cd4de8 100644 --- a/Extension/bin/messages/ja/messages.json +++ b/Extension/bin/messages/ja/messages.json @@ -2953,9 +2953,9 @@ "amp 制限関数に無効な pragma pack 値 %s ", "重複した制限指定子は許可されていません", "デストラクターの制限指定子は、すべてのコンストラクターの制限指定子の和集合を対象とする必要があります", - null, + "", "nostdlib には少なくとも 1 つの強制された using が必要です", - null, + "", null, null, null, diff --git a/Extension/bin/messages/ko/messages.json b/Extension/bin/messages/ko/messages.json index 6730d50063..af4cf82ada 100644 --- a/Extension/bin/messages/ko/messages.json +++ b/Extension/bin/messages/ko/messages.json @@ -2953,9 +2953,9 @@ "amp 제한 함수의 pragma pack 값 %s이(가) 잘못되었습니다.", "겹치는 제한 지정자는 사용할 수 없습니다.", "소멸자의 제한 지정자는 모든 생성자에 대한 제한 지정자의 공용 구조체를 지정해야 합니다.", - null, + "", "nostdlib에는 한 번 이상의 강제 사용이 필요합니다.", - null, + "", null, null, null, diff --git a/Extension/bin/messages/pl/messages.json b/Extension/bin/messages/pl/messages.json index f7e4172d72..e0757384f3 100644 --- a/Extension/bin/messages/pl/messages.json +++ b/Extension/bin/messages/pl/messages.json @@ -2953,9 +2953,9 @@ "niedozwolona wartość dyrektywy pragma pack %s dla funkcji z ograniczeniem amp", "nakładające się specyfikatory ograniczenia są niedozwolone", "specyfikatory ograniczenia destruktora muszą obejmować unię specyfikatorów ograniczenia na wszystkich konstruktorach", - null, + "", "element nostdlib wymaga co najmniej jednego wymuszonego użycia", - null, + "", null, null, null, diff --git a/Extension/bin/messages/pt-br/messages.json b/Extension/bin/messages/pt-br/messages.json index 11090796ac..50ccf861cc 100644 --- a/Extension/bin/messages/pt-br/messages.json +++ b/Extension/bin/messages/pt-br/messages.json @@ -2953,9 +2953,9 @@ "valor do pacote pragma %s ilícito para a função restrita por amp", "não é permitido sobrepor especificadores restritos", "os especificadores restritos do destruidor devem conter a união dos especificadores restritos em todos os construtores", - null, + "", "o nostdlib exige pelo menos um uso forçado", - null, + "", null, null, null, diff --git a/Extension/bin/messages/ru/messages.json b/Extension/bin/messages/ru/messages.json index 3d88bc379b..e5a7a90dad 100644 --- a/Extension/bin/messages/ru/messages.json +++ b/Extension/bin/messages/ru/messages.json @@ -2953,9 +2953,9 @@ "Недопустимое значение pragma pack %s для функции со спецификатором ограничения amp.", "перекрывающиеся описатели restrict запрещены", "описатели restrict деструктора должны охватывать объединение описателей restrict всех конструкторов", - null, + "", "для nostdlib требуется по меньшей мере одна директива forced using", - null, + "", null, null, null, diff --git a/Extension/bin/messages/tr/messages.json b/Extension/bin/messages/tr/messages.json index 92f833b1ff..7a55ab51b3 100644 --- a/Extension/bin/messages/tr/messages.json +++ b/Extension/bin/messages/tr/messages.json @@ -2953,9 +2953,9 @@ "AMP ile sınırlı işlev için pragma paket değeri (%s) geçersiz", "örtüşen kısıtlama tanımlayıcılarına izin verilmiyor", "yıkıcının kısıtlama tanımlayıcıları, tüm oluşturuculardaki kısıtlama tanımlayıcılarının birleşimini kapsamalıdır", - null, + "", "nostdlib en az bir zorunlu kullanım gerektirir", - null, + "", null, null, null, diff --git a/Extension/bin/messages/zh-cn/messages.json b/Extension/bin/messages/zh-cn/messages.json index a8f118b002..af786d1e4f 100644 --- a/Extension/bin/messages/zh-cn/messages.json +++ b/Extension/bin/messages/zh-cn/messages.json @@ -2953,9 +2953,9 @@ "受 AMP 限制的函数的 pragma 包值 %s 非法", "限制说明符不可重叠", "析构函数的限制说明符必须包含所有构造函数的限制说明符的联合部分", - null, + "", "nostdlib 要求至少使用一个强制 using", - null, + "", null, null, null, diff --git a/Extension/bin/messages/zh-tw/messages.json b/Extension/bin/messages/zh-tw/messages.json index 8338705c3a..7cf9f7d3a3 100644 --- a/Extension/bin/messages/zh-tw/messages.json +++ b/Extension/bin/messages/zh-tw/messages.json @@ -2953,9 +2953,9 @@ "AMP 限制涵式中有不合法的 pragma 套件值 %s", "不允許重疊的限制指定名稱", "解構函式的限制規範必須涵蓋所有建構函式的限制規範聯集", - null, + "", "nostdlib 至少需要一個強制 Using", - null, + "", null, null, null, diff --git a/Extension/package.json b/Extension/package.json index 6c2e97d320..288c671f34 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.21.1-main", + "version": "1.21.6-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", @@ -827,8 +827,8 @@ "items": { "type": "string" }, - "default": null, "uniqueItems": true, + "default": null, "markdownDescription": "%c_cpp.configuration.default.browse.path.markdownDescription%", "scope": "machine-overridable" }, @@ -5988,18 +5988,21 @@ "configurationDefaults": { "[cpp]": { "editor.wordBasedSuggestions": "off", - "editor.suggest.insertMode": "replace", - "editor.semanticHighlighting.enabled": true + "editor.semanticHighlighting.enabled": true, + "editor.stickyScroll.defaultModel": "foldingProviderModel", + "editor.suggest.insertMode": "replace" }, "[cuda-cpp]": { "editor.wordBasedSuggestions": "off", - "editor.suggest.insertMode": "replace", - "editor.semanticHighlighting.enabled": true + "editor.semanticHighlighting.enabled": true, + "editor.stickyScroll.defaultModel": "foldingProviderModel", + "editor.suggest.insertMode": "replace" }, "[c]": { "editor.wordBasedSuggestions": "off", - "editor.suggest.insertMode": "replace", - "editor.semanticHighlighting.enabled": true + "editor.semanticHighlighting.enabled": true, + "editor.stickyScroll.defaultModel": "foldingProviderModel", + "editor.suggest.insertMode": "replace" } }, "semanticTokenTypes": [ @@ -6545,7 +6548,7 @@ "ssh-config": "^4.4.4", "tmp": "^0.2.3", "vscode-cpptools": "^6.1.0", - "vscode-languageclient": "^9.0.1", + "vscode-languageclient": "^8.1.0", "vscode-nls": "^5.2.0", "vscode-tas-client": "^0.1.84", "which": "^2.0.2" diff --git a/Extension/src/LanguageServer/Providers/codeActionProvider.ts b/Extension/src/LanguageServer/Providers/codeActionProvider.ts index 505b5171a4..6de47e15b9 100644 --- a/Extension/src/LanguageServer/Providers/codeActionProvider.ts +++ b/Extension/src/LanguageServer/Providers/codeActionProvider.ts @@ -80,7 +80,7 @@ export class CodeActionProvider implements vscode.CodeActionProvider { let hasSelectIntelliSenseConfiguration: boolean = false; const settings: CppSettings = new CppSettings(this.client.RootUri); - const hasConfigurationSet: boolean = settings.defaultCompilerPath !== undefined || + const hasConfigurationSet: boolean = settings.defaultCompilerPath !== null || !!settings.defaultCompileCommands || !!settings.defaultConfigurationProvider || this.client.configuration.CurrentConfiguration?.compilerPath !== undefined || !!this.client.configuration.CurrentConfiguration?.compileCommands || diff --git a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts index 73c7dfa50e..be2a571aa5 100644 --- a/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts +++ b/Extension/src/LanguageServer/Providers/foldingRangeProvider.ts @@ -57,8 +57,7 @@ export class FoldingRangeProvider implements vscode.FoldingRangeProvider { return promise; } - private async requestRanges(uri: string, token: vscode.CancellationToken): Promise - { + private async requestRanges(uri: string, token: vscode.CancellationToken): Promise { const params: GetFoldingRangesParams = { uri }; diff --git a/Extension/src/LanguageServer/Providers/inlayHintProvider.ts b/Extension/src/LanguageServer/Providers/inlayHintProvider.ts index 984587cba0..257703f770 100644 --- a/Extension/src/LanguageServer/Providers/inlayHintProvider.ts +++ b/Extension/src/LanguageServer/Providers/inlayHintProvider.ts @@ -6,8 +6,7 @@ import * as vscode from 'vscode'; import { ManualPromise } from '../../Utility/Async/manualPromise'; import { CppSettings } from '../settings'; -interface FileData -{ +interface FileData { version: number; promise: ManualPromise; typeHints: CppInlayHint[]; diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 9479e3d597..434901f82e 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -533,13 +533,11 @@ interface DidChangeActiveEditorParams { selection?: Range; } -interface GetIncludesParams -{ +interface GetIncludesParams { maxDepth: number; } -interface GetIncludesResult -{ +interface GetIncludesResult { includedFiles: string[]; } @@ -1275,7 +1273,7 @@ export class DefaultClient implements Client { this.codeFoldingProviderDisposable = vscode.languages.registerFoldingRangeProvider(util.documentSelector, this.codeFoldingProvider); const settings: CppSettings = new CppSettings(); - if (settings.enhancedColorization && semanticTokensLegend) { + if (settings.isEnhancedColorizationEnabled && semanticTokensLegend) { this.semanticTokensProvider = new SemanticTokensProvider(); this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(util.documentSelector, this.semanticTokensProvider, semanticTokensLegend); } @@ -1352,9 +1350,6 @@ export class DefaultClient implements Client { clangTidyHeaderFilter: settings.clangTidyHeaderFilter !== null ? util.resolveVariables(settings.clangTidyHeaderFilter, this.AdditionalEnvironment) : null, clangTidyArgs: util.resolveVariablesArray(settings.clangTidyArgs, this.AdditionalEnvironment), clangTidyUseBuildPath: settings.clangTidyUseBuildPath, - clangTidyFixWarnings: settings.clangTidyFixWarnings, - clangTidyFixErrors: settings.clangTidyFixErrors, - clangTidyFixNotes: settings.clangTidyFixNotes, clangTidyChecksEnabled: settings.clangTidyChecksEnabled, clangTidyChecksDisabled: settings.clangTidyChecksDisabled, markdownInComments: settings.markdownInComments, @@ -1463,7 +1458,7 @@ export class DefaultClient implements Client { simplifyStructuredComments: workspaceSettings.simplifyStructuredComments, intelliSenseUpdateDelay: workspaceSettings.intelliSenseUpdateDelay, experimentalFeatures: workspaceSettings.experimentalFeatures, - enhancedColorization: workspaceSettings.enhancedColorization, + enhancedColorization: workspaceSettings.isEnhancedColorizationEnabled, intellisenseMaxCachedProcesses: workspaceSettings.intelliSenseMaxCachedProcesses, intellisenseMaxMemory: workspaceSettings.intelliSenseMaxMemory, referencesMaxConcurrentThreads: workspaceSettings.referencesMaxConcurrentThreads, @@ -1520,9 +1515,9 @@ export class DefaultClient implements Client { } const workspaceSettings: CppSettings = new CppSettings(); - if (workspaceSettings.caseSensitiveFileSupport !== currentCaseSensitiveFileSupport.Value) { + if (workspaceSettings.isCaseSensitiveFileSupportEnabled !== currentCaseSensitiveFileSupport.Value) { resetDatabase = true; - currentCaseSensitiveFileSupport.Value = workspaceSettings.caseSensitiveFileSupport; + currentCaseSensitiveFileSupport.Value = workspaceSettings.isCaseSensitiveFileSupportEnabled; } const cacheStoragePath: string = util.getCacheStoragePath(); @@ -1537,7 +1532,7 @@ export class DefaultClient implements Client { cacheStoragePath: cacheStoragePath, vcpkgRoot: util.getVcpkgRoot(), intelliSenseCacheDisabled: intelliSenseCacheDisabled, - caseSensitiveFileSupport: workspaceSettings.caseSensitiveFileSupport, + caseSensitiveFileSupport: workspaceSettings.isCaseSensitiveFileSupportEnabled, resetDatabase: resetDatabase, edgeMessagesDirectory: path.join(util.getExtensionFilePath("bin"), "messages", getLocaleId()), localizedStrings: localizedStrings, @@ -1635,7 +1630,7 @@ export class DefaultClient implements Client { } const settings: CppSettings = new CppSettings(); if (changedSettings.enhancedColorization) { - if (settings.enhancedColorization && semanticTokensLegend) { + if (settings.isEnhancedColorizationEnabled && semanticTokensLegend) { this.semanticTokensProvider = new SemanticTokensProvider(); this.semanticTokensProviderDisposable = vscode.languages.registerDocumentSemanticTokensProvider(util.documentSelector, this.semanticTokensProvider, semanticTokensLegend); } else if (this.semanticTokensProviderDisposable) { @@ -2101,7 +2096,7 @@ export class DefaultClient implements Client { result = "timeout"; if (!requestFile) { const settings: CppSettings = new CppSettings(this.RootUri); - if (settings.configurationWarnings && !this.isExternalHeader(docUri) && !vscode.debug.activeDebugSession) { + if (settings.isConfigurationWarningsEnabled && !this.isExternalHeader(docUri) && !vscode.debug.activeDebugSession) { const dismiss: string = localize("dismiss.button", "Dismiss"); const disable: string = localize("disable.warnings.button", "Disable Warnings"); const configName: string | undefined = this.configuration.CurrentConfiguration?.name; @@ -2171,7 +2166,7 @@ export class DefaultClient implements Client { public getVcpkgEnabled(): Promise { const cppSettings: CppSettings = new CppSettings(this.RootUri); - return Promise.resolve(!!cppSettings.vcpkgEnabled); + return Promise.resolve(cppSettings.vcpkgEnabled); } public async getKnownCompilers(): Promise { @@ -2731,7 +2726,7 @@ export class DefaultClient implements Client { showConfigStatus = ask.Value; } - const compilerPathNotSet: boolean = settings.defaultCompilerPath === undefined && this.configuration.CurrentConfiguration?.compilerPath === undefined && this.configuration.CurrentConfiguration?.compilerPathInCppPropertiesJson === undefined; + const compilerPathNotSet: boolean = settings.defaultCompilerPath === null && this.configuration.CurrentConfiguration?.compilerPath === undefined && this.configuration.CurrentConfiguration?.compilerPathInCppPropertiesJson === undefined; const configurationNotSet: boolean = configProviderNotSetAndNoCache && compileCommandsNotSet && compilerPathNotSet; showConfigStatus = showConfigStatus || (configurationNotSet && @@ -3476,8 +3471,7 @@ export class DefaultClient implements Client { } let formatParams: FormatParams | undefined; - if (cppSettings.useVcFormat(editor.document)) - { + if (cppSettings.useVcFormat(editor.document)) { const editorConfigSettings: any = getEditorConfigSettings(uri.fsPath); formatParams = { editorConfigSettings: editorConfigSettings, diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 02a76906f3..6411895642 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -951,7 +951,7 @@ export class CppProperties { // compile_commands.json already specifies a compiler. compilerPath overrides the compile_commands.json compiler so // don't set a default when compileCommands is in use. configuration.compilerPath = this.updateConfigurationString(configuration.compilerPath, settings.defaultCompilerPath, env, true); - configuration.compilerPathIsExplicit = configuration.compilerPathIsExplicit || settings.defaultCompilerPath !== undefined; + configuration.compilerPathIsExplicit = configuration.compilerPathIsExplicit || settings.defaultCompilerPath !== null; if (configuration.compilerPath === undefined) { if (!!this.defaultCompilerPath && this.trustedCompilerFound) { // If no config value yet set for these, pick up values from the defaults, but don't consider them explicit. @@ -988,7 +988,7 @@ export class CppProperties { } else { // However, if compileCommands are used and compilerPath is explicitly set, it's still necessary to resolve variables in it. if (configuration.compilerPath === "${default}") { - configuration.compilerPath = settings.defaultCompilerPath; + configuration.compilerPath = settings.defaultCompilerPath ?? undefined; } if (configuration.compilerPath === null) { configuration.compilerPath = undefined; @@ -1041,8 +1041,8 @@ export class CppProperties { && !settings.defaultForcedInclude && !settings.defaultCompileCommands && !settings.defaultCompilerArgs - && settings.defaultCStandard === "" - && settings.defaultCppStandard === "" + && !settings.defaultCStandard + && !settings.defaultCppStandard && settings.defaultIntelliSenseMode === "" && !settings.defaultConfigurationProvider; @@ -1640,15 +1640,15 @@ export class CppProperties { } // Validate paths (directories) - errors.includePath = this.validatePath(config.includePath, {globPaths: true}); + errors.includePath = this.validatePath(config.includePath, { globPaths: true }); errors.macFrameworkPath = this.validatePath(config.macFrameworkPath); errors.browsePath = this.validatePath(config.browse ? config.browse.path : undefined); // Validate files - errors.forcedInclude = this.validatePath(config.forcedInclude, {isDirectory: false, assumeRelative: false}); - errors.compileCommands = this.validatePath(config.compileCommands, {isDirectory: false}); - errors.dotConfig = this.validatePath(config.dotConfig, {isDirectory: false}); - errors.databaseFilename = this.validatePath(config.browse ? config.browse.databaseFilename : undefined, {isDirectory: false}); + errors.forcedInclude = this.validatePath(config.forcedInclude, { isDirectory: false, assumeRelative: false }); + errors.compileCommands = this.validatePath(config.compileCommands, { isDirectory: false }); + errors.dotConfig = this.validatePath(config.dotConfig, { isDirectory: false }); + errors.databaseFilename = this.validatePath(config.browse ? config.browse.databaseFilename : undefined, { isDirectory: false }); // Validate intelliSenseMode if (isWindows) { @@ -1661,7 +1661,7 @@ export class CppProperties { return errors; } - private validatePath(input: string | string[] | undefined, {isDirectory = true, assumeRelative = true, globPaths = false} = {}): string | undefined { + private validatePath(input: string | string[] | undefined, { isDirectory = true, assumeRelative = true, globPaths = false } = {}): string | undefined { if (!input) { return undefined; } @@ -1877,8 +1877,8 @@ export class CppProperties { // Check for path-related squiggles. const paths: string[] = []; let compilerPath: string | undefined; - for (const pathArray of [ currentConfiguration.browse ? currentConfiguration.browse.path : undefined, - currentConfiguration.includePath, currentConfiguration.macFrameworkPath ]) { + for (const pathArray of [currentConfiguration.browse ? currentConfiguration.browse.path : undefined, + currentConfiguration.includePath, currentConfiguration.macFrameworkPath]) { if (pathArray) { for (const curPath of pathArray) { paths.push(`${curPath}`); @@ -2075,7 +2075,7 @@ export class CppProperties { let message: string = ""; if (!pathExists) { if (curOffset >= forcedIncludeStart && curOffset <= forcedeIncludeEnd - && !path.isAbsolute(expandedPaths[0])) { + && !path.isAbsolute(expandedPaths[0])) { continue; // Skip the error, because it could be resolved recursively. } let badPath = ""; @@ -2089,7 +2089,7 @@ export class CppProperties { } else { // Check for file versus path mismatches. if ((curOffset >= forcedIncludeStart && curOffset <= forcedeIncludeEnd) || - (curOffset >= compileCommandsStart && curOffset <= compileCommandsEnd)) { + (curOffset >= compileCommandsStart && curOffset <= compileCommandsEnd)) { if (expandedPaths.length > 1) { message = localize("multiple.paths.not.allowed", "Multiple paths are not allowed."); newSquiggleMetrics.MultiplePathsNotAllowed++; diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index d7afd71d2a..de08d6e436 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -414,7 +414,7 @@ class CustomBuildTaskTerminal implements Pseudoterminal { } }); if (this.options === undefined) { - this.options = { }; + this.options = {}; } if (this.options.cwd) { this.options.cwd = util.resolveVariables(this.options.cwd.toString()); diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 76e5642d02..5c6bc11240 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1319,7 +1319,7 @@ export function UpdateInsidersAccess(): void { const insidersMitigationDone: PersistentState = new PersistentState("CPP.insidersMitigationDone", false); if (!insidersMitigationDone.Value) { if (vscode.workspace.getConfiguration("extensions", null).get("autoUpdate")) { - if (settings.getWithUndefinedDefault("updateChannel") === undefined) { + if (settings.getStringWithUndefinedDefault("updateChannel") === undefined) { installPrerelease = true; } } diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index a66a97c50c..95afd2c480 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -14,8 +14,9 @@ import { quote } from 'shell-quote'; import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; import * as which from 'which'; -import { getCachedClangFormatPath, getCachedClangTidyPath, getExtensionFilePath, setCachedClangFormatPath, setCachedClangTidyPath } from '../common'; +import { getCachedClangFormatPath, getCachedClangTidyPath, getExtensionFilePath, getRawSetting, isArray, isArrayOfString, isBoolean, isNumber, isObject, isString, isValidMapping, setCachedClangFormatPath, setCachedClangTidyPath } from '../common'; import { isWindows } from '../constants'; +import * as telemetry from '../telemetry'; import { DefaultClient, cachedEditorConfigLookups, cachedEditorConfigSettings, hasTrustedCompilerPaths } from './client'; import { clients } from './extension'; import { CommentPattern } from './languageConfig'; @@ -25,139 +26,141 @@ nls.config({ messageFormat: nls.MessageFormat.bundle, bundleFormat: nls.BundleFo const localize: nls.LocalizeFunc = nls.loadMessageBundle(); export interface Excludes { - [key: string]: boolean | { when: string }; + [key: string]: (boolean | { when: string }); } +export interface Associations { + [key: string]: string; +} + +// Settings that can be undefined have default values assigned in the native code or are meant to return undefined. export interface WorkspaceFolderSettingsParams { uri: string | undefined; - intelliSenseEngine: string | undefined; - intelliSenseEngineFallback: boolean | undefined; - autocomplete: string | undefined; - autocompleteAddParentheses: boolean | undefined; - errorSquiggles: string | undefined; - exclusionPolicy: string | undefined; - preferredPathSeparator: string | undefined; - intelliSenseCachePath: string | undefined; - intelliSenseCacheSize: number | undefined; - intelliSenseMemoryLimit: number | undefined; - dimInactiveRegions: boolean | undefined; - suggestSnippets: boolean | undefined; - legacyCompilerArgsBehavior: boolean | undefined; + intelliSenseEngine: string; + intelliSenseEngineFallback: boolean; + autocomplete: string; + autocompleteAddParentheses: boolean; + errorSquiggles: string; + exclusionPolicy: string; + preferredPathSeparator: string; + intelliSenseCachePath: string; + intelliSenseCacheSize: number; + intelliSenseMemoryLimit: number; + dimInactiveRegions: boolean; + suggestSnippets: boolean; + legacyCompilerArgsBehavior: boolean; defaultSystemIncludePath: string[] | undefined; - cppFilesExclude: Excludes | undefined; - clangFormatPath: string | undefined; + cppFilesExclude: Excludes; + clangFormatPath: string; clangFormatStyle: string | undefined; clangFormatFallbackStyle: string | undefined; - clangFormatSortIncludes: boolean | undefined | null; - codeAnalysisRunAutomatically: boolean | undefined; - codeAnalysisExclude: Excludes | undefined; - clangTidyEnabled: boolean | undefined; - clangTidyPath: string | undefined; + clangFormatSortIncludes: boolean | null; + codeAnalysisRunAutomatically: boolean; + codeAnalysisExclude: Excludes; + clangTidyEnabled: boolean; + clangTidyPath: string; clangTidyConfig: string | undefined; clangTidyFallbackConfig: string | undefined; - clangTidyHeaderFilter: string | undefined | null; - clangTidyArgs: string[] | undefined; - clangTidyUseBuildPath: boolean | undefined; - clangTidyFixWarnings: boolean | undefined; - clangTidyFixErrors: boolean | undefined; - clangTidyFixNotes: boolean | undefined; + clangTidyHeaderFilter: string | null; + clangTidyArgs: string[]; + clangTidyUseBuildPath: boolean; clangTidyChecksEnabled: string[] | undefined; clangTidyChecksDisabled: string[] | undefined; - hover: string | undefined; - markdownInComments: string | undefined; - vcFormatIndentBraces: boolean | undefined; - vcFormatIndentMultiLineRelativeTo: string | undefined; - vcFormatIndentWithinParentheses: string | undefined; + hover: string; + markdownInComments: string; + vcFormatIndentBraces: boolean; + vcFormatIndentMultiLineRelativeTo: string; + vcFormatIndentWithinParentheses: string; vcFormatIndentPreserveWithinParentheses: boolean; - vcFormatIndentCaseLabels: boolean | undefined; - vcFormatIndentCaseContents: boolean | undefined; - vcFormatIndentCaseContentsWhenBlock: boolean | undefined; - vcFormatIndentLambdaBracesWhenParameter: boolean | undefined; - vcFormatIndentGotoLabels: string | undefined; - vcFormatIndentPreprocessor: string | undefined; - vcFormatIndentAccesSpecifiers: boolean | undefined; - vcFormatIndentNamespaceContents: boolean | undefined; - vcFormatIndentPreserveComments: boolean | undefined; - vcFormatNewLineScopeBracesOnSeparateLines: boolean | undefined; - vcFormatNewLineBeforeOpenBraceNamespace: string | undefined; - vcFormatNewLineBeforeOpenBraceType: string | undefined; - vcFormatNewLineBeforeOpenBraceFunction: string | undefined; - vcFormatNewLineBeforeOpenBraceBlock: string | undefined; - vcFormatNewLineBeforeOpenBraceLambda: string | undefined; - vcFormatNewLineBeforeCatch: boolean | undefined; - vcFormatNewLineBeforeElse: boolean | undefined; - vcFormatNewLineBeforeWhileInDoWhile: boolean | undefined; - vcFormatNewLineCloseBraceSameLineEmptyType: boolean | undefined; - vcFormatNewLineCloseBraceSameLineEmptyFunction: boolean | undefined; - vcFormatSpaceWithinParameterListParentheses: boolean | undefined; - vcFormatSpaceBetweenEmptyParameterListParentheses: boolean | undefined; - vcFormatSpaceAfterKeywordsInControlFlowStatements: boolean | undefined; - vcFormatSpaceWithinControlFlowStatementParentheses: boolean | undefined; - vcFormatSpaceBeforeLambdaOpenParenthesis: boolean | undefined; - vcFormatSpaceWithinCastParentheses: boolean | undefined; - vcFormatSpaceAfterCastCloseParenthesis: boolean | undefined; - vcFormatSpaceWithinExpressionParentheses: boolean | undefined; - vcFormatSpaceBeforeBlockOpenBrace: boolean | undefined; - vcFormatSpaceBetweenEmptyBraces: boolean | undefined; - vcFormatSpaceBeforeInitializerListOpenBrace: boolean | undefined; - vcFormatSpaceWithinInitializerListBraces: boolean | undefined; - vcFormatSpacePreserveInInitializerList: boolean | undefined; - vcFormatSpaceBeforeOpenSquareBracket: boolean | undefined; - vcFormatSpaceWithinSquareBrackets: boolean | undefined; - vcFormatSpaceBeforeEmptySquareBrackets: boolean | undefined; - vcFormatSpaceBetweenEmptySquareBrackets: boolean | undefined; - vcFormatSpaceGroupSquareBrackets: boolean | undefined; - vcFormatSpaceWithinLambdaBrackets: boolean | undefined; - vcFormatSpaceBetweenEmptyLambdaBrackets: boolean | undefined; - vcFormatSpaceBeforeComma: boolean | undefined; - vcFormatSpaceAfterComma: boolean | undefined; - vcFormatSpaceRemoveAroundMemberOperators: boolean | undefined; - vcFormatSpaceBeforeInheritanceColon: boolean | undefined; - vcFormatSpaceBeforeConstructorColon: boolean | undefined; - vcFormatSpaceRemoveBeforeSemicolon: boolean | undefined; - vcFormatSpaceInsertAfterSemicolon: boolean | undefined; - vcFormatSpaceRemoveAroundUnaryOperator: boolean | undefined; - vcFormatSpaceBeforeFunctionOpenParenthesis: string | undefined; - vcFormatSpaceAroundBinaryOperator: string | undefined; - vcFormatSpaceAroundAssignmentOperator: string | undefined; - vcFormatSpacePointerReferenceAlignment: string | undefined; - vcFormatSpaceAroundTernaryOperator: string | undefined; - vcFormatWrapPreserveBlocks: string | undefined; - doxygenGenerateOnType: boolean | undefined; - doxygenGeneratedStyle: string | undefined; - doxygenSectionTags: string[] | undefined; - filesExclude: Excludes | undefined; - filesAutoSaveAfterDelay: boolean | undefined; - filesEncoding: string | undefined; - searchExclude: Excludes | undefined; - editorAutoClosingBrackets: string | undefined; - editorInlayHintsEnabled: boolean | undefined; - editorParameterHintsEnabled: boolean | undefined; - refactoringIncludeHeader: string | undefined; + vcFormatIndentCaseLabels: boolean; + vcFormatIndentCaseContents: boolean; + vcFormatIndentCaseContentsWhenBlock: boolean; + vcFormatIndentLambdaBracesWhenParameter: boolean; + vcFormatIndentGotoLabels: string; + vcFormatIndentPreprocessor: string; + vcFormatIndentAccesSpecifiers: boolean; + vcFormatIndentNamespaceContents: boolean; + vcFormatIndentPreserveComments: boolean; + vcFormatNewLineScopeBracesOnSeparateLines: boolean; + vcFormatNewLineBeforeOpenBraceNamespace: string; + vcFormatNewLineBeforeOpenBraceType: string; + vcFormatNewLineBeforeOpenBraceFunction: string; + vcFormatNewLineBeforeOpenBraceBlock: string; + vcFormatNewLineBeforeOpenBraceLambda: string; + vcFormatNewLineBeforeCatch: boolean; + vcFormatNewLineBeforeElse: boolean; + vcFormatNewLineBeforeWhileInDoWhile: boolean; + vcFormatNewLineCloseBraceSameLineEmptyType: boolean; + vcFormatNewLineCloseBraceSameLineEmptyFunction: boolean; + vcFormatSpaceWithinParameterListParentheses: boolean; + vcFormatSpaceBetweenEmptyParameterListParentheses: boolean; + vcFormatSpaceAfterKeywordsInControlFlowStatements: boolean; + vcFormatSpaceWithinControlFlowStatementParentheses: boolean; + vcFormatSpaceBeforeLambdaOpenParenthesis: boolean; + vcFormatSpaceWithinCastParentheses: boolean; + vcFormatSpaceAfterCastCloseParenthesis: boolean; + vcFormatSpaceWithinExpressionParentheses: boolean; + vcFormatSpaceBeforeBlockOpenBrace: boolean; + vcFormatSpaceBetweenEmptyBraces: boolean; + vcFormatSpaceBeforeInitializerListOpenBrace: boolean; + vcFormatSpaceWithinInitializerListBraces: boolean; + vcFormatSpacePreserveInInitializerList: boolean; + vcFormatSpaceBeforeOpenSquareBracket: boolean; + vcFormatSpaceWithinSquareBrackets: boolean; + vcFormatSpaceBeforeEmptySquareBrackets: boolean; + vcFormatSpaceBetweenEmptySquareBrackets: boolean; + vcFormatSpaceGroupSquareBrackets: boolean; + vcFormatSpaceWithinLambdaBrackets: boolean; + vcFormatSpaceBetweenEmptyLambdaBrackets: boolean; + vcFormatSpaceBeforeComma: boolean; + vcFormatSpaceAfterComma: boolean; + vcFormatSpaceRemoveAroundMemberOperators: boolean; + vcFormatSpaceBeforeInheritanceColon: boolean; + vcFormatSpaceBeforeConstructorColon: boolean; + vcFormatSpaceRemoveBeforeSemicolon: boolean; + vcFormatSpaceInsertAfterSemicolon: boolean; + vcFormatSpaceRemoveAroundUnaryOperator: boolean; + vcFormatSpaceBeforeFunctionOpenParenthesis: string; + vcFormatSpaceAroundBinaryOperator: string; + vcFormatSpaceAroundAssignmentOperator: string; + vcFormatSpacePointerReferenceAlignment: string; + vcFormatSpaceAroundTernaryOperator: string; + vcFormatWrapPreserveBlocks: string; + doxygenGenerateOnType: boolean; + doxygenGeneratedStyle: string; + doxygenSectionTags: string[]; + filesExclude: Excludes; + filesAutoSaveAfterDelay: boolean; + filesEncoding: string; + searchExclude: Excludes; + editorAutoClosingBrackets: string; + editorInlayHintsEnabled: boolean; + editorParameterHintsEnabled: boolean; + refactoringIncludeHeader: string; } export interface SettingsParams { - filesAssociations: { [key: string]: string } | undefined; - workspaceFallbackEncoding: string | undefined; - maxConcurrentThreads: number | null | undefined; - maxCachedProcesses: number | null | undefined; - maxMemory: number | null | undefined; - maxSymbolSearchResults: number | undefined; - loggingLevel: string | undefined; - workspaceParsingPriority: string | undefined; - workspaceSymbols: string | undefined; - simplifyStructuredComments: boolean | undefined; - intelliSenseUpdateDelay: number | undefined; - experimentalFeatures: boolean | undefined; - enhancedColorization: boolean | undefined; - intellisenseMaxCachedProcesses: number | null | undefined; - intellisenseMaxMemory: number | null | undefined; - referencesMaxConcurrentThreads: number | null | undefined; - referencesMaxCachedProcesses: number | null | undefined; - referencesMaxMemory: number | null | undefined; - codeAnalysisMaxConcurrentThreads: number | null | undefined; - codeAnalysisMaxMemory: number | null | undefined; - codeAnalysisUpdateDelay: number | undefined; + filesAssociations: Associations; + workspaceFallbackEncoding: string; + maxConcurrentThreads: number | null; + maxCachedProcesses: number | null; + maxMemory: number | null; + maxSymbolSearchResults: number; + loggingLevel: string; + workspaceParsingPriority: string; + workspaceSymbols: string; + simplifyStructuredComments: boolean; + intelliSenseUpdateDelay: number; + experimentalFeatures: boolean; + enhancedColorization: boolean; + intellisenseMaxCachedProcesses: number | null; + intellisenseMaxMemory: number | null; + referencesMaxConcurrentThreads: number | null; + referencesMaxCachedProcesses: number | null; + referencesMaxMemory: number | null; + codeAnalysisMaxConcurrentThreads: number | null; + codeAnalysisMaxMemory: number | null; + codeAnalysisUpdateDelay: number; workspaceFolderSettings: WorkspaceFolderSettingsParams[]; } @@ -165,6 +168,15 @@ function getTarget(): vscode.ConfigurationTarget { return vscode.workspace.workspaceFolders ? vscode.ConfigurationTarget.WorkspaceFolder : vscode.ConfigurationTarget.Global; } +function isValidWhenObject(obj: unknown): obj is { when: string } { + return ( + typeof obj === 'object' && + obj !== null && + 'when' in obj && + typeof (obj as { when: unknown }).when === 'string' + ); +} + class Settings { private readonly settings: vscode.WorkspaceConfiguration; @@ -178,43 +190,45 @@ class Settings { protected get Section(): vscode.WorkspaceConfiguration { return this.settings; } - protected getWithFallback(section: string, deprecatedSection: string): T { - const info: any = this.settings.inspect(section); - if (info.workspaceFolderValue !== undefined) { + // If the setting has an undefined default, look for the workspaceFolder, workspace and global values as well. + public getArrayOfStringsWithUndefinedDefault(section: string): string[] | undefined; + public getArrayOfStringsWithUndefinedDefault(section: string, allowNull: boolean): string[] | undefined | null; + public getArrayOfStringsWithUndefinedDefault(section: string, allowNull: boolean = false): string[] | undefined | null { + const info: any = this.settings.inspect(section); + + if ((allowNull && info.workspaceFolderValue === null) || isArrayOfString(info.workspaceFolderValue)) { return info.workspaceFolderValue; - } else if (info.workspaceValue !== undefined) { - return info.workspaceValue; - } else if (info.globalValue !== undefined) { - return info.globalValue; } - const value: T | undefined = this.settings.get(deprecatedSection); - if (value !== undefined) { - return value; + + if ((allowNull && info.workspaceValue === null) || isArrayOfString(info.workspaceValue)) { + return info.workspaceValue; } - return info.defaultValue; - } - protected getWithNullAsUndefined(section: string): T | undefined { - const result: T | undefined | null = this.settings.get(section); - if (result === null) { - return undefined; + if ((allowNull && info.globalValue === null) || isArrayOfString(info.globalValue)) { + return info.globalValue; } - return result; + return undefined; } - public getWithUndefinedDefault(section: string): T | undefined { - const info: any = this.settings.inspect(section); - if (info.workspaceFolderValue !== undefined) { + public getStringWithUndefinedDefault(section: string): string | undefined { + const info: any = this.settings.inspect(section); + + if (isString(info.workspaceFolderValue)) { return info.workspaceFolderValue; - } else if (info.workspaceValue !== undefined) { + } + + if (isString(info.workspaceValue)) { return info.workspaceValue; - } else if (info.globalValue !== undefined) { + } + + if (isString(info.globalValue)) { return info.globalValue; } return undefined; } } +// If a setting is undefined, a blank string, or null, return undefined instead. function changeBlankStringToUndefined(input: string | undefined): string | undefined { // Although null is not a valid type, user could enter a null anyway. return (input === undefined || input === null || input.trim() === "") ? undefined : input; @@ -258,7 +272,7 @@ export class CppSettings extends Settings { } private getClangPath(isFormat: boolean): string | undefined { - let path: string | undefined = changeBlankStringToUndefined(super.Section.get(isFormat ? "clang_format_path" : "codeAnalysis.clangTidy.path")); + let path: string | undefined = changeBlankStringToUndefined(this.getAsStringOrUndefined(isFormat ? "clang_format_path" : "codeAnalysis.clangTidy.path")); if (!path) { const cachedClangPath: string | undefined = isFormat ? getCachedClangFormatPath() : getCachedClangTidyPath(); if (cachedClangPath !== undefined) { @@ -312,36 +326,33 @@ export class CppSettings extends Settings { return path; } - public get maxConcurrentThreads(): number | undefined | null { return super.Section.get("maxConcurrentThreads"); } - public get maxMemory(): number | undefined | null { return super.Section.get("maxMemory"); } - public get maxSymbolSearchResults(): number | undefined { return super.Section.get("maxSymbolSearchResults"); } - public get maxCachedProcesses(): number | undefined | null { return super.Section.get("maxCachedProcesses"); } - public get intelliSenseMaxCachedProcesses(): number | undefined | null { return super.Section.get("intelliSense.maxCachedProcesses"); } - public get intelliSenseMaxMemory(): number | undefined | null { return super.Section.get("intelliSense.maxMemory"); } - public get referencesMaxConcurrentThreads(): number | undefined | null { return super.Section.get("references.maxConcurrentThreads"); } - public get referencesMaxCachedProcesses(): number | undefined | null { return super.Section.get("references.maxCachedProcesses"); } - public get referencesMaxMemory(): number | undefined | null { return super.Section.get("references.maxMemory"); } - public get codeAnalysisMaxConcurrentThreads(): number | undefined | null { return super.Section.get("codeAnalysis.maxConcurrentThreads"); } - public get codeAnalysisMaxMemory(): number | undefined | null { return super.Section.get("codeAnalysis.maxMemory"); } - public get codeAnalysisUpdateDelay(): number | undefined { return super.Section.get("codeAnalysis.updateDelay"); } - public get codeAnalysisExclude(): vscode.WorkspaceConfiguration | undefined { return super.Section.get("codeAnalysis.exclude"); } - public get codeAnalysisRunAutomatically(): boolean | undefined { return super.Section.get("codeAnalysis.runAutomatically"); } - public get codeAnalysisRunOnBuild(): boolean | undefined { return false; } // super.Section.get("codeAnalysis.runOnBuild"); } - public get clangTidyEnabled(): boolean | undefined { return super.Section.get("codeAnalysis.clangTidy.enabled"); } - public get clangTidyConfig(): string | undefined { return changeBlankStringToUndefined(super.Section.get("codeAnalysis.clangTidy.config")); } - public get clangTidyFallbackConfig(): string | undefined { return changeBlankStringToUndefined(super.Section.get("codeAnalysis.clangTidy.fallbackConfig")); } - public get clangTidyFixWarnings(): boolean | undefined { return false; } // super.Section.get("codeAnalysis.clangTidy.fix.warnings"); } - public get clangTidyFixErrors(): boolean | undefined { return false; } // super.Section.get("codeAnalysis.clangTidy.fix.errors"); } - public get clangTidyFixNotes(): boolean | undefined { return false; } // super.Section.get("codeAnalysis.clangTidy.fix.notes"); } - public get clangTidyHeaderFilter(): string | undefined | null { return super.Section.get("codeAnalysis.clangTidy.headerFilter"); } - public get clangTidyArgs(): string[] | undefined { return super.Section.get("codeAnalysis.clangTidy.args"); } - public get clangTidyUseBuildPath(): boolean | undefined { return super.Section.get("codeAnalysis.clangTidy.useBuildPath"); } - public get clangTidyChecksEnabled(): string[] | undefined { return super.Section.get("codeAnalysis.clangTidy.checks.enabled"); } - public get clangTidyChecksDisabled(): string[] | undefined { return super.Section.get("codeAnalysis.clangTidy.checks.disabled"); } - public get clangTidyCodeActionShowDisable(): boolean | undefined { return super.Section.get("codeAnalysis.clangTidy.codeAction.showDisable"); } - public get clangTidyCodeActionShowClear(): string { return super.Section.get("codeAnalysis.clangTidy.codeAction.showClear") ?? "AllAndAllType"; } - public get clangTidyCodeActionShowDocumentation(): boolean | undefined { return super.Section.get("codeAnalysis.clangTidy.codeAction.showDocumentation"); } - public get clangTidyCodeActionFormatFixes(): boolean { return super.Section.get("codeAnalysis.clangTidy.codeAction.formatFixes") ?? true; } + public get maxConcurrentThreads(): number | null { return this.getAsNumber("maxConcurrentThreads", true); } + public get maxMemory(): number | null { return this.getAsNumber("maxMemory", true); } + public get maxSymbolSearchResults(): number { return this.getAsNumber("maxSymbolSearchResults"); } + public get maxCachedProcesses(): number | null { return this.getAsNumber("maxCachedProcesses", true); } + public get intelliSenseMaxCachedProcesses(): number | null { return this.getAsNumber("intelliSense.maxCachedProcesses", true); } + public get intelliSenseMaxMemory(): number | null { return this.getAsNumber("intelliSense.maxMemory", true); } + public get referencesMaxConcurrentThreads(): number | null { return this.getAsNumber("references.maxConcurrentThreads", true); } + public get referencesMaxCachedProcesses(): number | null { return this.getAsNumber("references.maxCachedProcesses", true); } + public get referencesMaxMemory(): number | null { return this.getAsNumber("references.maxMemory", true); } + public get codeAnalysisMaxConcurrentThreads(): number | null { return this.getAsNumber("codeAnalysis.maxConcurrentThreads", true); } + public get codeAnalysisMaxMemory(): number | null { return this.getAsNumber("codeAnalysis.maxMemory", true); } + public get codeAnalysisUpdateDelay(): number { return this.getAsNumber("codeAnalysis.updateDelay"); } + public get codeAnalysisExclude(): Excludes { return this.getAsExcludes("codeAnalysis.exclude"); } + public get codeAnalysisRunAutomatically(): boolean { return this.getAsBoolean("codeAnalysis.runAutomatically"); } + public get codeAnalysisRunOnBuild(): boolean | undefined { return false; } // return this.getAsBoolean("codeAnalysis.runOnBuild"); + public get clangTidyEnabled(): boolean { return this.getAsBoolean("codeAnalysis.clangTidy.enabled"); } + public get clangTidyConfig(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("codeAnalysis.clangTidy.config")); } + public get clangTidyFallbackConfig(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("codeAnalysis.clangTidy.fallbackConfig")); } + public get clangTidyHeaderFilter(): string | null { return this.getAsString("codeAnalysis.clangTidy.headerFilter", true); } + public get clangTidyArgs(): string[] | undefined { return this.getAsArrayOfStringsOrUndefined("codeAnalysis.clangTidy.args"); } + public get clangTidyUseBuildPath(): boolean { return this.getAsBoolean("codeAnalysis.clangTidy.useBuildPath"); } + public get clangTidyChecksEnabled(): string[] | undefined { return this.getAsArrayOfStringsOrUndefined("codeAnalysis.clangTidy.checks.enabled", true); } + public get clangTidyChecksDisabled(): string[] | undefined { return this.getAsArrayOfStringsOrUndefined("codeAnalysis.clangTidy.checks.disabled", true); } + public get clangTidyCodeActionShowDisable(): boolean { return this.getAsBoolean("codeAnalysis.clangTidy.codeAction.showDisable"); } + public get clangTidyCodeActionShowClear(): string { return this.getAsString("codeAnalysis.clangTidy.codeAction.showClear"); } + public get clangTidyCodeActionShowDocumentation(): boolean { return this.getAsBoolean("codeAnalysis.clangTidy.codeAction.showDocumentation"); } + public get clangTidyCodeActionFormatFixes(): boolean { return this.getAsBoolean("codeAnalysis.clangTidy.codeAction.formatFixes"); } public addClangTidyChecksDisabled(value: string): void { const checks: string[] | undefined = this.clangTidyChecksDisabled; if (checks === undefined) { @@ -350,51 +361,58 @@ export class CppSettings extends Settings { checks.push(value); void super.Section.update("codeAnalysis.clangTidy.checks.disabled", checks, vscode.ConfigurationTarget.WorkspaceFolder); } - public get clangFormatStyle(): string | undefined { return changeBlankStringToUndefined(super.Section.get("clang_format_style")); } - public get clangFormatFallbackStyle(): string | undefined { return changeBlankStringToUndefined(super.Section.get("clang_format_fallbackStyle")); } - public get clangFormatSortIncludes(): boolean | undefined | null { return super.Section.get("clang_format_sortIncludes"); } - public get experimentalFeatures(): boolean | undefined { return super.Section.get("experimentalFeatures")?.toLowerCase() === "enabled"; } - public get suggestSnippets(): boolean | undefined { return super.Section.get("suggestSnippets"); } - public get intelliSenseEngine(): string | undefined { return super.Section.get("intelliSenseEngine")?.toLowerCase(); } - public get intelliSenseEngineFallback(): boolean | undefined { return super.Section.get("intelliSenseEngineFallback")?.toLowerCase() === "enabled"; } - public get intelliSenseCachePath(): string | undefined { return changeBlankStringToUndefined(super.Section.get("intelliSenseCachePath")); } - public get intelliSenseCacheSize(): number | undefined { return super.Section.get("intelliSenseCacheSize"); } - public get intelliSenseMemoryLimit(): number | undefined { return super.Section.get("intelliSenseMemoryLimit"); } - public get intelliSenseUpdateDelay(): number | undefined { return super.Section.get("intelliSenseUpdateDelay"); } - public get errorSquiggles(): string | undefined { return super.Section.get("errorSquiggles")?.toLowerCase(); } - public get inactiveRegionOpacity(): number | undefined { return super.Section.get("inactiveRegionOpacity"); } - public get inactiveRegionForegroundColor(): string | undefined { return changeBlankStringToUndefined(super.Section.get("inactiveRegionForegroundColor")); } - public get inactiveRegionBackgroundColor(): string | undefined { return changeBlankStringToUndefined(super.Section.get("inactiveRegionBackgroundColor")); } - public get autocomplete(): string | undefined { return super.Section.get("autocomplete"); } - public get autocompleteAddParentheses(): boolean | undefined { return super.Section.get("autocompleteAddParentheses"); } - public get loggingLevel(): string | undefined { return super.Section.get("loggingLevel"); } - public get autoAddFileAssociations(): boolean | undefined { return super.Section.get("autoAddFileAssociations"); } - public get workspaceParsingPriority(): string | undefined { return super.Section.get("workspaceParsingPriority"); } - public get workspaceSymbols(): string | undefined { return super.Section.get("workspaceSymbols"); } - public get exclusionPolicy(): string | undefined { return super.Section.get("exclusionPolicy"); } - public get refactoringIncludeHeader(): string | undefined { return super.Section.get("refactoring.includeHeader"); } - public get simplifyStructuredComments(): boolean | undefined { return super.Section.get("simplifyStructuredComments"); } - public get doxygenGeneratedCommentStyle(): string | undefined { return super.Section.get("doxygen.generatedStyle"); } - public get doxygenGenerateOnType(): boolean | undefined { return super.Section.get("doxygen.generateOnType"); } - // eslint-disable-next-line no-extra-parens - public get commentContinuationPatterns(): (string | CommentPattern)[] | undefined { return super.Section.get<(string | CommentPattern)[]>("commentContinuationPatterns"); } - public get configurationWarnings(): boolean | undefined { return super.Section.get("configurationWarnings")?.toLowerCase() !== "disabled"; } - public get preferredPathSeparator(): string | undefined { return super.Section.get("preferredPathSeparator"); } - public get updateChannel(): string | undefined { return super.Section.get("updateChannel"); } - public get vcpkgEnabled(): boolean | undefined { return super.Section.get("vcpkg.enabled"); } - public get addNodeAddonIncludePaths(): boolean | undefined { return super.Section.get("addNodeAddonIncludePaths"); } - public get renameRequiresIdentifier(): boolean | undefined { return super.Section.get("renameRequiresIdentifier"); } - public get filesExclude(): vscode.WorkspaceConfiguration | undefined { return super.Section.get("files.exclude"); } - public get defaultIncludePath(): string[] | undefined { return super.getWithUndefinedDefault("default.includePath"); } - public get defaultDefines(): string[] | undefined { return super.getWithUndefinedDefault("default.defines"); } - public get defaultDotconfig(): string | undefined { return changeBlankStringToUndefined(super.Section.get("default.dotConfig")); } - public get defaultMacFrameworkPath(): string[] | undefined { return super.getWithUndefinedDefault("default.macFrameworkPath"); } - public get defaultWindowsSdkVersion(): string | undefined { return changeBlankStringToUndefined(super.Section.get("default.windowsSdkVersion")); } - public get defaultCompileCommands(): string | undefined { return changeBlankStringToUndefined(super.Section.get("default.compileCommands")); } - public get defaultForcedInclude(): string[] | undefined { return super.getWithUndefinedDefault("default.forcedInclude"); } - public get defaultIntelliSenseMode(): string | undefined { return super.Section.get("default.intelliSenseMode"); } - public get defaultCompilerPath(): string | undefined { return super.Section.get("default.compilerPath") ?? undefined; } - public set defaultCompilerPath(value: string | undefined) { + public get clangFormatStyle(): string | undefined { return changeBlankStringToUndefined(this.getAsString("clang_format_style")); } + public get clangFormatFallbackStyle(): string | undefined { return changeBlankStringToUndefined(this.getAsString("clang_format_fallbackStyle")); } + public get clangFormatSortIncludes(): boolean | null { return this.getAsBoolean("clang_format_sortIncludes", true); } + public get experimentalFeatures(): boolean { return this.getAsString("experimentalFeatures").toLowerCase() === "enabled"; } + public get suggestSnippets(): boolean { return this.getAsBoolean("suggestSnippets"); } + public get intelliSenseEngine(): string { return this.getAsString("intelliSenseEngine"); } + public get intelliSenseEngineFallback(): boolean { return this.getAsString("intelliSenseEngineFallback").toLowerCase() === "enabled"; } + public get intelliSenseCachePath(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("intelliSenseCachePath")); } + public get intelliSenseCacheSize(): number { return this.getAsNumber("intelliSenseCacheSize"); } + public get intelliSenseMemoryLimit(): number { return this.getAsNumber("intelliSenseMemoryLimit"); } + public get intelliSenseUpdateDelay(): number { return this.getAsNumber("intelliSenseUpdateDelay"); } + public get errorSquiggles(): string { return this.getAsString("errorSquiggles"); } + public get inactiveRegionOpacity(): number { return this.getAsNumber("inactiveRegionOpacity"); } + public get inactiveRegionForegroundColor(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("inactiveRegionForegroundColor")); } + public get inactiveRegionBackgroundColor(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("inactiveRegionBackgroundColor")); } + public get autocomplete(): string { return this.getAsString("autocomplete"); } + public get autocompleteAddParentheses(): boolean { return this.getAsBoolean("autocompleteAddParentheses"); } + public get loggingLevel(): string { return this.getAsString("loggingLevel"); } + public get autoAddFileAssociations(): boolean { return this.getAsBoolean("autoAddFileAssociations"); } + public get workspaceParsingPriority(): string { return this.getAsString("workspaceParsingPriority"); } + public get workspaceSymbols(): string { return this.getAsString("workspaceSymbols"); } + public get exclusionPolicy(): string { return this.getAsString("exclusionPolicy"); } + public get refactoringIncludeHeader(): string { return this.getAsString("refactoring.includeHeader"); } + public get simplifyStructuredComments(): boolean { return this.getAsBoolean("simplifyStructuredComments"); } + public get doxygenGeneratedCommentStyle(): string { return this.getAsString("doxygen.generatedStyle"); } + public get doxygenGenerateOnType(): boolean { return this.getAsBoolean("doxygen.generateOnType"); } + public get commentContinuationPatterns(): (string | CommentPattern)[] { + const value: any = super.Section.get("commentContinuationPatterns"); + if (this.isArrayOfCommentContinuationPatterns(value)) { + return value; + } + const setting = getRawSetting("C_Cpp.commentContinuationPatterns", true); + return setting.default; + } + public get isConfigurationWarningsEnabled(): boolean { return this.getAsString("configurationWarnings").toLowerCase() === "enabled"; } + public get preferredPathSeparator(): string { return this.getAsString("preferredPathSeparator"); } + public get updateChannel(): string { return this.getAsString("updateChannel"); } + public get vcpkgEnabled(): boolean { return this.getAsBoolean("vcpkg.enabled"); } + public get addNodeAddonIncludePaths(): boolean { return this.getAsBoolean("addNodeAddonIncludePaths"); } + public get renameRequiresIdentifier(): boolean { return this.getAsBoolean("renameRequiresIdentifier"); } + public get filesExclude(): Excludes { return this.getAsExcludes("files.exclude"); } + public get defaultIncludePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.includePath"); } + public get defaultDefines(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.defines"); } + public get defaultDotconfig(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.dotConfig")); } + public get defaultMacFrameworkPath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.macFrameworkPath"); } + public get defaultWindowsSdkVersion(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.windowsSdkVersion")); } + public get defaultCompileCommands(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.compileCommands")); } + public get defaultForcedInclude(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.forcedInclude"); } + public get defaultIntelliSenseMode(): string | undefined { return this.getAsStringOrUndefined("default.intelliSenseMode"); } + public get defaultCompilerPath(): string | null { return this.getAsString("default.compilerPath", true); } + + public set defaultCompilerPath(value: string) { const defaultCompilerPathStr: string = "default.compilerPath"; const compilerPathInfo: any = this.Section.inspect(defaultCompilerPathStr); let target: vscode.ConfigurationTarget = vscode.ConfigurationTarget.Global; @@ -414,337 +432,303 @@ export class CppSettings extends Settings { }); } } - public get defaultCompilerArgs(): string[] | undefined { return super.getWithUndefinedDefault("default.compilerArgs"); } - public get defaultCStandard(): string | undefined { return super.Section.get("default.cStandard"); } - public get defaultCppStandard(): string | undefined { return super.Section.get("default.cppStandard"); } - public get defaultConfigurationProvider(): string | undefined { return changeBlankStringToUndefined(super.Section.get("default.configurationProvider")); } - public get defaultMergeConfigurations(): boolean | undefined { return super.Section.get("default.mergeConfigurations"); } - public get defaultBrowsePath(): string[] | undefined { return super.getWithUndefinedDefault("default.browse.path") ?? undefined; } - public get defaultDatabaseFilename(): string | undefined { return changeBlankStringToUndefined(super.Section.get("default.browse.databaseFilename")); } - public get defaultLimitSymbolsToIncludedHeaders(): boolean | undefined { return super.Section.get("default.browse.limitSymbolsToIncludedHeaders"); } - public get defaultSystemIncludePath(): string[] | undefined { return super.getWithUndefinedDefault("default.systemIncludePath"); } - public get defaultEnableConfigurationSquiggles(): boolean | undefined { return super.Section.get("default.enableConfigurationSquiggles"); } - public get defaultCustomConfigurationVariables(): { [key: string]: string } | undefined { return super.Section.get<{ [key: string]: string }>("default.customConfigurationVariables"); } - public get useBacktickCommandSubstitution(): boolean | undefined { return super.Section.get("debugger.useBacktickCommandSubstitution"); } - public get codeFolding(): boolean { return super.Section.get("codeFolding")?.toLowerCase() === "enabled"; } - public get caseSensitiveFileSupport(): boolean { return !isWindows || super.Section.get("caseSensitiveFileSupport") === "enabled"; } - public get doxygenSectionTags(): string[] | undefined { return super.Section.get("doxygen.sectionTags"); } - public get hover(): string | undefined { return super.Section.get("hover"); } - public get markdownInComments(): string | undefined { return super.Section.get("markdownInComments"); } - public get legacyCompilerArgsBehavior(): boolean | undefined { return super.Section.get("legacyCompilerArgsBehavior"); } - - public get inlayHintsAutoDeclarationTypes(): boolean { - return super.Section.get("inlayHints.autoDeclarationTypes.enabled") === true; - } - - public get inlayHintsAutoDeclarationTypesShowOnLeft(): boolean { - return super.Section.get("inlayHints.autoDeclarationTypes.showOnLeft") === true; - } - - public get inlayHintsParameterNames(): boolean { - return super.Section.get("inlayHints.parameterNames.enabled") === true; - } - - public get inlayHintsParameterNamesSuppressName(): boolean { - return super.Section.get("inlayHints.parameterNames.suppressWhenArgumentContainsName") === true; - } - - public get inlayHintsParameterNamesHideLeadingUnderscores(): boolean { - return super.Section.get("inlayHints.parameterNames.hideLeadingUnderscores") === true; - } - - public get inlayHintsReferenceOperator(): boolean { - return super.Section.get("inlayHints.referenceOperator.enabled") === true; - } - - public get inlayHintsReferenceOperatorShowSpace(): boolean { - return super.Section.get("inlayHints.referenceOperator.showSpace") === true; - } - - public get enhancedColorization(): boolean { - return super.Section.get("enhancedColorization")?.toLowerCase() !== "disabled" + public get defaultCompilerArgs(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.compilerArgs"); } + public get defaultCStandard(): string | undefined { return this.getAsStringOrUndefined("default.cStandard"); } + public get defaultCppStandard(): string | undefined { return this.getAsStringOrUndefined("default.cppStandard"); } + public get defaultConfigurationProvider(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.configurationProvider")); } + public get defaultMergeConfigurations(): boolean | undefined { return this.getAsBooleanOrUndefined("default.mergeConfigurations"); } + public get defaultBrowsePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.browse.path"); } + public get defaultDatabaseFilename(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.browse.databaseFilename")); } + public get defaultLimitSymbolsToIncludedHeaders(): boolean { return this.getAsBoolean("default.browse.limitSymbolsToIncludedHeaders"); } + public get defaultSystemIncludePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.systemIncludePath"); } + public get defaultEnableConfigurationSquiggles(): boolean { return this.getAsBoolean("default.enableConfigurationSquiggles"); } + public get defaultCustomConfigurationVariables(): Associations | undefined { return this.getAsAssociations("default.customConfigurationVariables", true) ?? undefined; } + public get useBacktickCommandSubstitution(): boolean { return this.getAsBoolean("debugger.useBacktickCommandSubstitution"); } + public get codeFolding(): boolean { return this.getAsString("codeFolding").toLowerCase() === "enabled"; } + public get isCaseSensitiveFileSupportEnabled(): boolean { return !isWindows || this.getAsString("caseSensitiveFileSupport").toLowerCase() === "enabled"; } + public get doxygenSectionTags(): string[] { return this.getAsArrayOfStrings("doxygen.sectionTags"); } + public get hover(): string { return this.getAsString("hover"); } + public get markdownInComments(): string { return this.getAsString("markdownInComments"); } + public get legacyCompilerArgsBehavior(): boolean { return this.getAsBoolean("legacyCompilerArgsBehavior"); } + public get inlayHintsAutoDeclarationTypes(): boolean { return this.getAsBoolean("inlayHints.autoDeclarationTypes.enabled"); } + public get inlayHintsAutoDeclarationTypesShowOnLeft(): boolean { return this.getAsBoolean("inlayHints.autoDeclarationTypes.showOnLeft"); } + public get inlayHintsParameterNames(): boolean { return this.getAsBoolean("inlayHints.parameterNames.enabled"); } + public get inlayHintsParameterNamesSuppressName(): boolean { return this.getAsBoolean("inlayHints.parameterNames.suppressWhenArgumentContainsName"); } + public get inlayHintsParameterNamesHideLeadingUnderscores(): boolean { return this.getAsBoolean("inlayHints.parameterNames.hideLeadingUnderscores"); } + public get inlayHintsReferenceOperator(): boolean { return this.getAsBoolean("inlayHints.referenceOperator.enabled"); } + public get inlayHintsReferenceOperatorShowSpace(): boolean { return this.getAsBoolean("inlayHints.referenceOperator.showSpace"); } + public get isEnhancedColorizationEnabled(): boolean { + return this.getAsString("enhancedColorization").toLowerCase() === "enabled" && this.intelliSenseEngine === "default" - && vscode.workspace.getConfiguration("workbench").get("colorTheme") !== "Default High Contrast"; - } - - public get formattingEngine(): string | undefined { - return super.Section.get("formatting")?.toLowerCase(); - } - - public get vcFormatIndentBraces(): boolean { - return super.Section.get("vcFormat.indent.braces") === true; - } - - public get vcFormatIndentMultiLineRelativeTo(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.indent.multiLineRelativeTo")!; - } - - public get vcFormatIndentWithinParentheses(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.indent.withinParentheses")!; - } - - public get vcFormatIndentPreserveWithinParentheses(): boolean { - return super.Section.get("vcFormat.indent.preserveWithinParentheses") === true; - } - - public get vcFormatIndentCaseLabels(): boolean { - return super.Section.get("vcFormat.indent.caseLabels") === true; - } - - public get vcFormatIndentCaseContents(): boolean { - return super.Section.get("vcFormat.indent.caseContents") === true; - } - - public get vcFormatIndentCaseContentsWhenBlock(): boolean { - return super.Section.get("vcFormat.indent.caseContentsWhenBlock") === true; - } - - public get vcFormatIndentLambdaBracesWhenParameter(): boolean { - return super.Section.get("vcFormat.indent.lambdaBracesWhenParameter") === true; - } - - public get vcFormatIndentGotoLabels(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.indent.gotoLabels")!; - } - - public get vcFormatIndentPreprocessor(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.indent.preprocessor")!; - } - - public get vcFormatIndentAccessSpecifiers(): boolean { - return super.Section.get("vcFormat.indent.accessSpecifiers") === true; - } - - public get vcFormatIndentNamespaceContents(): boolean { - return super.Section.get("vcFormat.indent.namespaceContents") === true; - } - - public get vcFormatIndentPreserveComments(): boolean { - return super.Section.get("vcFormat.indent.preserveComments") === true; - } - - public get vcFormatNewlineBeforeOpenBraceNamespace(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.newLine.beforeOpenBrace.namespace")!; - } - - public get vcFormatNewlineBeforeOpenBraceType(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.newLine.beforeOpenBrace.type")!; - } - - public get vcFormatNewlineBeforeOpenBraceFunction(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.newLine.beforeOpenBrace.function")!; - } - - public get vcFormatNewlineBeforeOpenBraceBlock(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.newLine.beforeOpenBrace.block")!; - } - - public get vcFormatNewlineBeforeOpenBraceLambda(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.newLine.beforeOpenBrace.lambda")!; - } - - public get vcFormatNewlineScopeBracesOnSeparateLines(): boolean { - return super.Section.get("vcFormat.newLine.scopeBracesOnSeparateLines") === true; - } - - public get vcFormatNewlineCloseBraceSameLineEmptyType(): boolean { - return super.Section.get("vcFormat.newLine.closeBraceSameLine.emptyType") === true; - } - - public get vcFormatNewlineCloseBraceSameLineEmptyFunction(): boolean { - return super.Section.get("vcFormat.newLine.closeBraceSameLine.emptyFunction") === true; - } - - public get vcFormatNewlineBeforeCatch(): boolean { - return super.Section.get("vcFormat.newLine.beforeCatch") === true; - } - - public get vcFormatNewlineBeforeElse(): boolean { - return super.Section.get("vcFormat.newLine.beforeElse") === true; - } - - public get vcFormatNewlineBeforeWhileInDoWhile(): boolean { - return super.Section.get("vcFormat.newLine.beforeWhileInDoWhile") === true; - } - - public get vcFormatSpaceBeforeFunctionOpenParenthesis(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.space.beforeFunctionOpenParenthesis")!; - } - - public get vcFormatSpaceWithinParameterListParentheses(): boolean { - return super.Section.get("vcFormat.space.withinParameterListParentheses") === true; - } - - public get vcFormatSpaceBetweenEmptyParameterListParentheses(): boolean { - return super.Section.get("vcFormat.space.betweenEmptyParameterListParentheses") === true; - } - - public get vcFormatSpaceAfterKeywordsInControlFlowStatements(): boolean { - return super.Section.get("vcFormat.space.afterKeywordsInControlFlowStatements") === true; - } - - public get vcFormatSpaceWithinControlFlowStatementParentheses(): boolean { - return super.Section.get("vcFormat.space.withinControlFlowStatementParentheses") === true; - } - - public get vcFormatSpaceBeforeLambdaOpenParenthesis(): boolean { - return super.Section.get("vcFormat.space.beforeLambdaOpenParenthesis") === true; - } - - public get vcFormatSpaceWithinCastParentheses(): boolean { - return super.Section.get("vcFormat.space.withinCastParentheses") === true; - } - - public get vcFormatSpaceAfterCastCloseParenthesis(): boolean { - return super.Section.get("vcFormat.space.afterCastCloseParenthesis") === true; - } - - public get vcFormatSpaceWithinExpressionParentheses(): boolean { - return super.Section.get("vcFormat.space.withinExpressionParentheses") === true; - } - - public get vcFormatSpaceBeforeBlockOpenBrace(): boolean { - return super.Section.get("vcFormat.space.beforeBlockOpenBrace") === true; + && vscode.workspace.getConfiguration("workbench").get("colorTheme") !== "Default High Contrast"; + } + public get formattingEngine(): string { return this.getAsString("formatting"); } + public get vcFormatIndentBraces(): boolean { return this.getAsBoolean("vcFormat.indent.braces"); } + public get vcFormatIndentMultiLineRelativeTo(): string { return this.getAsString("vcFormat.indent.multiLineRelativeTo"); } + public get vcFormatIndentWithinParentheses(): string { return this.getAsString("vcFormat.indent.withinParentheses"); } + public get vcFormatIndentPreserveWithinParentheses(): boolean { return this.getAsBoolean("vcFormat.indent.preserveWithinParentheses"); } + public get vcFormatIndentCaseLabels(): boolean { return this.getAsBoolean("vcFormat.indent.caseLabels"); } + public get vcFormatIndentCaseContents(): boolean { return this.getAsBoolean("vcFormat.indent.caseContents"); } + public get vcFormatIndentCaseContentsWhenBlock(): boolean { return this.getAsBoolean("vcFormat.indent.caseContentsWhenBlock"); } + public get vcFormatIndentLambdaBracesWhenParameter(): boolean { return this.getAsBoolean("vcFormat.indent.lambdaBracesWhenParameter"); } + public get vcFormatIndentGotoLabels(): string { return this.getAsString("vcFormat.indent.gotoLabels"); } + public get vcFormatIndentPreprocessor(): string { return this.getAsString("vcFormat.indent.preprocessor"); } + public get vcFormatIndentAccessSpecifiers(): boolean { return this.getAsBoolean("vcFormat.indent.accessSpecifiers"); } + public get vcFormatIndentNamespaceContents(): boolean { return this.getAsBoolean("vcFormat.indent.namespaceContents"); } + public get vcFormatIndentPreserveComments(): boolean { return this.getAsBoolean("vcFormat.indent.preserveComments"); } + public get vcFormatNewlineBeforeOpenBraceNamespace(): string { return this.getAsString("vcFormat.newLine.beforeOpenBrace.namespace"); } + public get vcFormatNewlineBeforeOpenBraceType(): string { return this.getAsString("vcFormat.newLine.beforeOpenBrace.type"); } + public get vcFormatNewlineBeforeOpenBraceFunction(): string { return this.getAsString("vcFormat.newLine.beforeOpenBrace.function"); } + public get vcFormatNewlineBeforeOpenBraceBlock(): string { return this.getAsString("vcFormat.newLine.beforeOpenBrace.block"); } + public get vcFormatNewlineBeforeOpenBraceLambda(): string { return this.getAsString("vcFormat.newLine.beforeOpenBrace.lambda"); } + public get vcFormatNewlineScopeBracesOnSeparateLines(): boolean { return this.getAsBoolean("vcFormat.newLine.scopeBracesOnSeparateLines"); } + public get vcFormatNewlineCloseBraceSameLineEmptyType(): boolean { return this.getAsBoolean("vcFormat.newLine.closeBraceSameLine.emptyType"); } + public get vcFormatNewlineCloseBraceSameLineEmptyFunction(): boolean { return this.getAsBoolean("vcFormat.newLine.closeBraceSameLine.emptyFunction"); } + public get vcFormatNewlineBeforeCatch(): boolean { return this.getAsBoolean("vcFormat.newLine.beforeCatch"); } + public get vcFormatNewlineBeforeElse(): boolean { return this.getAsBoolean("vcFormat.newLine.beforeElse"); } + public get vcFormatNewlineBeforeWhileInDoWhile(): boolean { return this.getAsBoolean("vcFormat.newLine.beforeWhileInDoWhile"); } + public get vcFormatSpaceBeforeFunctionOpenParenthesis(): string { return this.getAsString("vcFormat.space.beforeFunctionOpenParenthesis"); } + public get vcFormatSpaceWithinParameterListParentheses(): boolean { return this.getAsBoolean("vcFormat.space.withinParameterListParentheses"); } + public get vcFormatSpaceBetweenEmptyParameterListParentheses(): boolean { return this.getAsBoolean("vcFormat.space.betweenEmptyParameterListParentheses"); } + public get vcFormatSpaceAfterKeywordsInControlFlowStatements(): boolean { return this.getAsBoolean("vcFormat.space.afterKeywordsInControlFlowStatements"); } + public get vcFormatSpaceWithinControlFlowStatementParentheses(): boolean { return this.getAsBoolean("vcFormat.space.withinControlFlowStatementParentheses"); } + public get vcFormatSpaceBeforeLambdaOpenParenthesis(): boolean { return this.getAsBoolean("vcFormat.space.beforeLambdaOpenParenthesis"); } + public get vcFormatSpaceWithinCastParentheses(): boolean { return this.getAsBoolean("vcFormat.space.withinCastParentheses"); } + public get vcFormatSpaceAfterCastCloseParenthesis(): boolean { return this.getAsBoolean("vcFormat.space.afterCastCloseParenthesis"); } + public get vcFormatSpaceWithinExpressionParentheses(): boolean { return this.getAsBoolean("vcFormat.space.withinExpressionParentheses"); } + public get vcFormatSpaceBeforeBlockOpenBrace(): boolean { return this.getAsBoolean("vcFormat.space.beforeBlockOpenBrace"); } + public get vcFormatSpaceBetweenEmptyBraces(): boolean { return this.getAsBoolean("vcFormat.space.betweenEmptyBraces"); } + public get vcFormatSpaceBeforeInitializerListOpenBrace(): boolean { return this.getAsBoolean("vcFormat.space.beforeInitializerListOpenBrace"); } + public get vcFormatSpaceWithinInitializerListBraces(): boolean { return this.getAsBoolean("vcFormat.space.withinInitializerListBraces"); } + public get vcFormatSpacePreserveInInitializerList(): boolean { return this.getAsBoolean("vcFormat.space.preserveInInitializerList"); } + public get vcFormatSpaceBeforeOpenSquareBracket(): boolean { return this.getAsBoolean("vcFormat.space.beforeOpenSquareBracket"); } + public get vcFormatSpaceWithinSquareBrackets(): boolean { return this.getAsBoolean("vcFormat.space.withinSquareBrackets"); } + public get vcFormatSpaceBeforeEmptySquareBrackets(): boolean { return this.getAsBoolean("vcFormat.space.beforeEmptySquareBrackets"); } + public get vcFormatSpaceBetweenEmptySquareBrackets(): boolean { return this.getAsBoolean("vcFormat.space.betweenEmptySquareBrackets"); } + public get vcFormatSpaceGroupSquareBrackets(): boolean { return this.getAsBoolean("vcFormat.space.groupSquareBrackets"); } + public get vcFormatSpaceWithinLambdaBrackets(): boolean { return this.getAsBoolean("vcFormat.space.withinLambdaBrackets"); } + public get vcFormatSpaceBetweenEmptyLambdaBrackets(): boolean { return this.getAsBoolean("vcFormat.space.betweenEmptyLambdaBrackets"); } + public get vcFormatSpaceBeforeComma(): boolean { return this.getAsBoolean("vcFormat.space.beforeComma"); } + public get vcFormatSpaceAfterComma(): boolean { return this.getAsBoolean("vcFormat.space.afterComma"); } + public get vcFormatSpaceRemoveAroundMemberOperators(): boolean { return this.getAsBoolean("vcFormat.space.removeAroundMemberOperators"); } + public get vcFormatSpaceBeforeInheritanceColon(): boolean { return this.getAsBoolean("vcFormat.space.beforeInheritanceColon"); } + public get vcFormatSpaceBeforeConstructorColon(): boolean { return this.getAsBoolean("vcFormat.space.beforeConstructorColon"); } + public get vcFormatSpaceRemoveBeforeSemicolon(): boolean { return this.getAsBoolean("vcFormat.space.removeBeforeSemicolon"); } + public get vcFormatSpaceInsertAfterSemicolon(): boolean { return this.getAsBoolean("vcFormat.space.insertAfterSemicolon"); } + public get vcFormatSpaceRemoveAroundUnaryOperator(): boolean { return this.getAsBoolean("vcFormat.space.removeAroundUnaryOperator"); } + public get vcFormatSpaceAroundBinaryOperator(): string { return this.getAsString("vcFormat.space.aroundBinaryOperator"); } + public get vcFormatSpaceAroundAssignmentOperator(): string { return this.getAsString("vcFormat.space.aroundAssignmentOperator"); } + public get vcFormatSpacePointerReferenceAlignment(): string { return this.getAsString("vcFormat.space.pointerReferenceAlignment"); } + public get vcFormatSpaceAroundTernaryOperator(): string { return this.getAsString("vcFormat.space.aroundTernaryOperator"); } + public get vcFormatWrapPreserveBlocks(): string { return this.getAsString("vcFormat.wrap.preserveBlocks"); } + public get dimInactiveRegions(): boolean { + return this.getAsBoolean("dimInactiveRegions") + && this.intelliSenseEngine === "default" && vscode.workspace.getConfiguration("workbench").get("colorTheme") !== "Default High Contrast"; } + public get sshTargetsView(): string { return this.getAsString("sshTargetsView"); } - public get vcFormatSpaceBetweenEmptyBraces(): boolean { - return super.Section.get("vcFormat.space.betweenEmptyBraces") === true; - } + // Returns the value of a setting as a string with proper type validation and checks for valid enum values while returning an undefined value if necessary. + private getAsStringOrUndefined(settingName: string): string | undefined { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (setting.default !== undefined) { + console.error(`Default value for ${settingName} is expected to be undefined.`); + } - public get vcFormatSpaceBeforeInitializerListOpenBrace(): boolean { - return super.Section.get("vcFormat.space.beforeInitializerListOpenBrace") === true; - } + if (setting.enum !== undefined) { + if (this.isValidEnum(setting.enum, value)) { + return value; + } + } else if (isString(value)) { + return value; + } - public get vcFormatSpaceWithinInitializerListBraces(): boolean { - return super.Section.get("vcFormat.space.withinInitializerListBraces") === true; + return undefined; } - public get vcFormatSpacePreserveInInitializerList(): boolean { - return super.Section.get("vcFormat.space.preserveInInitializerList") === true; - } + // Returns the value of a setting as a boolean with proper type validation and checks for valid enum values while returning an undefined value if necessary. + private getAsBooleanOrUndefined(settingName: string): boolean | undefined { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (setting.default !== undefined) { + console.error(`Default value for ${settingName} is expected to be undefined.`); + } - public get vcFormatSpaceBeforeOpenSquareBracket(): boolean { - return super.Section.get("vcFormat.space.beforeOpenSquareBracket") === true; - } + if (isBoolean(value)) { + return value; + } - public get vcFormatSpaceWithinSquareBrackets(): boolean { - return super.Section.get("vcFormat.space.withinSquareBrackets") === true; + return undefined; } - public get vcFormatSpaceBeforeEmptySquareBrackets(): boolean { - return super.Section.get("vcFormat.space.beforeEmptySquareBrackets") === true; + private isValidDefault(isValid: (x: any) => boolean, value: any, allowNull: boolean): boolean { + return isValid(value) || (allowNull && value === null); } - public get vcFormatSpaceBetweenEmptySquareBrackets(): boolean { - return super.Section.get("vcFormat.space.betweenEmptySquareBrackets") === true; - } + // Returns the value of a setting as a boolean with proper type validation. + private getAsBoolean(settingName: string): boolean; + private getAsBoolean(settingName: string, allowNull: boolean): boolean | null; + private getAsBoolean(settingName: string, allowNull: boolean = false): boolean | null { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (!this.isValidDefault(isBoolean, setting.default, allowNull)) { + console.error(`Default value for ${settingName} is expected to be boolean${allowNull ? ' or null' : ''}.`); + } - public get vcFormatSpaceGroupSquareBrackets(): boolean { - return super.Section.get("vcFormat.space.groupSquareBrackets") === true; - } + if (allowNull && value === null) { + return null; + } - public get vcFormatSpaceWithinLambdaBrackets(): boolean { - return super.Section.get("vcFormat.space.withinLambdaBrackets") === true; + if (isBoolean(value)) { + return value; + } + return setting.default; } - public get vcFormatSpaceBetweenEmptyLambdaBrackets(): boolean { - return super.Section.get("vcFormat.space.betweenEmptyLambdaBrackets") === true; - } + // Returns the value of a setting as a string with proper type validation and checks for valid enum values. + private getAsString(settingName: string): string; + private getAsString(settingName: string, allowNull: boolean): string | null; + private getAsString(settingName: string, allowNull: boolean = false): string | null { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (!this.isValidDefault(isString, setting.default, allowNull)) { + console.error(`Default value for ${settingName} is expected to be string${allowNull ? ' or null' : ''}.`); + } - public get vcFormatSpaceBeforeComma(): boolean { - return super.Section.get("vcFormat.space.beforeComma") === true; - } + if (allowNull && value === null) { + return null; + } - public get vcFormatSpaceAfterComma(): boolean { - return super.Section.get("vcFormat.space.afterComma") === true; + if (setting.enum !== undefined) { + if (settingName === "loggingLevel" && isString(value) && isNumber(Number(value)) && Number(value) >= 0) { + return value; + } + if (this.isValidEnum(setting.enum, value)) { + return value; + } + } else if (isString(value)) { + return value; + } + return setting.default as string; } - public get vcFormatSpaceRemoveAroundMemberOperators(): boolean { - return super.Section.get("vcFormat.space.removeAroundMemberOperators") === true; - } + // Returns the value of a setting as a number with proper type validation and checks if value falls within the specified range. + private getAsNumber(settingName: string): number; + private getAsNumber(settingName: string, allowNull: boolean): number | null; + private getAsNumber(settingName: string, allowNull: boolean = false): number | null { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (!this.isValidDefault(isNumber, setting.default, allowNull)) { + console.error(`Default value for ${settingName} is expected to be number${allowNull ? ' or null' : ''}.`); + } - public get vcFormatSpaceBeforeInheritanceColon(): boolean { - return super.Section.get("vcFormat.space.beforeInheritanceColon") === true; + if (allowNull && value === null) { + return null; + } + // Validates the value is a number and clamps it to the specified range. Allows for undefined maximum or minimum values. + if (isNumber(value)) { + if (setting.minimum !== undefined && value < setting.minimum) { + return setting.minimum; + } + if (setting.maximum !== undefined && value > setting.maximum) { + return setting.maximum; + } + return value; + } + return setting.default as number; } - public get vcFormatSpaceBeforeConstructorColon(): boolean { - return super.Section.get("vcFormat.space.beforeConstructorColon") === true; - } + private getAsArrayOfStringsOrUndefined(settingName: string, allowUndefinedEnums: boolean = false): string[] | undefined { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (setting.default !== undefined) { + console.error(`Default value for ${settingName} is expected to be undefined.`); + } - public get vcFormatSpaceRemoveBeforeSemicolon(): boolean { - return super.Section.get("vcFormat.space.removeBeforeSemicolon") === true; + if (isArrayOfString(value)) { + if (setting.items.enum && !allowUndefinedEnums) { + if (!value.every(x => this.isValidEnum(setting.items.enum, x))) { + return setting.default; + } + } + return value; + } + return setting.default as string[]; } - public get vcFormatSpaceInsertAfterSemicolon(): boolean { - return super.Section.get("vcFormat.space.insertAfterSemicolon") === true; - } + // Returns the value of a setting as an array of strings with proper type validation and checks for valid enum values. + private getAsArrayOfStrings(settingName: string, allowUndefinedEnums: boolean = false): string[] { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (!isArrayOfString(setting.default)) { + console.error(`Default value for ${settingName} is expected to be string[].`); + } - public get vcFormatSpaceRemoveAroundUnaryOperator(): boolean { - return super.Section.get("vcFormat.space.removeAroundUnaryOperator") === true; + if (isArrayOfString(value)) { + if (setting.items.enum && !allowUndefinedEnums) { + if (!value.every(x => this.isValidEnum(setting.items.enum, x))) { + return setting.default; + } + } + return value; + } + return setting.default as string[]; } - public get vcFormatSpaceAroundBinaryOperator(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.space.aroundBinaryOperator")!; - } + private getAsExcludes(settingName: string): Excludes; + private getAsExcludes(settingName: string, allowNull: boolean): Excludes | null; + private getAsExcludes(settingName: string, allowNull: boolean = false): Excludes | null { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (!this.isValidDefault(x => isValidMapping(x, isString, val => isBoolean(val) || isValidWhenObject(val)), setting.default, allowNull)) { + console.error(`Default value for ${settingName} is expected to be Excludes${allowNull ? ' or null' : ''}.`); + } - public get vcFormatSpaceAroundAssignmentOperator(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.space.aroundAssignmentOperator")!; + if (allowNull && value === null) { + return null; + } + if (isValidMapping(value, isString, val => isBoolean(val) || isValidWhenObject(val))) { + return value as Excludes; + } + return setting.default as Excludes; } - public get vcFormatSpacePointerReferenceAlignment(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.space.pointerReferenceAlignment")!; - } + private getAsAssociations(settingName: string): Associations; + private getAsAssociations(settingName: string, allowNull: boolean): Associations | null; + private getAsAssociations(settingName: string, allowNull: boolean = false): Associations | null { + const value: any = super.Section.get(settingName); + const setting = getRawSetting("C_Cpp." + settingName, true); + if (!this.isValidDefault(x => isValidMapping(x, isString, isString), setting.default, allowNull)) { + console.error(`Default value for ${settingName} is expected to be Associations${allowNull ? ' or null' : ''}.`); + } - public get vcFormatSpaceAroundTernaryOperator(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.space.aroundTernaryOperator")!; + if (allowNull && value === null) { + return null; + } + if (isValidMapping(value, isString, isString)) { + return value as Associations; + } + return setting.default as Associations; } - public get vcFormatWrapPreserveBlocks(): string { - // These strings have default values in package.json, so should never be undefined. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return super.Section.get("vcFormat.wrap.preserveBlocks")!; + // Checks a given enum value against a list of valid enum values from package.json. + private isValidEnum(enumDescription: any, value: any): value is string { + if (isString(value) && isArray(enumDescription) && enumDescription.length > 0) { + return enumDescription.some(x => x.toLowerCase() === value.toLowerCase()); + } + return false; } - public get dimInactiveRegions(): boolean { - return super.Section.get("dimInactiveRegions") === true - && this.intelliSenseEngine === "default" - && vscode.workspace.getConfiguration("workbench").get("colorTheme") !== "Default High Contrast"; + private isArrayOfCommentContinuationPatterns(x: any): x is (string | CommentPattern)[] { + return isArray(x) && x.every(y => isString(y) || this.isCommentPattern(y)); } - public get sshTargetsView(): string { - return super.Section.get("sshTargetsView") ?? 'default'; + private isCommentPattern(x: any): x is CommentPattern { + return isObject(x) && isString(x.begin) && isString(x.continue); } public toggleSetting(name: string, value1: string, value2: string): void { - const value: string | undefined = super.Section.get(name); + const value: string = this.getAsString(name); void super.Section.update(name, value?.toLowerCase() === value1.toLowerCase() ? value2 : value1, getTarget()); } @@ -975,17 +959,6 @@ export class CppSettings extends Settings { } } -export interface TextMateRuleSettings { - foreground?: string; - background?: string; - fontStyle?: string; -} - -export interface TextMateRule { - scope: any; - settings: TextMateRuleSettings; -} - export class OtherSettings { private resource: vscode.Uri | undefined; @@ -996,28 +969,112 @@ export class OtherSettings { this.resource = resource; } - public get editorTabSize(): number | undefined { return vscode.workspace.getConfiguration("editor", this.resource).get("tabSize"); } - public get editorInsertSpaces(): boolean | undefined { return vscode.workspace.getConfiguration("editor", this.resource).get("insertSpaces"); } - public get editorAutoClosingBrackets(): string | undefined { return vscode.workspace.getConfiguration("editor", this.resource).get("autoClosingBrackets"); } - public get filesEncoding(): string | undefined { return vscode.workspace.getConfiguration("files", { uri: this.resource, languageId: "cpp" }).get("encoding"); } - public get filesAssociations(): any { return vscode.workspace.getConfiguration("files").get("associations"); } - public set filesAssociations(value: any) { - void vscode.workspace.getConfiguration("files").update("associations", value, vscode.ConfigurationTarget.Workspace); + private logValidationError(sectionName: string, settingName: string, error: string): void { + telemetry.logLanguageServerEvent("settingsValidation", { setting: sectionName + '.' + settingName, error }); } - public get filesExclude(): vscode.WorkspaceConfiguration | undefined { return vscode.workspace.getConfiguration("files", this.resource).get("exclude"); } - public get filesAutoSaveAfterDelay(): boolean { return vscode.workspace.getConfiguration("files").get("autoSave") === "afterDelay"; } - public get editorInlayHintsEnabled(): boolean { return vscode.workspace.getConfiguration("editor.inlayHints").get("enabled") !== "off"; } - public get editorParameterHintsEnabled(): boolean | undefined { return vscode.workspace.getConfiguration("editor.parameterHints").get("enabled"); } - public get searchExclude(): vscode.WorkspaceConfiguration | undefined { return vscode.workspace.getConfiguration("search", this.resource).get("exclude"); } - public get workbenchSettingsEditor(): string | undefined { return vscode.workspace.getConfiguration("workbench.settings").get("editor"); } - public get colorTheme(): string | undefined { return vscode.workspace.getConfiguration("workbench").get("colorTheme"); } + private getAsString(sectionName: string, settingName: string, resource: any, defaultValue: string): string { + const section = vscode.workspace.getConfiguration(sectionName, resource); + const value = section.get(settingName); + if (isString(value)) { + return value; + } + const setting = section.inspect(settingName); + + if (setting?.defaultValue === undefined || setting.defaultValue === null) { + this.logValidationError(sectionName, settingName, "no default value"); + return defaultValue; + } + return setting.defaultValue; + } - public getCustomColorToken(colorTokenName: string): string | undefined { return vscode.workspace.getConfiguration("editor.tokenColorCustomizations").get(colorTokenName); } - public getCustomThemeSpecificColorToken(themeName: string, colorTokenName: string): string | undefined { return vscode.workspace.getConfiguration(`editor.tokenColorCustomizations.[${themeName}]`, this.resource).get(colorTokenName); } + private getAsBoolean(sectionName: string, settingName: string, resource: any, defaultValue: boolean): boolean { + const section = vscode.workspace.getConfiguration(sectionName, resource); + const value = section.get(settingName); + if (isBoolean(value)) { + return value; + } + const setting = section.inspect(settingName); + if (setting?.defaultValue === undefined || setting.defaultValue === null) { + this.logValidationError(sectionName, settingName, "no default value"); + return defaultValue; + } + return setting.defaultValue; + } - public get customTextMateRules(): TextMateRule[] | undefined { return vscode.workspace.getConfiguration("editor.tokenColorCustomizations").get("textMateRules"); } - public getCustomThemeSpecificTextMateRules(themeName: string): TextMateRule[] | undefined { return vscode.workspace.getConfiguration(`editor.tokenColorCustomizations.[${themeName}]`, this.resource).get("textMateRules"); } + private getAsNumber(sectionName: string, settingName: string, resource: any, defaultValue: number, minimum?: number, maximum?: number): number { + const section = vscode.workspace.getConfiguration(sectionName, resource); + const value = section.get(settingName); + // Validates the value is a number and clamps it to the specified range. Allows for undefined maximum or minimum values. + if (isNumber(value)) { + if (minimum !== undefined && value < minimum) { + return minimum; + } + if (maximum !== undefined && value > maximum) { + return maximum; + } + return value; + } + const setting = section.inspect(settingName); + if (setting?.defaultValue === undefined || setting.defaultValue === null) { + this.logValidationError(sectionName, settingName, "no default value"); + return defaultValue; + } + return setting.defaultValue; + } + + private getAsAssociations(sectionName: string, settingName: string, defaultValue: Associations, resource?: any): Associations { + const section = vscode.workspace.getConfiguration(sectionName, resource); + const value = section.get(settingName); + if (isValidMapping(value, isString, isString)) { + return value as Associations; + } + const setting = section.inspect(settingName); + if (setting?.defaultValue === undefined || setting.defaultValue === null) { + this.logValidationError(sectionName, settingName, "no default value"); + } + return setting?.defaultValue ?? defaultValue; + } + + private getAsExcludes(sectionName: string, settingName: string, defaultValue: Excludes, resource?: any): Excludes { + const section = vscode.workspace.getConfiguration(sectionName, resource); + const value = section.get(settingName); + if (isValidMapping(value, isString, (val) => isBoolean(val) || isValidWhenObject(val))) { + return value as Excludes; + } + const setting = section.inspect(settingName); + if (setting?.defaultValue === undefined || setting.defaultValue === null) { + this.logValidationError(sectionName, settingName, "no default value"); + } + return setting?.defaultValue ?? defaultValue; + } + + // All default values are obtained from the VS Code settings UI. Please update the default values as needed. + public get editorTabSize(): number { return this.getAsNumber("editor", "tabSize", this.resource, 4, 1); } + public get editorInsertSpaces(): boolean { return this.getAsBoolean("editor", "insertSpaces", this.resource, true); } + public get editorAutoClosingBrackets(): string { return this.getAsString("editor", "autoClosingBrackets", this.resource, "languageDefined"); } + public get filesEncoding(): string { return this.getAsString("files", "encoding", { uri: this.resource, languageId: "cpp" }, "utf8"); } + public get filesAssociations(): Associations { return this.getAsAssociations("files", "associations", {}); } + public set filesAssociations(value: any) { void vscode.workspace.getConfiguration("files").update("associations", value, vscode.ConfigurationTarget.Workspace); } + private readonly defaultFilesExcludes = { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true + }; + public get filesExclude(): Excludes { return this.getAsExcludes("files", "exclude", this.defaultFilesExcludes, this.resource); } + public get filesAutoSaveAfterDelay(): boolean { return this.getAsString("files", "autoSave", this.resource, "off") === "afterDelay"; } + public get editorInlayHintsEnabled(): boolean { return this.getAsString("editor.inlayHints", "enabled", this.resource, "on") !== "off"; } + public get editorParameterHintsEnabled(): boolean { return this.getAsBoolean("editor.parameterHints", "enabled", this.resource, true); } + private readonly defaultSearchExcludes = { + "**/node_modules": true, + "**/bower_components": true, + "**/*.code-search": true + }; + public get searchExclude(): Excludes { return this.getAsExcludes("search", "exclude", this.defaultSearchExcludes, this.resource); } + public get workbenchSettingsEditor(): string { return this.getAsString("workbench.settings", "editor", this.resource, "ui"); } } function mapIndentationReferenceToEditorConfig(value: string | undefined): string { diff --git a/Extension/src/common.ts b/Extension/src/common.ts index f2ac8ecf9c..bf2f6adcaf 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -65,7 +65,7 @@ export const packageJson: any = vscode.extensions.getExtension("ms-vscode.cpptoo // Use getRawSetting to get subcategorized settings from package.json. // This prevents having to iterate every time we search. let flattenedPackageJson: Map; -export function getRawSetting(key: string): any { +export function getRawSetting(key: string, breakIfMissing: boolean = false): any { if (flattenedPackageJson === undefined) { flattenedPackageJson = new Map(); for (const subheading of packageJson.contributes.configuration) { @@ -74,7 +74,12 @@ export function getRawSetting(key: string): any { } } } - return flattenedPackageJson.get(key); + const result = flattenedPackageJson.get(key); + if (result === undefined && breakIfMissing) { + // eslint-disable-next-line no-debugger + debugger; // The setting does not exist in package.json. Check the `key`. + } + return result; } export async function getRawJson(path: string | undefined): Promise { @@ -317,12 +322,12 @@ export function isBoolean(input: any): input is boolean { return typeof input === "boolean"; } -export function isObject(input: any): input is object { - return typeof input === "object"; +export function isObject(input: any): boolean { + return input !== null && typeof input === "object" && !isArray(input); } export function isArray(input: any): input is any[] { - return input instanceof Array; + return Array.isArray(input); } export function isOptionalString(input: any): input is string | undefined { @@ -333,6 +338,15 @@ export function isArrayOfString(input: any): input is string[] { return isArray(input) && input.every(isString); } +// Validates whether the given object is a valid mapping of key and value type. +// EX: {"key": true, "key2": false} should return true for keyType = string and valueType = boolean. +export function isValidMapping(value: any, isValidKey: (key: any) => boolean, isValidValue: (value: any) => boolean): value is object { + if (isObject(value)) { + return Object.entries(value).every(([key, val]) => isValidKey(key) && isValidValue(val)); + } + return false; +} + export function isOptionalArrayOfString(input: any): input is string[] | undefined { return input === undefined || isArrayOfString(input); } @@ -1766,8 +1780,7 @@ export function buildShellCommandLine(originalCommand: CommandString, command: C let commandLine = result.join(' '); // There are special rules quoted command line in cmd.exe - if (isWindows) - { + if (isWindows) { commandLine = `chcp 65001>nul && ${commandLine}`; if (commandQuoted && argQuoted) { commandLine = '"' + commandLine + '"'; diff --git a/Extension/yarn.lock b/Extension/yarn.lock index 32321f6603..eaeb6a2b6a 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -14,16 +14,13 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@es-joy/jsdoccomment@~0.43.1": - version "0.43.1" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.43.1.tgz#4b1979b7b4ff8b596fb19a3aa696a438e44608d7" - integrity sha512-I238eDtOolvCuvtxrnqtlBaw0BwdQuYqK7eA6XIonicMdOOOb75mqdIzkGDUbS04+1Di007rgm9snFRNeVrOog== +"@es-joy/jsdoccomment@~0.46.0": + version "0.46.0" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz#47a2ee4bfc0081f252e058272dfab680aaed464d" + integrity sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ== dependencies: - "@types/eslint" "^8.56.5" - "@types/estree" "^1.0.5" - "@typescript-eslint/types" "^7.2.0" comment-parser "1.4.1" - esquery "^1.5.0" + esquery "^1.6.0" jsdoc-type-pratt-parser "~4.0.0" "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": @@ -34,9 +31,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" - integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== + version "4.11.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -136,9 +133,9 @@ "@jridgewell/trace-mapping" "^0.3.25" "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -156,59 +153,59 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@microsoft/1ds-core-js@4.2.2", "@microsoft/1ds-core-js@^4.1.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@microsoft/1ds-core-js/-/1ds-core-js-4.2.2.tgz#7681f6a369e391abb2d72a96c4a60721b124b2de" - integrity sha512-4c1AXzOj7ZyX7/97v8fEDYcQ8ymTTmj+j9HYYlcO0/cUbDzZGA7/xzb34chvvAbV60qDEbX0Ha/ea7wzgefORg== +"@microsoft/1ds-core-js@4.3.0", "@microsoft/1ds-core-js@^4.1.2": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@microsoft/1ds-core-js/-/1ds-core-js-4.3.0.tgz#5c880614ce352fc66c34ae7fbb16cddb9e5c2fac" + integrity sha512-0aP0ko4j0E2HfMNG1TdctGxcX74c4nQMMMV2JyaBYRRlbg1qYSVCUTZO4Ap6Qf65cBjJUCoIzgDMXNSquANwDA== dependencies: - "@microsoft/applicationinsights-core-js" "3.2.2" + "@microsoft/applicationinsights-core-js" "3.3.0" "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" - "@nevware21/ts-async" ">= 0.5.1 < 2.x" - "@nevware21/ts-utils" ">= 0.11.1 < 2.x" + "@nevware21/ts-async" ">= 0.5.2 < 2.x" + "@nevware21/ts-utils" ">= 0.11.3 < 2.x" "@microsoft/1ds-post-js@^4.1.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@microsoft/1ds-post-js/-/1ds-post-js-4.2.2.tgz#8b5a96f9a8bbdc9fc92ee7da5152b205832f9804" - integrity sha512-0k1aSxD03r3ugLaYhI8Y8AonI/whOzSQd66XBYURVTs6uheMMxDQdSnAk/4Dwn/TUK3TCEJZBIwZRVpUJtJX9w== + version "4.3.0" + resolved "https://registry.yarnpkg.com/@microsoft/1ds-post-js/-/1ds-post-js-4.3.0.tgz#14ff70dc5804b0fa9c23230f7b653a0fba1b2dc3" + integrity sha512-a1AflEuB313mfRiNNqkoVYDi4zxnG57zR8KotudtVoov6hiByBIS0KSuf3oE5/woDHWi9ZJjiCDvFwNqNH0YYw== dependencies: - "@microsoft/1ds-core-js" "4.2.2" + "@microsoft/1ds-core-js" "4.3.0" "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" - "@nevware21/ts-async" ">= 0.5.1 < 2.x" - "@nevware21/ts-utils" ">= 0.11.1 < 2.x" + "@nevware21/ts-async" ">= 0.5.2 < 2.x" + "@nevware21/ts-utils" ">= 0.11.3 < 2.x" -"@microsoft/applicationinsights-channel-js@3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.2.2.tgz#68c58a2498158abc452ca153962547062b9c9cf7" - integrity sha512-4ruoKxgZYYa+K8JJu8RMY0egKazS8xClbx70NQHa/rJ7JYFgN3OIEIBZtFoMcHR8Vg7MEsNE5/wV6o7WWJkVIA== +"@microsoft/applicationinsights-channel-js@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.3.0.tgz#fca847a9e14b6b82f8b57a0feb88b608a57d9ab1" + integrity sha512-xlxcfwgFgvHoY/STVgtRoUSvAKOMNbe4CIBeY8zTHsjE9x3/kY9R9kpRkTBectuD7xVm1/FmzrzqaxcJO7R/sw== dependencies: - "@microsoft/applicationinsights-common" "3.2.2" - "@microsoft/applicationinsights-core-js" "3.2.2" + "@microsoft/applicationinsights-common" "3.3.0" + "@microsoft/applicationinsights-core-js" "3.3.0" "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" - "@nevware21/ts-async" ">= 0.5.1 < 2.x" - "@nevware21/ts-utils" ">= 0.11.1 < 2.x" + "@nevware21/ts-async" ">= 0.5.2 < 2.x" + "@nevware21/ts-utils" ">= 0.11.3 < 2.x" -"@microsoft/applicationinsights-common@3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-3.2.2.tgz#86c353256fbac7297b3ba07e7c9cd56d4ebecccd" - integrity sha512-e1C35gdkFSzWyUUR1S8FvisXW3nT3p6wWsLNs+vUKLOTQzsvW3XpNMVtNCq4MfHWiYDuz1lPSzo2eENaij1fVA== +"@microsoft/applicationinsights-common@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-common/-/applicationinsights-common-3.3.0.tgz#fb5dfa226fe7e0849e44977cbb9d4dbce49bf82a" + integrity sha512-5t6WtL9wCQUA06sioaTenz5qWgrCk7QRm99pDuP+vyjcAiT6//f+Qn1K9KXtEX5WfEMHx3vBIDGLl6ppnF1YAQ== dependencies: - "@microsoft/applicationinsights-core-js" "3.2.2" + "@microsoft/applicationinsights-core-js" "3.3.0" "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" - "@nevware21/ts-utils" ">= 0.11.1 < 2.x" + "@nevware21/ts-utils" ">= 0.11.3 < 2.x" -"@microsoft/applicationinsights-core-js@3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.2.2.tgz#28e22bb5d26a021160b65467efd5711fbd9f82bf" - integrity sha512-dF6LZ4ahdhoHufw+N7OXRDzWT8QN193Dvpd8GLqEZdR/KtCTofPSI63yumu+ZkzKYadf1S3w2xg0OmbdyXexoQ== +"@microsoft/applicationinsights-core-js@3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.3.0.tgz#b4e4da3bd49c3d14107f7beb6152d5214324b214" + integrity sha512-so0fFTqgZMjClH+MsiRYGspo5fpgwHEUYNMjyzpf9rjrY7FaUH8kkWzrQ3V0Cs4axZwf+WuIndtDOAws7aBmGQ== dependencies: "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" - "@nevware21/ts-async" ">= 0.5.1 < 2.x" - "@nevware21/ts-utils" ">= 0.11.1 < 2.x" + "@nevware21/ts-async" ">= 0.5.2 < 2.x" + "@nevware21/ts-utils" ">= 0.11.3 < 2.x" "@microsoft/applicationinsights-shims@3.0.1": version "3.0.1" @@ -218,17 +215,17 @@ "@nevware21/ts-utils" ">= 0.9.4 < 2.x" "@microsoft/applicationinsights-web-basic@^3.1.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.2.2.tgz#d91bbf9002df4fac2ee543b481a0cbd58ed3975c" - integrity sha512-4OdgTurRr/Awm2DcWuAhidFON2UFiirabeO9SSAeTefDCdtzv5fWzntq9zvdV47c+w6WzZkz8nX/bQTgNRb2+w== + version "3.3.0" + resolved "https://registry.yarnpkg.com/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.3.0.tgz#e7fc5320d5f8f737d94fe3cdb39272d61aad5e22" + integrity sha512-8+QcrgensCK44XuHMkW+zQXYchM6/f5gg0go/REVj5DpbE03L3jXNajSlBIALH8MzhGgcyPDlGmIt2OYztUMNQ== dependencies: - "@microsoft/applicationinsights-channel-js" "3.2.2" - "@microsoft/applicationinsights-common" "3.2.2" - "@microsoft/applicationinsights-core-js" "3.2.2" + "@microsoft/applicationinsights-channel-js" "3.3.0" + "@microsoft/applicationinsights-common" "3.3.0" + "@microsoft/applicationinsights-core-js" "3.3.0" "@microsoft/applicationinsights-shims" "3.0.1" "@microsoft/dynamicproto-js" "^2.0.3" - "@nevware21/ts-async" ">= 0.5.1 < 2.x" - "@nevware21/ts-utils" ">= 0.11.1 < 2.x" + "@nevware21/ts-async" ">= 0.5.2 < 2.x" + "@nevware21/ts-utils" ">= 0.11.3 < 2.x" "@microsoft/dynamicproto-js@^2.0.3": version "2.0.3" @@ -237,17 +234,17 @@ dependencies: "@nevware21/ts-utils" ">= 0.10.4 < 2.x" -"@nevware21/ts-async@>= 0.5.1 < 2.x": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@nevware21/ts-async/-/ts-async-0.5.1.tgz#3f55fa5222b0af5a5bb019f67092cdcd6a5f82e6" - integrity sha512-O2kN8n2HpDWJ7Oji+oTMnhITrCndmrNvrHbGDwAIBydx+FWvLE/vrw4QwnRRMvSCa2AJrcP59Ryklxv30KfkWQ== +"@nevware21/ts-async@>= 0.5.2 < 2.x": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@nevware21/ts-async/-/ts-async-0.5.2.tgz#a41883dc6ccc4666bdf156e92f35f3003fd3f6f0" + integrity sha512-Zf2vUNjCw2vJsiVKhWXA9hCNHsn59AOSGa5jGP4tWrp/vTH9XrI4eG/65khuoAgrS83migj0Xv5/j6fUAz69Zw== dependencies: - "@nevware21/ts-utils" ">= 0.11.2 < 2.x" + "@nevware21/ts-utils" ">= 0.11.3 < 2.x" -"@nevware21/ts-utils@>= 0.10.4 < 2.x", "@nevware21/ts-utils@>= 0.11.1 < 2.x", "@nevware21/ts-utils@>= 0.11.2 < 2.x", "@nevware21/ts-utils@>= 0.9.4 < 2.x": - version "0.11.2" - resolved "https://registry.yarnpkg.com/@nevware21/ts-utils/-/ts-utils-0.11.2.tgz#5836f338c091f47358298da1f77a67a88219a6a5" - integrity sha512-80W8BkS09kkGuUHJX50Fqq+QqAslxUaOQytH+3JhRacXs1EpEt2JOOkYKytqFZAYir3SeH9fahniEaDzIBxlUw== +"@nevware21/ts-utils@>= 0.10.4 < 2.x", "@nevware21/ts-utils@>= 0.11.3 < 2.x", "@nevware21/ts-utils@>= 0.9.4 < 2.x": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@nevware21/ts-utils/-/ts-utils-0.11.3.tgz#d0f032ade9540585a30a6453d962de613566d856" + integrity sha512-oipW+tyKN68bREjoESYAzOZiatM+1LF+ez1TX3BaeinhCkI18xsLgmpH9tvwHaVgKf1Tsth25sdbXVtYmgRYvQ== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -370,6 +367,11 @@ resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323" integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@sindresorhus/merge-streams@^2.1.0": version "2.3.0" resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" @@ -403,10 +405,10 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*", "@types/eslint@^8.56.5": - version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== +"@types/eslint@*": + version "9.6.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff" + integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -445,9 +447,9 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/mocha@^10.0.6": - version "10.0.6" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b" - integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== + version "10.0.7" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.7.tgz#4c620090f28ca7f905a94b706f74dc5b57b44f2f" + integrity sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw== "@types/node-fetch@^2.6.11": version "2.6.11" @@ -458,9 +460,9 @@ form-data "^4.0.0" "@types/node@*", "@types/node@^20.14.2": - version "20.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" - integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== + version "20.14.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.12.tgz#129d7c3a822cb49fc7ff661235f19cfefd422b49" + integrity sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ== dependencies: undici-types "~5.26.4" @@ -550,11 +552,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/types@^7.2.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.13.0.tgz#0cca95edf1f1fdb0cfe1bb875e121b49617477c5" - integrity sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA== - "@typescript-eslint/typescript-estree@6.21.0": version "6.21.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" @@ -596,21 +593,21 @@ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== "@vscode/debugadapter@^1.65.0": - version "1.65.0" - resolved "https://registry.yarnpkg.com/@vscode/debugadapter/-/debugadapter-1.65.0.tgz#1a318aea805a86da8d497f3b80f4506bdb12e866" - integrity sha512-l9jdX0GFoFVAc7O4O8iVnCjO0pgxbx+wJJXCaYSuglGtYwMNcJdc7xm96cuVx4LWzSqneIjvjzbuzZtoVZhZzQ== + version "1.66.0" + resolved "https://registry.yarnpkg.com/@vscode/debugadapter/-/debugadapter-1.66.0.tgz#4e4be35b8b986c45785aeee419c5d57569c12323" + integrity sha512-U/m5l6igHtQ8rSMSKW9oWeco9ySPqGYjqW9NECGPGWZ/xnoYicpqUoXhGx3xUNsafrinzWvUWrSUL/Cdgj2V+w== dependencies: - "@vscode/debugprotocol" "1.65.0" + "@vscode/debugprotocol" "1.66.0" -"@vscode/debugprotocol@1.65.0", "@vscode/debugprotocol@^1.65.0": - version "1.65.0" - resolved "https://registry.yarnpkg.com/@vscode/debugprotocol/-/debugprotocol-1.65.0.tgz#304a9e0f4f2825a66db4647148d4b2ec6372f17e" - integrity sha512-ejerrPMBXzYms6Ks+Gb7cdXtdncmT0xwIKNsc0c/SxhEa0HVY5jdvLUegYE91p7CQJpCnXOD/r2CvViN8txLLA== +"@vscode/debugprotocol@1.66.0", "@vscode/debugprotocol@^1.65.0": + version "1.66.0" + resolved "https://registry.yarnpkg.com/@vscode/debugprotocol/-/debugprotocol-1.66.0.tgz#e311ee7696053e7d7b0d30e13849688c2239f2a8" + integrity sha512-VGcRBLNL8QwHzwerSWOb60fy1FO7bdseZv6OkTS4opoP3xeyDX58i4/wAwakL2Y4P9NafN4VGrvlXSWIratmWA== "@vscode/dts@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@vscode/dts/-/dts-0.4.0.tgz#76b7b215c3094a919e244db024d08c64483528f7" - integrity sha512-m28fZnyS9PlzVvYHppyC3Q98U2RFIZO2srnBMvyupPBY5QkSxoNIjTV9roLaU7kE+gc+HXczH8XHPETUkt9IAA== + version "0.4.1" + resolved "https://registry.yarnpkg.com/@vscode/dts/-/dts-0.4.1.tgz#1946cf09db412def5fe5ecac9b9ff3e058546654" + integrity sha512-o8cI5Vqt6S6Y5mCI7yCkSQdiLQaLG5DMUpciJV3zReZwE+dA5KERxSVX8H3cPEhyKw21XwKGmIrg6YmN6M5uZA== dependencies: https-proxy-agent "^7.0.0" minimist "^1.2.8" @@ -626,12 +623,12 @@ "@microsoft/applicationinsights-web-basic" "^3.1.2" "@vscode/test-electron@^2.3.10": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.4.0.tgz#6fcdbac10948960c15f8970cf5d5e624dd51a524" - integrity sha512-yojuDFEjohx6Jb+x949JRNtSn6Wk2FAh4MldLE3ck9cfvCqzwxF32QsNy1T9Oe4oT+ZfFcg0uPUCajJzOmPlTA== + version "2.4.1" + resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.4.1.tgz#5c2760640bf692efbdaa18bafcd35fb519688941" + integrity sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ== dependencies: http-proxy-agent "^7.0.2" - https-proxy-agent "^7.0.4" + https-proxy-agent "^7.0.5" jszip "^3.10.1" ora "^7.0.1" semver "^7.6.2" @@ -798,19 +795,21 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.1.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + version "8.3.3" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" + integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== + dependencies: + acorn "^8.11.0" acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== +acorn@^8.11.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== agent-base@^7.0.2, agent-base@^7.1.0: version "7.1.1" @@ -849,19 +848,14 @@ ajv@^6.12.4, ajv@^6.12.5: uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.9.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.4.1" - -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@^1.0.1: version "1.1.0" @@ -875,7 +869,7 @@ ansi-colors@^3.0.5: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== -ansi-colors@^4.1.1: +ansi-colors@^4.1.1, ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== @@ -1123,9 +1117,9 @@ balanced-match@^1.0.0: integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== bare-events@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.3.1.tgz#5af2ee0be9578f81e3c1aa9bc3a6a2bcf22307ce" - integrity sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA== + version "2.4.2" + resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.4.2.tgz#3140cca7a0e11d49b3edc5041ab560659fd8e1f8" + integrity sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q== base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" @@ -1178,20 +1172,20 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browser-stdout@1.3.1: +browser-stdout@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserslist@^4.21.10: - version "4.23.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" - integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== + version "4.23.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed" + integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== dependencies: - caniuse-lite "^1.0.30001629" - electron-to-chromium "^1.4.796" + caniuse-lite "^1.0.30001640" + electron-to-chromium "^1.4.820" node-releases "^2.0.14" - update-browserslist-db "^1.0.16" + update-browserslist-db "^1.1.0" buffer-equal@^1.0.0: version "1.0.1" @@ -1232,10 +1226,10 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001629: - version "1.0.30001632" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001632.tgz#964207b7cba5851701afb4c8afaf1448db3884b6" - integrity sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg== +caniuse-lite@^1.0.30001640: + version "1.0.30001643" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001643.tgz#9c004caef315de9452ab970c3da71085f8241dbd" + integrity sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg== chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" @@ -1250,21 +1244,6 @@ chalk@^5.0.0, chalk@^5.3.0: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== -chokidar@3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" @@ -1393,9 +1372,9 @@ commander@^2.20.0: integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== comment-json@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.3.tgz#50b487ebbf43abe44431f575ebda07d30d015365" - integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw== + version "4.2.4" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.2.4.tgz#7d1cfe2e934f0c55ae3c2c2cc0436ba4e8901083" + integrity sha512-E5AjpSW+O+N5T2GsOQMHLLsJvrYw6G/AFt9GvU6NguEAfzKShh7hRiLtVo6S9KbRpFMGqE5ojo0/hE+sdteWvQ== dependencies: array-timsort "^1.0.3" core-util-is "^1.0.3" @@ -1527,20 +1506,13 @@ debug@3.X, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== dependencies: ms "2.1.2" -debug@4.3.4: - 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" - decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -1594,16 +1566,16 @@ detect-newline@^2.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== -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@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1663,10 +1635,10 @@ editorconfig@^2.0.0: minimatch "9.0.2" semver "^7.5.3" -electron-to-chromium@^1.4.796: - version "1.4.799" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.799.tgz#271c56654ab4dc703037e47a5af4fc8945160611" - integrity sha512-3D3DwWkRTzrdEpntY0hMLYwj7SeBk1138CkPE8sBDSj3WzrzOiG2rHm3luw8jucpf+WiyLBCZyU9lMHyQI9M9Q== +electron-to-chromium@^1.4.820: + version "1.5.1" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.1.tgz#24640bd4dcfaccb6d82bb4c3f4c7311503241581" + integrity sha512-FKbOCOQ5QRB3VlIbl1LZQefWIYwszlBloaXcY2rbfpu9ioJnNh3TK03YtIDKDo3WKBi8u+YV4+Fn2CkEozgf4w== emoji-regex@^10.2.1: version "10.3.0" @@ -1691,9 +1663,9 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.4: once "^1.4.0" enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.0: - version "5.17.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" - integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -1772,10 +1744,10 @@ es-errors@^1.2.1, es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-module-lexer@^1.2.1: - version "1.5.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" - integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== +es-module-lexer@^1.2.1, es-module-lexer@^1.5.3: + version "1.5.4" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== es-object-atoms@^1.0.0: version "1.0.0" @@ -1851,16 +1823,16 @@ escalade@^3.1.1, escalade@^3.1.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== -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@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +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== + eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" @@ -1906,18 +1878,20 @@ eslint-plugin-import@^2.29.1: tsconfig-paths "^3.15.0" eslint-plugin-jsdoc@^48.2.8: - version "48.2.9" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.9.tgz#dd5e293bc584c94e24f0b2bc4a953252b3f96d70" - integrity sha512-ErpKyr2mEUEkcdZ4nwW/cvDjClvAcvJMEXkGGll0wf8sro8h6qeQ3qlZyp1vM1dRk8Ap6rMdke8FnP94QBIaVQ== + version "48.8.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.8.3.tgz#0a651bc0ab5b0732c39e12b26771fca78c830c1c" + integrity sha512-AtIvwwW9D17MRkM0Z0y3/xZYaa9mdAvJrkY6fU/HNUwGbmMtHVvK4qRM9CDixGVtfNrQitb8c6zQtdh6cTOvLg== dependencies: - "@es-joy/jsdoccomment" "~0.43.1" + "@es-joy/jsdoccomment" "~0.46.0" are-docs-informative "^0.0.2" comment-parser "1.4.1" - debug "^4.3.4" + debug "^4.3.5" escape-string-regexp "^4.0.0" - esquery "^1.5.0" - semver "^7.6.2" + esquery "^1.6.0" + parse-imports "^2.1.1" + semver "^7.6.3" spdx-expression-parse "^4.0.0" + synckit "^0.9.1" eslint-scope@5.1.1: version "5.1.1" @@ -2008,10 +1982,10 @@ esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2, esquery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== +esquery@^1.4.2, esquery@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -2151,6 +2125,11 @@ fast-levenshtein@^3.0.0: dependencies: fastest-levenshtein "^1.0.7" +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.7: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -2177,14 +2156,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -find-up@5.0.0, 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 "^6.0.0" - path-exists "^4.0.0" - find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -2193,6 +2164,14 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" +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 "^6.0.0" + path-exists "^4.0.0" + findup-sync@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-5.0.0.tgz#54380ad965a7edca00cc8f63113559aadc541bd2" @@ -2421,17 +2400,6 @@ glob-watcher@^6.0.0: async-done "^2.0.0" chokidar "^3.5.3" -glob@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - glob@^7.1.1, glob@^7.1.3, glob@^7.2.0, glob@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -2444,6 +2412,17 @@ glob@^7.1.1, glob@^7.1.3, glob@^7.2.0, glob@^7.2.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -2492,9 +2471,9 @@ globby@^11.1.0: slash "^3.0.0" globby@^14.0.0: - version "14.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.1.tgz#a1b44841aa7f4c6d8af2bc39951109d77301959b" - integrity sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ== + version "14.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.2.tgz#06554a54ccfe9264e5a9ff8eded46aa1e306482f" + integrity sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw== dependencies: "@sindresorhus/merge-streams" "^2.1.0" fast-glob "^3.3.2" @@ -2655,7 +2634,7 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -he@1.2.0: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -2675,10 +2654,10 @@ http-proxy-agent@^7.0.2: agent-base "^7.1.0" debug "^4.3.4" -https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" - integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== +https-proxy-agent@^7.0.0, https-proxy-agent@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== dependencies: agent-base "^7.0.2" debug "4" @@ -2714,9 +2693,9 @@ import-fresh@^3.2.1: resolve-from "^4.0.0" import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -2807,11 +2786,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" is-data-view@^1.0.1: version "1.0.1" @@ -3021,7 +3000,7 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -js-yaml@4.1.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" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -3191,7 +3170,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -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== @@ -3278,13 +3257,6 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -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@9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.2.tgz#397e387fff22f6795844d00badc903a3d5de7057" @@ -3306,7 +3278,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1, minimatch@^5.1.0: +minimatch@^5.0.1, minimatch@^5.1.0, minimatch@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== @@ -3324,37 +3296,37 @@ mkdirp@^3.0.1: integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== mocha@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.4.0.tgz#ed03db96ee9cfc6d20c56f8e2af07b961dbae261" - integrity sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA== - 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 "8.1.0" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "5.0.1" - ms "2.1.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" + version "10.7.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.0.tgz#9e5cbed8fa9b37537a25bd1f7fb4f6fc45458b9a" + integrity sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: +ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -3410,9 +3382,9 @@ node-loader@^2.0.0: loader-utils "^2.0.0" node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== node-stream-zip@^1.15.0: version "1.15.0" @@ -3451,9 +3423,9 @@ object-assign@4.X: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== object-keys@^1.1.1: version "1.1.1" @@ -3625,6 +3597,14 @@ parse-git-config@^3.0.0: git-config-path "^2.0.0" ini "^1.3.5" +parse-imports@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-2.1.1.tgz#ce52141df24990065d72a446a364bffd595577f4" + integrity sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA== + dependencies: + es-module-lexer "^1.5.3" + slashes "^3.0.12" + parse-node-version@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" @@ -3696,7 +3676,7 @@ pause-stream@^0.0.11: dependencies: through "~2.3" -picocolors@^1.0.0, picocolors@^1.0.1: +picocolors@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== @@ -3743,12 +3723,12 @@ possible-typed-array-names@^1.0.0: integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== postcss@^7.0.16, postcss@^8.4.31: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + version "8.4.40" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8" + integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== dependencies: nanoid "^3.3.7" - picocolors "^1.0.0" + picocolors "^1.0.1" source-map-js "^1.2.0" prelude-ls@^1.2.1: @@ -4056,17 +4036,10 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.4, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -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" +semver@^7.3.4, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.2, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: version "6.0.2" @@ -4156,6 +4129,11 @@ slash@^5.1.0: resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== +slashes@^3.0.12: + version "3.0.12" + resolved "https://registry.yarnpkg.com/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a" + integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA== + source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" @@ -4356,18 +4334,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== -strip-json-comments@3.1.1, strip-json-comments@^3.1.1: +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== -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 "^4.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -4375,6 +4346,13 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0, supports-color@^8.1.1: + 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" @@ -4387,6 +4365,14 @@ sver@^1.8.3: optionalDependencies: semver "^6.3.0" +synckit@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" + integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -4416,9 +4402,9 @@ terser-webpack-plugin@^5.3.10: terser "^5.26.0" terser@^5.26.0: - version "5.31.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.1.tgz#735de3c987dd671e95190e6b98cfe2f07f3cf0d4" - integrity sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg== + version "5.31.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.3.tgz#b24b7beb46062f4653f049eea4f0cd165d0f0c38" + integrity sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -4426,9 +4412,9 @@ terser@^5.26.0: source-map-support "~0.5.20" text-decoder@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.1.0.tgz#3379e728fcf4d3893ec1aea35e8c2cac215ef190" - integrity sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.1.1.tgz#5df9c224cebac4a7977720b9f083f9efa1aefde8" + integrity sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA== dependencies: b4a "^1.6.4" @@ -4569,6 +4555,11 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -4636,9 +4627,9 @@ typescript@^4.5.4: integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@^5.4.5: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== unbox-primitive@^1.0.2: version "1.0.2" @@ -4698,15 +4689,15 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -update-browserslist-db@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" - integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== dependencies: escalade "^3.1.2" picocolors "^1.0.1" -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -4842,32 +4833,32 @@ vscode-cpptools@^6.1.0: resolved "https://registry.yarnpkg.com/vscode-cpptools/-/vscode-cpptools-6.1.0.tgz#d89bb225f91da45dbee6acbf45f6940aa3926df1" integrity sha512-+40xMmzSlvaMwWEDIjhHl9+W1RH9xaEbiFAAgLWgyL1FXxQWBguWRHgS91qBJbuFAB9H4UBuK94iFMs+7BFclA== -vscode-jsonrpc@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9" - integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== +vscode-jsonrpc@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz#cb9989c65e219e18533cc38e767611272d274c94" + integrity sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw== -vscode-languageclient@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz#cdfe20267726c8d4db839dc1e9d1816e1296e854" - integrity sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA== +vscode-languageclient@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz#3e67d5d841481ac66ddbdaa55b4118742f6a9f3f" + integrity sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing== dependencies: minimatch "^5.1.0" semver "^7.3.7" - vscode-languageserver-protocol "3.17.5" + vscode-languageserver-protocol "3.17.3" -vscode-languageserver-protocol@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea" - integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== +vscode-languageserver-protocol@3.17.3: + version "3.17.3" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz#6d0d54da093f0c0ee3060b81612cce0f11060d57" + integrity sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA== dependencies: - vscode-jsonrpc "8.2.0" - vscode-languageserver-types "3.17.5" + vscode-jsonrpc "8.1.0" + vscode-languageserver-types "3.17.3" -vscode-languageserver-types@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" - integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== +vscode-languageserver-types@3.17.3: + version "3.17.3" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz#72d05e47b73be93acb84d6e311b5786390f13f64" + integrity sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA== vscode-nls-dev@^4.0.4: version "4.0.4" @@ -4946,9 +4937,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.91.0: - version "5.92.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.92.0.tgz#cc114c71e6851d220b1feaae90159ed52c876bdf" - integrity sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA== + version "5.93.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5" + integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" @@ -5029,10 +5020,10 @@ word-wrap@^1.2.5: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== -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== +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== wrap-ansi@^7.0.0: version "7.0.0" @@ -5084,12 +5075,7 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^20.2.2: +yargs-parser@^20.2.2, yargs-parser@^20.2.9: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== @@ -5099,7 +5085,7 @@ yargs-parser@^21.1.1: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== -yargs-unparser@2.0.0: +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== @@ -5109,7 +5095,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.0, 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==