From f71d2c0cbb747ee89698c2e6a4a3a97843c6a1b5 Mon Sep 17 00:00:00 2001 From: Winston Liu Date: Tue, 1 Oct 2024 03:19:57 -0700 Subject: [PATCH 1/2] Release 1.237.0 (#574) * M235 schema * Update changelog * 1.237.0 --- CHANGELOG.md | 6 + package-lock.json | 4 +- package.json | 2 +- service-schema.json | 7334 ++++++++++++++++++++++--------------------- 4 files changed, 3755 insertions(+), 3591 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4cd14c7..a848529 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to the Azure Pipelines extension will be documented in this The format is based on [Keep a Changelog](http://keepachangelog.com/). Versioning follows an internal Azure DevOps format that is not compatible with SemVer. +## 1.237.0 +### Added +- Added go-to-definition support for local templates (thanks @Stuart-Wilcox!) +### Updated +- M235 schema + ## 1.228.0 ### Added - Added support for using [1ES Pipeline Template schema Intellisense](https://aka.ms/1espt) for users working on pipelines extending 1ES Pipeline Templates. This feature is available for users with `@microsoft.com` account only. diff --git a/package-lock.json b/package-lock.json index f584210..3ae9bf8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "azure-pipelines", - "version": "1.228.0", + "version": "1.237.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "azure-pipelines", - "version": "1.228.0", + "version": "1.237.0", "license": "MIT", "dependencies": { "@azure/arm-appservice": "^6.1.0", diff --git a/package.json b/package.json index 22ed42d..9fe8980 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "azure-pipelines", "displayName": "Azure Pipelines", "description": "Syntax highlighting, IntelliSense, and more for Azure Pipelines YAML", - "version": "1.228.0", + "version": "1.237.0", "publisher": "ms-azure-devops", "aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217", "repository": { diff --git a/service-schema.json b/service-schema.json index 78bf6e9..b6ec23d 100644 --- a/service-schema.json +++ b/service-schema.json @@ -1,7 +1,7 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://github.com/Microsoft/azure-pipelines-vscode/blob/main/service-schema.json", - "$comment": "v1.226.1", + "$comment": "v1.235.0", "title": "Pipeline schema", "description": "A pipeline definition", "oneOf": [ @@ -3561,6 +3561,10 @@ "description": "Downloads the files which matches the patterns", "$ref": "#/definitions/string" }, + "inputs": { + "description": "Inputs for the task", + "$ref": "#/definitions/mappingOfStringString" + }, "condition": { "description": "Evaluate this condition expression to determine whether to run this task", "$ref": "#/definitions/string" @@ -4058,6 +4062,14 @@ "PowerShell@1" ] }, + { + "description": "Run a PowerShell script within an Azure environment", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AzurePowerShell@4" + ] + }, { "description": "Run a PowerShell script within an Azure environment", "doNotSuggest": false, @@ -4079,7 +4091,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzurePowerShell@4" + "AzurePowerShell@1" ] }, { @@ -4090,14 +4102,6 @@ "AzurePowerShell@5" ] }, - { - "description": "Run a PowerShell script within an Azure environment", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "AzurePowerShell@1" - ] - }, { "description": "Run scripts and make changes to a MySQL Database", "doNotSuggest": false, @@ -4122,14 +4126,6 @@ "PipAuthenticate@1" ] }, - { - "description": "Build, test, and deploy with Apache Maven", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "Maven@3" - ] - }, { "description": "Build, test, and deploy with Apache Maven", "doNotSuggest": false, @@ -4138,14 +4134,6 @@ "Maven@4" ] }, - { - "description": "Build with Apache Maven", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "Maven@1" - ] - }, { "description": "Build, test, and deploy with Apache Maven", "doNotSuggest": false, @@ -4154,6 +4142,22 @@ "Maven@2" ] }, + { + "description": "Build, test, and deploy with Apache Maven", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "Maven@3" + ] + }, + { + "description": "Build with Apache Maven", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "Maven@1" + ] + }, { "description": "Build, test, package, or publish a dotnet application, or run a custom dotnet command", "doNotSuggest": false, @@ -4188,6 +4192,14 @@ "XamarinComponentRestore@0" ] }, + { + "description": "Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AzureRmWebAppDeployment@4" + ] + }, { "description": "Update Azure App Service using Web Deploy / Kudu REST APIs", "doNotSuggest": false, @@ -4201,15 +4213,15 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzureRmWebAppDeployment@4" + "AzureRmWebAppDeployment@3" ] }, { - "description": "Deploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby", + "description": "Execute PowerShell scripts on remote machine(s)", "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzureRmWebAppDeployment@3" + "PowerShellOnTargetMachines@1" ] }, { @@ -4220,14 +4232,6 @@ "PowerShellOnTargetMachines@3" ] }, - { - "description": "Execute PowerShell scripts on remote machine(s)", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "PowerShellOnTargetMachines@1" - ] - }, { "description": "Execute PowerShell scripts on remote machine(s)", "doNotSuggest": false, @@ -4236,14 +4240,6 @@ "PowerShellOnTargetMachines@2" ] }, - { - "description": "Publish Cobertura or JaCoCo code coverage results from a build", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "PublishCodeCoverageResults@1" - ] - }, { "description": "Publish any of the code coverage results from a build", "doNotSuggest": false, @@ -4252,6 +4248,14 @@ "PublishCodeCoverageResults@2" ] }, + { + "description": "Publish Cobertura or JaCoCo code coverage results from a build", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "PublishCodeCoverageResults@1" + ] + }, { "description": "Deprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", "deprecationMessage": "RunVisualStudioTestsusingTestAgent is deprecated - Deprecated: This task and it’s companion task (Visual Studio Test Agent Deployment) are deprecated. Use the 'Visual Studio Test' task instead. The VSTest task can run unit as well as functional tests. Run tests on one or more agents using the multi-agent job setting. Use the 'Visual Studio Test Platform' task to run tests without needing Visual Studio on the agent. VSTest task also brings new capabilities such as automatically rerunning failed tests.", @@ -4269,14 +4273,6 @@ "ManualIntervention@8" ] }, - { - "description": "Install an Apple provisioning profile required to build on a macOS agent machine", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "InstallAppleProvisioningProfile@1" - ] - }, { "description": "Install an Apple provisioning profile required to build on a macOS agent", "doNotSuggest": false, @@ -4285,6 +4281,14 @@ "InstallAppleProvisioningProfile@0" ] }, + { + "description": "Install an Apple provisioning profile required to build on a macOS agent machine", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "InstallAppleProvisioningProfile@1" + ] + }, { "description": "[DEPRECATED] Finish the analysis and upload the results to SonarQube", "deprecationMessage": "SonarQubePostTest is deprecated - [DEPRECATED] Finish the analysis and upload the results to SonarQube", @@ -4352,14 +4356,6 @@ "Docker@0" ] }, - { - "description": "Build, tag, push, or run Docker images, or run a Docker command", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "Docker@1" - ] - }, { "description": "Build or push Docker images, login or logout, start or stop containers, or run a Docker command", "doNotSuggest": false, @@ -4368,6 +4364,14 @@ "Docker@2" ] }, + { + "description": "Build, tag, push, or run Docker images, or run a Docker command", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "Docker@1" + ] + }, { "description": "Queue a job on a Jenkins server", "doNotSuggest": false, @@ -4389,7 +4393,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "FtpUpload@2" + "FtpUpload@1" ] }, { @@ -4397,15 +4401,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "FtpUpload@1" - ] - }, - { - "description": "Copy files to remote Windows machines", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "WindowsMachineFileCopy@2" + "FtpUpload@2" ] }, { @@ -4416,6 +4412,14 @@ "WindowsMachineFileCopy@1" ] }, + { + "description": "Copy files to remote Windows machines", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "WindowsMachineFileCopy@2" + ] + }, { "description": "[Deprecated] Use Gradle", "deprecationMessage": "AndroidBuild is deprecated - [Deprecated] Use Gradle", @@ -4430,7 +4434,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "TwineAuthenticate@1" + "TwineAuthenticate@0" ] }, { @@ -4438,7 +4442,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "TwineAuthenticate@0" + "TwineAuthenticate@1" ] }, { @@ -4457,14 +4461,6 @@ "PythonScript@0" ] }, - { - "description": "Install Helm on an agent machine", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "HelmInstaller@1" - ] - }, { "description": "Install Helm and Kubernetes on an agent machine", "doNotSuggest": false, @@ -4473,6 +4469,14 @@ "HelmInstaller@0" ] }, + { + "description": "Install Helm on an agent machine", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "HelmInstaller@1" + ] + }, { "description": "Install specific Node.js version to run node tasks", "doNotSuggest": false, @@ -4553,7 +4557,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzureFunctionApp@2" + "AzureFunctionApp@1" ] }, { @@ -4561,7 +4565,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzureFunctionApp@1" + "AzureFunctionApp@2" ] }, { @@ -4585,7 +4589,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "PackerBuild@1" + "PackerBuild@0" ] }, { @@ -4593,7 +4597,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "PackerBuild@0" + "PackerBuild@1" ] }, { @@ -4646,6 +4650,14 @@ "AzureMonitor@0" ] }, + { + "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "Notation@0" + ] + }, { "description": "Connect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool", "doNotSuggest": false, @@ -4793,14 +4805,6 @@ "CMake@1" ] }, - { - "description": "Test app packages with Visual Studio App Center", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "AppCenterTest@1" - ] - }, { "description": "Test mobile app packages with Visual Studio Mobile Center.", "doNotSuggest": false, @@ -4809,6 +4813,14 @@ "VSMobileCenterTest@0" ] }, + { + "description": "Test app packages with Visual Studio App Center", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AppCenterTest@1" + ] + }, { "description": "Download a secure file to the agent machine", "doNotSuggest": false, @@ -4891,14 +4903,6 @@ "KubectlInstaller@0" ] }, - { - "description": "Run a command line with arguments", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "CmdLine@1" - ] - }, { "description": "Run a command line script using Bash on Linux and macOS and cmd.exe on Windows", "doNotSuggest": false, @@ -4907,6 +4911,14 @@ "CmdLine@2" ] }, + { + "description": "Run a command line with arguments", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "CmdLine@1" + ] + }, { "description": "Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", "deprecationMessage": "NuGet is deprecated - Deprecated: use the “NuGet” task instead. It works with the new Tool Installer framework so you can easily use new versions of NuGet without waiting for a task update, provides better support for authenticated feeds outside this organization/collection, and uses NuGet 4 by default.", @@ -4924,6 +4936,15 @@ "ContainerBuild@0" ] }, + { + "description": "Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", + "deprecationMessage": "NuGetInstaller is deprecated - Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", + "doNotSuggest": true, + "ignoreCase": "value", + "enum": [ + "NuGetInstaller@0" + ] + }, { "description": "Restores NuGet packages in preparation for a Visual Studio Build step.", "deprecationMessage": "NuGetRestore is deprecated - Restores NuGet packages in preparation for a Visual Studio Build step.", @@ -4941,15 +4962,6 @@ "NuGetCommand@2" ] }, - { - "description": "Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", - "deprecationMessage": "NuGetInstaller is deprecated - Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", - "doNotSuggest": true, - "ignoreCase": "value", - "enum": [ - "NuGetInstaller@0" - ] - }, { "description": "Delay further execution of a workflow by a fixed time", "doNotSuggest": false, @@ -4963,7 +4975,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "XamariniOS@2" + "XamariniOS@1" ] }, { @@ -4971,7 +4983,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "XamariniOS@1" + "XamariniOS@2" ] }, { @@ -4990,22 +5002,6 @@ "PublishTestResults@2" ] }, - { - "description": "Copy files to Azure Blob Storage or virtual machines", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "AzureFileCopy@2" - ] - }, - { - "description": "Copy files to Azure Blob Storage or virtual machines", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "AzureFileCopy@4" - ] - }, { "description": "Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": false, @@ -5022,6 +5018,14 @@ "AzureFileCopy@1" ] }, + { + "description": "Copy files to Azure Blob Storage or virtual machines", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AzureFileCopy@2" + ] + }, { "description": "Copy files to Azure Blob Storage or virtual machines", "doNotSuggest": false, @@ -5030,6 +5034,14 @@ "AzureFileCopy@3" ] }, + { + "description": "Copy files to Azure Blob Storage or virtual machines", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AzureFileCopy@4" + ] + }, { "description": "Index your source code and publish symbols to a file share or Azure Artifacts symbol server", "doNotSuggest": false, @@ -5054,14 +5066,6 @@ "CopyFilesOverSSH@0" ] }, - { - "description": "Build using a Gradle wrapper script", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "Gradle@3" - ] - }, { "description": "Build using a Gradle wrapper script", "doNotSuggest": false, @@ -5079,20 +5083,11 @@ ] }, { - "description": "Distribute app builds to testers and users via Visual Studio App Center", + "description": "Build using a Gradle wrapper script", "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AppCenterDistribute@3" - ] - }, - { - "description": "Distribute app builds to testers and users via Visual Studio App Center", - "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", - "doNotSuggest": true, - "ignoreCase": "value", - "enum": [ - "AppCenterDistribute@2" + "Gradle@3" ] }, { @@ -5112,6 +5107,23 @@ "AppCenterDistribute@1" ] }, + { + "description": "Distribute app builds to testers and users via Visual Studio App Center", + "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", + "doNotSuggest": true, + "ignoreCase": "value", + "enum": [ + "AppCenterDistribute@2" + ] + }, + { + "description": "Distribute app builds to testers and users via Visual Studio App Center", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AppCenterDistribute@3" + ] + }, { "description": "Acquires a specific version of NuGet from the internet or the tools cache and adds it to the PATH. Use this task to change the version of NuGet used in the NuGet tasks.", "doNotSuggest": false, @@ -5160,14 +5172,6 @@ "HelmDeploy@0" ] }, - { - "description": "Install an Apple certificate required to build on a macOS agent machine", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "InstallAppleCertificate@2" - ] - }, { "description": "Install an Apple certificate required to build on a macOS agent", "doNotSuggest": false, @@ -5184,6 +5188,14 @@ "InstallAppleCertificate@0" ] }, + { + "description": "Install an Apple certificate required to build on a macOS agent machine", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "InstallAppleCertificate@2" + ] + }, { "description": "Invoke an Azure Function", "doNotSuggest": false, @@ -5226,8 +5238,7 @@ }, { "description": "Publish a local directory or file as a named artifact for the current pipeline", - "deprecationMessage": "PublishPipelineArtifact is deprecated - Publish a local directory or file as a named artifact for the current pipeline", - "doNotSuggest": true, + "doNotSuggest": false, "ignoreCase": "value", "enum": [ "PublishPipelineArtifact@0" @@ -5290,6 +5301,14 @@ "ServiceFabricComposeDeploy@0" ] }, + { + "description": "Sign and align Android APK files", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AndroidSigning@1" + ] + }, { "description": "Sign and align Android APK files", "doNotSuggest": false, @@ -5307,37 +5326,27 @@ ] }, { - "description": "Sign and align Android APK files", + "description": "Download build and pipeline artifacts", "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AndroidSigning@1" - ] - }, - { - "description": "Download a named artifact from a pipeline to a local path", - "deprecationMessage": "DownloadPipelineArtifact is deprecated - Download a named artifact from a pipeline to a local path", - "doNotSuggest": true, - "ignoreCase": "value", - "enum": [ - "DownloadPipelineArtifact@1" + "DownloadPipelineArtifact@2" ] }, { "description": "Downloads an artifact associated with a pipeline", - "deprecationMessage": "DownloadPipelineArtifact is deprecated - Downloads an artifact associated with a pipeline", - "doNotSuggest": true, + "doNotSuggest": false, "ignoreCase": "value", "enum": [ "DownloadPipelineArtifact@0" ] }, { - "description": "Download build and pipeline artifacts", + "description": "Download a named artifact from a pipeline to a local path", "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "DownloadPipelineArtifact@2" + "DownloadPipelineArtifact@1" ] }, { @@ -5356,14 +5365,6 @@ "ServiceFabricPowerShell@1" ] }, - { - "description": "Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "VSTest@3" - ] - }, { "description": "Run tests with Visual Studio test runner", "doNotSuggest": false, @@ -5380,6 +5381,14 @@ "VSTest@2" ] }, + { + "description": "Run unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "VSTest@3" + ] + }, { "description": "[PREVIEW] Pause a pipeline run to wait for manual interaction. Works only with YAML pipelines.", "doNotSuggest": false, @@ -5413,6 +5422,14 @@ "DeployVisualStudioTestAgent@1" ] }, + { + "description": "Create and activate a Conda environment", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "CondaEnvironment@0" + ] + }, { "description": "This task is deprecated. Use `conda` directly in script to work with Anaconda environments.", "deprecationMessage": "CondaEnvironment is deprecated - This task is deprecated. Use `conda` directly in script to work with Anaconda environments.", @@ -5422,14 +5439,6 @@ "CondaEnvironment@1" ] }, - { - "description": "Create and activate a Conda environment", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "CondaEnvironment@0" - ] - }, { "description": "Run a Windows command or batch script and optionally allow it to change the environment", "doNotSuggest": false, @@ -5471,11 +5480,11 @@ ] }, { - "description": "Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", + "description": "Acquires a specific version of the .NET Core SDK from the internet or the local cache and adds it to the PATH. Use this task to change the version of .NET Core used in subsequent tasks. Additionally provides proxy support.", "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "DotNetCoreInstaller@0" + "UseDotNet@2" ] }, { @@ -5488,11 +5497,11 @@ ] }, { - "description": "Acquires a specific version of the .NET Core SDK from the internet or the local cache and adds it to the PATH. Use this task to change the version of .NET Core used in subsequent tasks. Additionally provides proxy support.", + "description": "Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "UseDotNet@2" + "DotNetCoreInstaller@0" ] }, { @@ -5578,11 +5587,12 @@ ] }, { - "description": "Deploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines", - "doNotSuggest": false, + "description": "Deploy, start, stop, delete Azure Resource Groups", + "deprecationMessage": "AzureResourceGroupDeployment is deprecated - Deploy, start, stop, delete Azure Resource Groups", + "doNotSuggest": true, "ignoreCase": "value", "enum": [ - "AzureResourceGroupDeployment@2" + "AzureResourceGroupDeployment@1" ] }, { @@ -5594,12 +5604,11 @@ ] }, { - "description": "Deploy, start, stop, delete Azure Resource Groups", - "deprecationMessage": "AzureResourceGroupDeployment is deprecated - Deploy, start, stop, delete Azure Resource Groups", - "doNotSuggest": true, + "description": "Deploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines", + "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzureResourceGroupDeployment@1" + "AzureResourceGroupDeployment@2" ] }, { @@ -5690,14 +5699,6 @@ "AzureStaticWebApp@0" ] }, - { - "description": "Set up a Node.js environment and add it to the PATH, additionally providing proxy support", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "UseNode@1" - ] - }, { "description": "Finds or downloads and caches the specified version spec of Node.js and adds it to the PATH", "doNotSuggest": false, @@ -5706,6 +5707,14 @@ "NodeTool@0" ] }, + { + "description": "Set up a Node.js environment and add it to the PATH, additionally providing proxy support", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "UseNode@1" + ] + }, { "description": "Deploy a SQL Server database using DACPAC", "deprecationMessage": "SqlServerDacpacDeployment is deprecated - Deploy a SQL Server database using DACPAC", @@ -5795,14 +5804,6 @@ "AzureWebApp@1" ] }, - { - "description": "Run Azure CLI commands against an Azure subscription in a Shell script when running on Linux agent or Batch script when running on Windows agent.", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "AzureCLI@1" - ] - }, { "description": "Run a Shell or Batch script with Azure CLI commands against an azure subscription", "doNotSuggest": false, @@ -5819,6 +5820,14 @@ "AzureCLI@2" ] }, + { + "description": "Run Azure CLI commands against an Azure subscription in a Shell script when running on Linux agent or Batch script when running on Windows agent.", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "AzureCLI@1" + ] + }, { "description": "Create, edit, or delete a GitHub release", "doNotSuggest": false, @@ -5880,7 +5889,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzureFunctionOnKubernetes@1" + "AzureFunctionOnKubernetes@0" ] }, { @@ -5888,15 +5897,7 @@ "doNotSuggest": false, "ignoreCase": "value", "enum": [ - "AzureFunctionOnKubernetes@0" - ] - }, - { - "description": "Run a Bash script on macOS, Linux, or Windows", - "doNotSuggest": false, - "ignoreCase": "value", - "enum": [ - "Bash@3" + "AzureFunctionOnKubernetes@1" ] }, { @@ -5907,6 +5908,14 @@ "ShellScript@2" ] }, + { + "description": "Run a Bash script on macOS, Linux, or Windows", + "doNotSuggest": false, + "ignoreCase": "value", + "enum": [ + "Bash@3" + ] + }, { "description": "Publish build artifacts to Azure Pipelines or a Windows file share", "doNotSuggest": false, @@ -6258,6 +6267,116 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", + "ignoreCase": "value", + "pattern": "^AzurePowerShell@4$" + }, + "inputs": { + "description": "Azure PowerShell inputs", + "properties": { + "azureSubscription": { + "type": "string", + "description": "Azure Subscription", + "ignoreCase": "key", + "aliases": [ + "ConnectedServiceNameARM" + ] + }, + "ScriptType": { + "description": "Script Type", + "ignoreCase": "all", + "enum": [ + "FilePath", + "InlineScript" + ] + }, + "ScriptPath": { + "type": "string", + "description": "Script Path", + "ignoreCase": "key" + }, + "Inline": { + "type": "string", + "description": "Inline Script", + "ignoreCase": "key" + }, + "ScriptArguments": { + "type": "string", + "description": "Script Arguments", + "ignoreCase": "key" + }, + "errorActionPreference": { + "description": "ErrorActionPreference", + "ignoreCase": "all", + "enum": [ + "stop", + "continue", + "silentlyContinue" + ] + }, + "FailOnStandardError": { + "type": "boolean", + "description": "Fail on Standard Error", + "ignoreCase": "key" + }, + "RestrictContextToCurrentTask": { + "type": "boolean", + "description": "Restrict scope of context to current task", + "ignoreCase": "key" + }, + "azurePowerShellVersion": { + "description": "Azure PowerShell Version", + "ignoreCase": "all", + "enum": [ + "LatestVersion", + "OtherVersion" + ], + "aliases": [ + "TargetAzurePs" + ] + }, + "preferredAzurePowerShellVersion": { + "type": "string", + "description": "Preferred Azure PowerShell Version", + "ignoreCase": "key", + "aliases": [ + "CustomTargetAzurePs" + ] + }, + "pwsh": { + "type": "boolean", + "description": "Use PowerShell Core", + "ignoreCase": "key" + }, + "validateScriptSignature": { + "type": "boolean", + "description": "Validate script signature", + "ignoreCase": "key" + }, + "workingDirectory": { + "type": "string", + "description": "Working Directory", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "azureSubscription" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -6466,19 +6585,29 @@ "task": { "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", "ignoreCase": "value", - "pattern": "^AzurePowerShell@4$" + "pattern": "^AzurePowerShell@1$" }, "inputs": { "description": "Azure PowerShell inputs", "properties": { - "azureSubscription": { - "type": "string", - "description": "Azure Subscription", - "ignoreCase": "key", - "aliases": [ + "ConnectedServiceNameSelector": { + "description": "Azure Connection Type", + "ignoreCase": "all", + "enum": [ + "ConnectedServiceName", "ConnectedServiceNameARM" ] }, + "ConnectedServiceName": { + "type": "string", + "description": "Azure Classic Subscription", + "ignoreCase": "key" + }, + "ConnectedServiceNameARM": { + "type": "string", + "description": "Azure Subscription", + "ignoreCase": "key" + }, "ScriptType": { "description": "Script Type", "ignoreCase": "all", @@ -6501,65 +6630,10 @@ "type": "string", "description": "Script Arguments", "ignoreCase": "key" - }, - "errorActionPreference": { - "description": "ErrorActionPreference", - "ignoreCase": "all", - "enum": [ - "stop", - "continue", - "silentlyContinue" - ] - }, - "FailOnStandardError": { - "type": "boolean", - "description": "Fail on Standard Error", - "ignoreCase": "key" - }, - "RestrictContextToCurrentTask": { - "type": "boolean", - "description": "Restrict scope of context to current task", - "ignoreCase": "key" - }, - "azurePowerShellVersion": { - "description": "Azure PowerShell Version", - "ignoreCase": "all", - "enum": [ - "LatestVersion", - "OtherVersion" - ], - "aliases": [ - "TargetAzurePs" - ] - }, - "preferredAzurePowerShellVersion": { - "type": "string", - "description": "Preferred Azure PowerShell Version", - "ignoreCase": "key", - "aliases": [ - "CustomTargetAzurePs" - ] - }, - "pwsh": { - "type": "boolean", - "description": "Use PowerShell Core", - "ignoreCase": "key" - }, - "validateScriptSignature": { - "type": "boolean", - "description": "Validate script signature", - "ignoreCase": "key" - }, - "workingDirectory": { - "type": "string", - "description": "Working Directory", - "ignoreCase": "key" } }, "additionalProperties": false, - "required": [ - "azureSubscription" - ] + "required": [] } }, "doNotSuggest": false, @@ -6567,8 +6641,7 @@ "task" ], "required": [ - "task", - "inputs" + "task" ] }, { @@ -6676,70 +6749,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Azure PowerShell\n\nRun a PowerShell script within an Azure environment", - "ignoreCase": "value", - "pattern": "^AzurePowerShell@1$" - }, - "inputs": { - "description": "Azure PowerShell inputs", - "properties": { - "ConnectedServiceNameSelector": { - "description": "Azure Connection Type", - "ignoreCase": "all", - "enum": [ - "ConnectedServiceName", - "ConnectedServiceNameARM" - ] - }, - "ConnectedServiceName": { - "type": "string", - "description": "Azure Classic Subscription", - "ignoreCase": "key" - }, - "ConnectedServiceNameARM": { - "type": "string", - "description": "Azure Subscription", - "ignoreCase": "key" - }, - "ScriptType": { - "description": "Script Type", - "ignoreCase": "all", - "enum": [ - "FilePath", - "InlineScript" - ] - }, - "ScriptPath": { - "type": "string", - "description": "Script Path", - "ignoreCase": "key" - }, - "Inline": { - "type": "string", - "description": "Inline Script", - "ignoreCase": "key" - }, - "ScriptArguments": { - "type": "string", - "description": "Script Arguments", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -6898,7 +6907,7 @@ "task": { "description": "Maven\n\nBuild, test, and deploy with Apache Maven", "ignoreCase": "value", - "pattern": "^Maven@3$" + "pattern": "^Maven@4$" }, "inputs": { "description": "Maven inputs", @@ -7187,7 +7196,255 @@ "task": { "description": "Maven\n\nBuild, test, and deploy with Apache Maven", "ignoreCase": "value", - "pattern": "^Maven@4$" + "pattern": "^Maven@2$" + }, + "inputs": { + "description": "Maven inputs", + "properties": { + "mavenPomFile": { + "type": "string", + "description": "Maven POM file", + "ignoreCase": "key", + "aliases": [ + "mavenPOMFile" + ] + }, + "goals": { + "type": "string", + "description": "Goal(s)", + "ignoreCase": "key" + }, + "options": { + "type": "string", + "description": "Options", + "ignoreCase": "key" + }, + "publishJUnitResults": { + "type": "boolean", + "description": "Publish to Azure Pipelines", + "ignoreCase": "key" + }, + "testResultsFiles": { + "type": "string", + "description": "Test results files", + "ignoreCase": "key" + }, + "testRunTitle": { + "type": "string", + "description": "Test run title", + "ignoreCase": "key" + }, + "allowBrokenSymlinks": { + "type": "boolean", + "description": "Allow broken symbolic links", + "ignoreCase": "key", + "aliases": [ + "allowBrokenSymbolicLinks" + ] + }, + "codeCoverageToolOption": { + "description": "Code coverage tool", + "ignoreCase": "all", + "enum": [ + "None", + "Cobertura", + "JaCoCo" + ], + "aliases": [ + "codeCoverageTool" + ] + }, + "codeCoverageClassFilter": { + "type": "string", + "description": "Class inclusion/exclusion filters", + "ignoreCase": "key", + "aliases": [ + "classFilter" + ] + }, + "codeCoverageClassFilesDirectories": { + "type": "string", + "description": "Class files directories", + "ignoreCase": "key", + "aliases": [ + "classFilesDirectories" + ] + }, + "codeCoverageSourceDirectories": { + "type": "string", + "description": "Source files directories", + "ignoreCase": "key", + "aliases": [ + "srcDirectories" + ] + }, + "codeCoverageFailIfEmpty": { + "type": "boolean", + "description": "Fail when code coverage results are missing", + "ignoreCase": "key", + "aliases": [ + "failIfCoverageEmpty" + ] + }, + "codeCoverageRestoreOriginalPomXml": { + "type": "boolean", + "description": "Restore original pom.xml after task execution", + "ignoreCase": "key", + "aliases": [ + "restoreOriginalPomXml" + ] + }, + "javaHomeOption": { + "description": "Set JAVA_HOME by", + "ignoreCase": "all", + "enum": [ + "JDKVersion", + "Path" + ], + "aliases": [ + "javaHomeSelection" + ] + }, + "jdkVersionOption": { + "description": "JDK version", + "ignoreCase": "all", + "enum": [ + "default", + "1.17", + "1.11", + "1.10", + "1.9", + "1.8", + "1.7", + "1.6" + ], + "aliases": [ + "jdkVersion" + ] + }, + "jdkDirectory": { + "type": "string", + "description": "JDK path", + "ignoreCase": "key", + "aliases": [ + "jdkUserInputPath" + ] + }, + "jdkArchitectureOption": { + "description": "JDK architecture", + "ignoreCase": "all", + "enum": [ + "x86", + "x64" + ], + "aliases": [ + "jdkArchitecture" + ] + }, + "mavenVersionOption": { + "description": "Maven version", + "ignoreCase": "all", + "enum": [ + "Default", + "Path" + ], + "aliases": [ + "mavenVersionSelection" + ] + }, + "mavenDirectory": { + "type": "string", + "description": "Maven path", + "ignoreCase": "key", + "aliases": [ + "mavenPath" + ] + }, + "mavenSetM2Home": { + "type": "boolean", + "description": "Set M2_HOME variable", + "ignoreCase": "key" + }, + "mavenOptions": { + "type": "string", + "description": "Set MAVEN_OPTS to", + "ignoreCase": "key", + "aliases": [ + "mavenOpts" + ] + }, + "mavenAuthenticateFeed": { + "type": "boolean", + "description": "Authenticate with Artifacts feeds", + "ignoreCase": "key", + "aliases": [ + "mavenFeedAuthenticate" + ] + }, + "sonarQubeRunAnalysis": { + "type": "boolean", + "description": "Run SonarQube or SonarCloud analysis", + "ignoreCase": "key", + "aliases": [ + "sqAnalysisEnabled" + ] + }, + "isJacocoCoverageReportXML": { + "type": "boolean", + "description": "Use XML Jacoco reports for SonarQube analysis", + "ignoreCase": "key" + }, + "sqMavenPluginVersionChoice": { + "description": "SonarQube scanner for Maven version", + "ignoreCase": "all", + "enum": [ + "latest", + "pom" + ] + }, + "checkStyleRunAnalysis": { + "type": "boolean", + "description": "Run Checkstyle", + "ignoreCase": "key", + "aliases": [ + "checkstyleAnalysisEnabled" + ] + }, + "pmdRunAnalysis": { + "type": "boolean", + "description": "Run PMD", + "ignoreCase": "key", + "aliases": [ + "pmdAnalysisEnabled" + ] + }, + "findBugsRunAnalysis": { + "type": "boolean", + "description": "Run FindBugs", + "ignoreCase": "key", + "aliases": [ + "findbugsAnalysisEnabled" + ] + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, + { + "properties": { + "task": { + "description": "Maven\n\nBuild, test, and deploy with Apache Maven", + "ignoreCase": "value", + "pattern": "^Maven@3$" }, "inputs": { "description": "Maven inputs", @@ -7767,254 +8024,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Maven\n\nBuild, test, and deploy with Apache Maven", - "ignoreCase": "value", - "pattern": "^Maven@2$" - }, - "inputs": { - "description": "Maven inputs", - "properties": { - "mavenPomFile": { - "type": "string", - "description": "Maven POM file", - "ignoreCase": "key", - "aliases": [ - "mavenPOMFile" - ] - }, - "goals": { - "type": "string", - "description": "Goal(s)", - "ignoreCase": "key" - }, - "options": { - "type": "string", - "description": "Options", - "ignoreCase": "key" - }, - "publishJUnitResults": { - "type": "boolean", - "description": "Publish to Azure Pipelines", - "ignoreCase": "key" - }, - "testResultsFiles": { - "type": "string", - "description": "Test results files", - "ignoreCase": "key" - }, - "testRunTitle": { - "type": "string", - "description": "Test run title", - "ignoreCase": "key" - }, - "allowBrokenSymlinks": { - "type": "boolean", - "description": "Allow broken symbolic links", - "ignoreCase": "key", - "aliases": [ - "allowBrokenSymbolicLinks" - ] - }, - "codeCoverageToolOption": { - "description": "Code coverage tool", - "ignoreCase": "all", - "enum": [ - "None", - "Cobertura", - "JaCoCo" - ], - "aliases": [ - "codeCoverageTool" - ] - }, - "codeCoverageClassFilter": { - "type": "string", - "description": "Class inclusion/exclusion filters", - "ignoreCase": "key", - "aliases": [ - "classFilter" - ] - }, - "codeCoverageClassFilesDirectories": { - "type": "string", - "description": "Class files directories", - "ignoreCase": "key", - "aliases": [ - "classFilesDirectories" - ] - }, - "codeCoverageSourceDirectories": { - "type": "string", - "description": "Source files directories", - "ignoreCase": "key", - "aliases": [ - "srcDirectories" - ] - }, - "codeCoverageFailIfEmpty": { - "type": "boolean", - "description": "Fail when code coverage results are missing", - "ignoreCase": "key", - "aliases": [ - "failIfCoverageEmpty" - ] - }, - "codeCoverageRestoreOriginalPomXml": { - "type": "boolean", - "description": "Restore original pom.xml after task execution", - "ignoreCase": "key", - "aliases": [ - "restoreOriginalPomXml" - ] - }, - "javaHomeOption": { - "description": "Set JAVA_HOME by", - "ignoreCase": "all", - "enum": [ - "JDKVersion", - "Path" - ], - "aliases": [ - "javaHomeSelection" - ] - }, - "jdkVersionOption": { - "description": "JDK version", - "ignoreCase": "all", - "enum": [ - "default", - "1.17", - "1.11", - "1.10", - "1.9", - "1.8", - "1.7", - "1.6" - ], - "aliases": [ - "jdkVersion" - ] - }, - "jdkDirectory": { - "type": "string", - "description": "JDK path", - "ignoreCase": "key", - "aliases": [ - "jdkUserInputPath" - ] - }, - "jdkArchitectureOption": { - "description": "JDK architecture", - "ignoreCase": "all", - "enum": [ - "x86", - "x64" - ], - "aliases": [ - "jdkArchitecture" - ] - }, - "mavenVersionOption": { - "description": "Maven version", - "ignoreCase": "all", - "enum": [ - "Default", - "Path" - ], - "aliases": [ - "mavenVersionSelection" - ] - }, - "mavenDirectory": { - "type": "string", - "description": "Maven path", - "ignoreCase": "key", - "aliases": [ - "mavenPath" - ] - }, - "mavenSetM2Home": { - "type": "boolean", - "description": "Set M2_HOME variable", - "ignoreCase": "key" - }, - "mavenOptions": { - "type": "string", - "description": "Set MAVEN_OPTS to", - "ignoreCase": "key", - "aliases": [ - "mavenOpts" - ] - }, - "mavenAuthenticateFeed": { - "type": "boolean", - "description": "Authenticate with Artifacts feeds", - "ignoreCase": "key", - "aliases": [ - "mavenFeedAuthenticate" - ] - }, - "sonarQubeRunAnalysis": { - "type": "boolean", - "description": "Run SonarQube or SonarCloud analysis", - "ignoreCase": "key", - "aliases": [ - "sqAnalysisEnabled" - ] - }, - "isJacocoCoverageReportXML": { - "type": "boolean", - "description": "Use XML Jacoco reports for SonarQube analysis", - "ignoreCase": "key" - }, - "sqMavenPluginVersionChoice": { - "description": "SonarQube scanner for Maven version", - "ignoreCase": "all", - "enum": [ - "latest", - "pom" - ] - }, - "checkStyleRunAnalysis": { - "type": "boolean", - "description": "Run Checkstyle", - "ignoreCase": "key", - "aliases": [ - "checkstyleAnalysisEnabled" - ] - }, - "pmdRunAnalysis": { - "type": "boolean", - "description": "Run PMD", - "ignoreCase": "key", - "aliases": [ - "pmdAnalysisEnabled" - ] - }, - "findBugsRunAnalysis": { - "type": "boolean", - "description": "Run FindBugs", - "ignoreCase": "key", - "aliases": [ - "findbugsAnalysisEnabled" - ] - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -8046,7 +8055,7 @@ }, "projects": { "type": "string", - "description": "Path to project(s)", + "description": "Path to project(s) or solution(s)", "ignoreCase": "key" }, "custom": { @@ -8451,103 +8460,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Azure App Service Deploy\n\nUpdate Azure App Service using Web Deploy / Kudu REST APIs", - "ignoreCase": "value", - "pattern": "^AzureRmWebAppDeployment@2$" - }, - "inputs": { - "description": "Azure App Service Deploy inputs", - "properties": { - "ConnectedServiceName": { - "type": "string", - "description": "Azure Subscription", - "ignoreCase": "key" - }, - "WebAppName": { - "type": "string", - "description": "App Service name", - "ignoreCase": "key" - }, - "DeployToSlotFlag": { - "type": "boolean", - "description": "Deploy to slot", - "ignoreCase": "key" - }, - "ResourceGroupName": { - "type": "string", - "description": "Resource group", - "ignoreCase": "key" - }, - "SlotName": { - "type": "string", - "description": "Slot", - "ignoreCase": "key" - }, - "VirtualApplication": { - "type": "string", - "description": "Virtual Application", - "ignoreCase": "key" - }, - "Package": { - "type": "string", - "description": "Package or Folder", - "ignoreCase": "key" - }, - "WebAppUri": { - "type": "string", - "description": "App Service URL", - "ignoreCase": "key" - }, - "UseWebDeploy": { - "type": "boolean", - "description": "Publish using Web Deploy", - "ignoreCase": "key" - }, - "SetParametersFile": { - "type": "string", - "description": "SetParameters File", - "ignoreCase": "key" - }, - "RemoveAdditionalFilesFlag": { - "type": "boolean", - "description": "Remove Additional Files at Destination", - "ignoreCase": "key" - }, - "ExcludeFilesFromAppDataFlag": { - "type": "boolean", - "description": "Exclude Files from the App_Data Folder", - "ignoreCase": "key" - }, - "AdditionalArguments": { - "type": "string", - "description": "Additional Arguments", - "ignoreCase": "key" - }, - "TakeAppOfflineFlag": { - "type": "boolean", - "description": "Take App Offline", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "ConnectedServiceName", - "WebAppName" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -8795,6 +8707,103 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Azure App Service Deploy\n\nUpdate Azure App Service using Web Deploy / Kudu REST APIs", + "ignoreCase": "value", + "pattern": "^AzureRmWebAppDeployment@2$" + }, + "inputs": { + "description": "Azure App Service Deploy inputs", + "properties": { + "ConnectedServiceName": { + "type": "string", + "description": "Azure Subscription", + "ignoreCase": "key" + }, + "WebAppName": { + "type": "string", + "description": "App Service name", + "ignoreCase": "key" + }, + "DeployToSlotFlag": { + "type": "boolean", + "description": "Deploy to slot", + "ignoreCase": "key" + }, + "ResourceGroupName": { + "type": "string", + "description": "Resource group", + "ignoreCase": "key" + }, + "SlotName": { + "type": "string", + "description": "Slot", + "ignoreCase": "key" + }, + "VirtualApplication": { + "type": "string", + "description": "Virtual Application", + "ignoreCase": "key" + }, + "Package": { + "type": "string", + "description": "Package or Folder", + "ignoreCase": "key" + }, + "WebAppUri": { + "type": "string", + "description": "App Service URL", + "ignoreCase": "key" + }, + "UseWebDeploy": { + "type": "boolean", + "description": "Publish using Web Deploy", + "ignoreCase": "key" + }, + "SetParametersFile": { + "type": "string", + "description": "SetParameters File", + "ignoreCase": "key" + }, + "RemoveAdditionalFilesFlag": { + "type": "boolean", + "description": "Remove Additional Files at Destination", + "ignoreCase": "key" + }, + "ExcludeFilesFromAppDataFlag": { + "type": "boolean", + "description": "Exclude Files from the App_Data Folder", + "ignoreCase": "key" + }, + "AdditionalArguments": { + "type": "string", + "description": "Additional Arguments", + "ignoreCase": "key" + }, + "TakeAppOfflineFlag": { + "type": "boolean", + "description": "Take App Offline", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "ConnectedServiceName", + "WebAppName" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -9061,6 +9070,99 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "PowerShell on Target Machines\n\nExecute PowerShell scripts on remote machine(s)", + "ignoreCase": "value", + "pattern": "^PowerShellOnTargetMachines@1$" + }, + "inputs": { + "description": "PowerShell on Target Machines inputs", + "properties": { + "EnvironmentName": { + "type": "string", + "description": "Machines", + "ignoreCase": "key" + }, + "AdminUserName": { + "type": "string", + "description": "Admin Login", + "ignoreCase": "key" + }, + "AdminPassword": { + "type": "string", + "description": "Password", + "ignoreCase": "key" + }, + "Protocol": { + "description": "Protocol", + "ignoreCase": "all", + "enum": [ + "Http", + "Https" + ] + }, + "TestCertificate": { + "type": "boolean", + "description": "Test Certificate", + "ignoreCase": "key" + }, + "ScriptPath": { + "type": "string", + "description": "PowerShell Script", + "ignoreCase": "key" + }, + "ScriptArguments": { + "type": "string", + "description": "Script Arguments", + "ignoreCase": "key" + }, + "InitializationScriptPath": { + "type": "string", + "description": "Initialization Script", + "ignoreCase": "key" + }, + "SessionVariables": { + "type": "string", + "description": "Session Variables", + "ignoreCase": "key" + }, + "RunPowershellInParallel": { + "type": "boolean", + "description": "Run PowerShell in Parallel", + "ignoreCase": "key" + }, + "ResourceFilteringMethod": { + "description": "Select Machines By", + "ignoreCase": "all", + "enum": [ + "machineNames", + "tags" + ] + }, + "MachineNames": { + "type": "string", + "description": "Filter Criteria", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "EnvironmentName", + "ScriptPath" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -9185,99 +9287,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "PowerShell on Target Machines\n\nExecute PowerShell scripts on remote machine(s)", - "ignoreCase": "value", - "pattern": "^PowerShellOnTargetMachines@1$" - }, - "inputs": { - "description": "PowerShell on Target Machines inputs", - "properties": { - "EnvironmentName": { - "type": "string", - "description": "Machines", - "ignoreCase": "key" - }, - "AdminUserName": { - "type": "string", - "description": "Admin Login", - "ignoreCase": "key" - }, - "AdminPassword": { - "type": "string", - "description": "Password", - "ignoreCase": "key" - }, - "Protocol": { - "description": "Protocol", - "ignoreCase": "all", - "enum": [ - "Http", - "Https" - ] - }, - "TestCertificate": { - "type": "boolean", - "description": "Test Certificate", - "ignoreCase": "key" - }, - "ScriptPath": { - "type": "string", - "description": "PowerShell Script", - "ignoreCase": "key" - }, - "ScriptArguments": { - "type": "string", - "description": "Script Arguments", - "ignoreCase": "key" - }, - "InitializationScriptPath": { - "type": "string", - "description": "Initialization Script", - "ignoreCase": "key" - }, - "SessionVariables": { - "type": "string", - "description": "Session Variables", - "ignoreCase": "key" - }, - "RunPowershellInParallel": { - "type": "boolean", - "description": "Run PowerShell in Parallel", - "ignoreCase": "key" - }, - "ResourceFilteringMethod": { - "description": "Select Machines By", - "ignoreCase": "all", - "enum": [ - "machineNames", - "tags" - ] - }, - "MachineNames": { - "type": "string", - "description": "Filter Criteria", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "EnvironmentName", - "ScriptPath" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -9371,6 +9380,47 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Publish code coverage results v2\n\nPublish any of the code coverage results from a build", + "ignoreCase": "value", + "pattern": "^PublishCodeCoverageResults@2$" + }, + "inputs": { + "description": "Publish code coverage results v2 inputs", + "properties": { + "summaryFileLocation": { + "type": "string", + "description": "Path to summary files", + "ignoreCase": "key" + }, + "pathToSources": { + "type": "string", + "description": "Path to Source files", + "ignoreCase": "key" + }, + "failIfCoverageEmpty": { + "type": "boolean", + "description": "Fail if code coverage results are missing", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "summaryFileLocation" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -9430,47 +9480,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Publish code coverage results v2\n\nPublish any of the code coverage results from a build", - "ignoreCase": "value", - "pattern": "^PublishCodeCoverageResults@2$" - }, - "inputs": { - "description": "Publish code coverage results v2 inputs", - "properties": { - "summaryFileLocation": { - "type": "string", - "description": "Path to summary files", - "ignoreCase": "key" - }, - "pathToSources": { - "type": "string", - "description": "Path to Source files", - "ignoreCase": "key" - }, - "failIfCoverageEmpty": { - "type": "boolean", - "description": "Fail if code coverage results are missing", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "summaryFileLocation" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -9628,6 +9637,42 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Install Apple Provisioning Profile\n\nInstall an Apple provisioning profile required to build on a macOS agent", + "ignoreCase": "value", + "pattern": "^InstallAppleProvisioningProfile@0$" + }, + "inputs": { + "description": "Install Apple Provisioning Profile inputs", + "properties": { + "provProfileSecureFile": { + "type": "string", + "description": "Provisioning Profile", + "ignoreCase": "key" + }, + "removeProfile": { + "type": "boolean", + "description": "Remove Profile After Build", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "provProfileSecureFile" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -9674,42 +9719,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Install Apple Provisioning Profile\n\nInstall an Apple provisioning profile required to build on a macOS agent", - "ignoreCase": "value", - "pattern": "^InstallAppleProvisioningProfile@0$" - }, - "inputs": { - "description": "Install Apple Provisioning Profile inputs", - "properties": { - "provProfileSecureFile": { - "type": "string", - "description": "Provisioning Profile", - "ignoreCase": "key" - }, - "removeProfile": { - "type": "boolean", - "description": "Remove Profile After Build", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "provProfileSecureFile" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -10199,6 +10208,87 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Docker\n\nBuild or push Docker images, login or logout, start or stop containers, or run a Docker command", + "ignoreCase": "value", + "pattern": "^Docker@2$" + }, + "inputs": { + "description": "Docker inputs", + "properties": { + "containerRegistry": { + "type": "string", + "description": "Container registry", + "ignoreCase": "key" + }, + "repository": { + "type": "string", + "description": "Container repository", + "ignoreCase": "key" + }, + "command": { + "description": "Command", + "ignoreCase": "all", + "enum": [ + "buildAndPush", + "build", + "push", + "login", + "logout", + "start", + "stop" + ] + }, + "Dockerfile": { + "type": "string", + "description": "Dockerfile", + "ignoreCase": "key" + }, + "buildContext": { + "type": "string", + "description": "Build context", + "ignoreCase": "key" + }, + "tags": { + "type": "string", + "description": "Tags", + "ignoreCase": "key" + }, + "arguments": { + "type": "string", + "description": "Arguments", + "ignoreCase": "key" + }, + "addPipelineData": { + "type": "boolean", + "description": "Add Pipeline metadata to image(s)", + "ignoreCase": "key" + }, + "addBaseImageData": { + "type": "boolean", + "description": "Add base image metadata to image(s)", + "ignoreCase": "key" + }, + "container": { + "type": "string", + "description": "Container", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -10402,87 +10492,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Docker\n\nBuild or push Docker images, login or logout, start or stop containers, or run a Docker command", - "ignoreCase": "value", - "pattern": "^Docker@2$" - }, - "inputs": { - "description": "Docker inputs", - "properties": { - "containerRegistry": { - "type": "string", - "description": "Container registry", - "ignoreCase": "key" - }, - "repository": { - "type": "string", - "description": "Container repository", - "ignoreCase": "key" - }, - "command": { - "description": "Command", - "ignoreCase": "all", - "enum": [ - "buildAndPush", - "build", - "push", - "login", - "logout", - "start", - "stop" - ] - }, - "Dockerfile": { - "type": "string", - "description": "Dockerfile", - "ignoreCase": "key" - }, - "buildContext": { - "type": "string", - "description": "Build context", - "ignoreCase": "key" - }, - "tags": { - "type": "string", - "description": "Tags", - "ignoreCase": "key" - }, - "arguments": { - "type": "string", - "description": "Arguments", - "ignoreCase": "key" - }, - "addPipelineData": { - "type": "boolean", - "description": "Add Pipeline metadata to image(s)", - "ignoreCase": "key" - }, - "addBaseImageData": { - "type": "boolean", - "description": "Add base image metadata to image(s)", - "ignoreCase": "key" - }, - "container": { - "type": "string", - "description": "Container", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -10635,114 +10644,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "FTP upload\n\nUpload files using FTP", - "ignoreCase": "value", - "pattern": "^FtpUpload@2$" - }, - "inputs": { - "description": "FTP upload inputs", - "properties": { - "credentialsOption": { - "description": "Authentication Method", - "ignoreCase": "all", - "enum": [ - "serviceEndpoint", - "inputs" - ], - "aliases": [ - "credsType" - ] - }, - "serverEndpoint": { - "type": "string", - "description": "FTP Service Connection", - "ignoreCase": "key" - }, - "serverUrl": { - "type": "string", - "description": "Server URL", - "ignoreCase": "key" - }, - "username": { - "type": "string", - "description": "Username", - "ignoreCase": "key" - }, - "password": { - "type": "string", - "description": "Password", - "ignoreCase": "key" - }, - "rootDirectory": { - "type": "string", - "description": "Root folder", - "ignoreCase": "key", - "aliases": [ - "rootFolder" - ] - }, - "filePatterns": { - "type": "string", - "description": "File patterns", - "ignoreCase": "key" - }, - "remoteDirectory": { - "type": "string", - "description": "Remote directory", - "ignoreCase": "key", - "aliases": [ - "remotePath" - ] - }, - "enableUtf8": { - "type": "boolean", - "description": "Enable UTF8 support", - "ignoreCase": "key" - }, - "clean": { - "type": "boolean", - "description": "Delete remote directory", - "ignoreCase": "key" - }, - "cleanContents": { - "type": "boolean", - "description": "Clear remote directory contents", - "ignoreCase": "key" - }, - "preservePaths": { - "type": "boolean", - "description": "Preserve file paths", - "ignoreCase": "key" - }, - "trustSSL": { - "type": "boolean", - "description": "Trust server certificate", - "ignoreCase": "key" - }, - "customCmds": { - "type": "string", - "description": "FTP Commands", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "rootDirectory" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -10849,61 +10750,104 @@ { "properties": { "task": { - "description": "Windows machine file copy\n\nCopy files to remote Windows machines", + "description": "FTP upload\n\nUpload files using FTP", "ignoreCase": "value", - "pattern": "^WindowsMachineFileCopy@2$" + "pattern": "^FtpUpload@2$" }, "inputs": { - "description": "Windows machine file copy inputs", + "description": "FTP upload inputs", "properties": { - "SourcePath": { + "credentialsOption": { + "description": "Authentication Method", + "ignoreCase": "all", + "enum": [ + "serviceEndpoint", + "inputs" + ], + "aliases": [ + "credsType" + ] + }, + "serverEndpoint": { "type": "string", - "description": "Source", + "description": "FTP Service Connection", "ignoreCase": "key" }, - "MachineNames": { + "serverUrl": { "type": "string", - "description": "Machines", + "description": "Server URL", "ignoreCase": "key" }, - "AdminUserName": { + "username": { "type": "string", - "description": "Admin Login", + "description": "Username", "ignoreCase": "key" }, - "AdminPassword": { + "password": { "type": "string", "description": "Password", "ignoreCase": "key" }, - "TargetPath": { - "type": "string", - "description": "Destination Folder", - "ignoreCase": "key" - }, - "CleanTargetBeforeCopy": { + "implicitFTPS": { "type": "boolean", - "description": "Clean Target", + "description": "Use implicit FTPS", "ignoreCase": "key" }, - "CopyFilesInParallel": { - "type": "boolean", - "description": "Copy Files in Parallel", - "ignoreCase": "key" - }, - "AdditionalArguments": { + "rootDirectory": { "type": "string", - "description": "Additional Arguments", + "description": "Root folder", + "ignoreCase": "key", + "aliases": [ + "rootFolder" + ] + }, + "filePatterns": { + "type": "string", + "description": "File patterns", + "ignoreCase": "key" + }, + "remoteDirectory": { + "type": "string", + "description": "Remote directory", + "ignoreCase": "key", + "aliases": [ + "remotePath" + ] + }, + "enableUtf8": { + "type": "boolean", + "description": "Enable UTF8 support", + "ignoreCase": "key" + }, + "clean": { + "type": "boolean", + "description": "Delete remote directory", + "ignoreCase": "key" + }, + "cleanContents": { + "type": "boolean", + "description": "Clear remote directory contents", + "ignoreCase": "key" + }, + "preservePaths": { + "type": "boolean", + "description": "Preserve file paths", + "ignoreCase": "key" + }, + "trustSSL": { + "type": "boolean", + "description": "Trust server certificate", + "ignoreCase": "key" + }, + "customCmds": { + "type": "string", + "description": "FTP Commands", "ignoreCase": "key" } }, "additionalProperties": false, "required": [ - "SourcePath", - "MachineNames", - "AdminUserName", - "AdminPassword", - "TargetPath" + "rootDirectory" ] } }, @@ -10996,6 +10940,76 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Windows machine file copy\n\nCopy files to remote Windows machines", + "ignoreCase": "value", + "pattern": "^WindowsMachineFileCopy@2$" + }, + "inputs": { + "description": "Windows machine file copy inputs", + "properties": { + "SourcePath": { + "type": "string", + "description": "Source", + "ignoreCase": "key" + }, + "MachineNames": { + "type": "string", + "description": "Machines", + "ignoreCase": "key" + }, + "AdminUserName": { + "type": "string", + "description": "Admin Login", + "ignoreCase": "key" + }, + "AdminPassword": { + "type": "string", + "description": "Password", + "ignoreCase": "key" + }, + "TargetPath": { + "type": "string", + "description": "Destination Folder", + "ignoreCase": "key" + }, + "CleanTargetBeforeCopy": { + "type": "boolean", + "description": "Clean Target", + "ignoreCase": "key" + }, + "CopyFilesInParallel": { + "type": "boolean", + "description": "Copy Files in Parallel", + "ignoreCase": "key" + }, + "AdditionalArguments": { + "type": "string", + "description": "Additional Arguments", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "SourcePath", + "MachineNames", + "AdminUserName", + "AdminPassword", + "TargetPath" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -11095,45 +11109,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Python twine upload authenticate\n\nAuthenticate for uploading Python distributions using twine. Add '-r FeedName/EndpointName --config-file $(PYPIRC_PATH)' to your twine upload command. For feeds present in this organization, use the feed name as the repository (-r). Otherwise, use the endpoint name defined in the service connection.", - "ignoreCase": "value", - "pattern": "^TwineAuthenticate@1$" - }, - "inputs": { - "description": "Python twine upload authenticate inputs", - "properties": { - "artifactFeed": { - "type": "string", - "description": "My feed name (select below)", - "ignoreCase": "key", - "aliases": [ - "artifactFeed" - ] - }, - "pythonUploadServiceConnection": { - "type": "string", - "description": "Feed from external organizations", - "ignoreCase": "key", - "aliases": [ - "pythonUploadServiceConnection" - ] - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -11178,6 +11153,45 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Python twine upload authenticate\n\nAuthenticate for uploading Python distributions using twine. Add '-r FeedName/EndpointName --config-file $(PYPIRC_PATH)' to your twine upload command. For feeds present in this organization, use the feed name as the repository (-r). Otherwise, use the endpoint name defined in the service connection.", + "ignoreCase": "value", + "pattern": "^TwineAuthenticate@1$" + }, + "inputs": { + "description": "Python twine upload authenticate inputs", + "properties": { + "artifactFeed": { + "type": "string", + "description": "My feed name (select below)", + "ignoreCase": "key", + "aliases": [ + "artifactFeed" + ] + }, + "pythonUploadServiceConnection": { + "type": "string", + "description": "Feed from external organizations", + "ignoreCase": "key", + "aliases": [ + "pythonUploadServiceConnection" + ] + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -11320,34 +11334,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Helm tool installer\n\nInstall Helm on an agent machine", - "ignoreCase": "value", - "pattern": "^HelmInstaller@1$" - }, - "inputs": { - "description": "Helm tool installer inputs", - "properties": { - "helmVersionToInstall": { - "type": "string", - "description": "Helm Version Spec", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -11402,6 +11388,34 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Helm tool installer\n\nInstall Helm on an agent machine", + "ignoreCase": "value", + "pattern": "^HelmInstaller@1$" + }, + "inputs": { + "description": "Helm tool installer inputs", + "properties": { + "helmVersionToInstall": { + "type": "string", + "description": "Helm Version Spec", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -11834,112 +11848,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Azure Functions Deploy\n\nUpdate a function app with .NET, Python, JavaScript, PowerShell, Java based web applications", - "ignoreCase": "value", - "pattern": "^AzureFunctionApp@2$" - }, - "inputs": { - "description": "Azure Functions Deploy inputs", - "properties": { - "connectedServiceNameARM": { - "type": "string", - "description": "Azure Resource Manager connection", - "ignoreCase": "key", - "aliases": [ - "azureSubscription" - ] - }, - "appType": { - "description": "App type", - "ignoreCase": "all", - "enum": [ - "functionApp", - "functionAppLinux" - ] - }, - "appName": { - "type": "string", - "description": "Azure Functions App name", - "ignoreCase": "key" - }, - "deployToSlotOrASE": { - "type": "boolean", - "description": "Deploy to Slot or App Service Environment", - "ignoreCase": "key" - }, - "resourceGroupName": { - "type": "string", - "description": "Resource group", - "ignoreCase": "key" - }, - "slotName": { - "type": "string", - "description": "Slot", - "ignoreCase": "key" - }, - "package": { - "type": "string", - "description": "Package or folder", - "ignoreCase": "key" - }, - "runtimeStack": { - "description": "Runtime stack", - "ignoreCase": "all", - "enum": [ - "DOTNET|2.2", - "DOTNET|3.1", - "DOTNET|6.0", - "DOTNET-ISOLATED|7.0", - "JAVA|8", - "JAVA|11", - "NODE|8", - "NODE|10", - "NODE|12", - "NODE|14", - "NODE|16", - "NODE|18", - "PYTHON|3.6", - "PYTHON|3.7", - "PYTHON|3.8", - "PYTHON|3.9", - "PYTHON|3.10" - ] - }, - "appSettings": { - "type": "string", - "description": "App settings", - "ignoreCase": "key" - }, - "deploymentMethod": { - "description": "Deployment method", - "ignoreCase": "all", - "enum": [ - "auto", - "zipDeploy", - "runFromPackage" - ] - } - }, - "additionalProperties": false, - "required": [ - "connectedServiceNameARM", - "appType", - "appName" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -12055,6 +11963,112 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Azure Functions Deploy\n\nUpdate a function app with .NET, Python, JavaScript, PowerShell, Java based web applications", + "ignoreCase": "value", + "pattern": "^AzureFunctionApp@2$" + }, + "inputs": { + "description": "Azure Functions Deploy inputs", + "properties": { + "connectedServiceNameARM": { + "type": "string", + "description": "Azure Resource Manager connection", + "ignoreCase": "key", + "aliases": [ + "azureSubscription" + ] + }, + "appType": { + "description": "App type", + "ignoreCase": "all", + "enum": [ + "functionApp", + "functionAppLinux" + ] + }, + "appName": { + "type": "string", + "description": "Azure Functions App name", + "ignoreCase": "key" + }, + "deployToSlotOrASE": { + "type": "boolean", + "description": "Deploy to Slot or App Service Environment", + "ignoreCase": "key" + }, + "resourceGroupName": { + "type": "string", + "description": "Resource group", + "ignoreCase": "key" + }, + "slotName": { + "type": "string", + "description": "Slot", + "ignoreCase": "key" + }, + "package": { + "type": "string", + "description": "Package or folder", + "ignoreCase": "key" + }, + "runtimeStack": { + "description": "Runtime stack", + "ignoreCase": "all", + "enum": [ + "DOTNET|2.2", + "DOTNET|3.1", + "DOTNET|6.0", + "DOTNET-ISOLATED|7.0", + "JAVA|8", + "JAVA|11", + "NODE|8", + "NODE|10", + "NODE|12", + "NODE|14", + "NODE|16", + "NODE|18", + "PYTHON|3.6", + "PYTHON|3.7", + "PYTHON|3.8", + "PYTHON|3.9", + "PYTHON|3.10" + ] + }, + "appSettings": { + "type": "string", + "description": "App settings", + "ignoreCase": "key" + }, + "deploymentMethod": { + "description": "Deployment method", + "ignoreCase": "all", + "enum": [ + "auto", + "zipDeploy", + "runFromPackage" + ] + } + }, + "additionalProperties": false, + "required": [ + "connectedServiceNameARM", + "appType", + "appName" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -12204,6 +12218,147 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Build machine image\n\nBuild a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", + "ignoreCase": "value", + "pattern": "^PackerBuild@0$" + }, + "inputs": { + "description": "Build machine image inputs", + "properties": { + "templateType": { + "description": "Packer template", + "ignoreCase": "all", + "enum": [ + "builtin", + "custom" + ] + }, + "customTemplateLocation": { + "type": "string", + "description": "Packer template location", + "ignoreCase": "key" + }, + "customTemplateParameters": { + "type": "string", + "description": "Template parameters", + "ignoreCase": "key" + }, + "ConnectedServiceName": { + "type": "string", + "description": "Azure subscription", + "ignoreCase": "key" + }, + "location": { + "type": "string", + "description": "Storage location", + "ignoreCase": "key" + }, + "storageAccountName": { + "type": "string", + "description": "Storage account", + "ignoreCase": "key" + }, + "azureResourceGroup": { + "type": "string", + "description": "Resource group", + "ignoreCase": "key" + }, + "baseImageSource": { + "description": "Base image source", + "ignoreCase": "all", + "enum": [ + "default", + "customVhd" + ] + }, + "baseImage": { + "description": "Base image", + "ignoreCase": "all", + "enum": [ + "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:windows", + "MicrosoftWindowsServer:WindowsServer:2016-Datacenter:windows", + "MicrosoftWindowsServer:WindowsServer:2012-Datacenter:windows", + "MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:windows", + "Canonical:UbuntuServer:14.04.4-LTS:linux", + "Canonical:UbuntuServer:16.04-LTS:linux", + "RedHat:RHEL:7.2:linux", + "RedHat:RHEL:6.8:linux", + "OpenLogic:CentOS:7.2:linux", + "OpenLogic:CentOS:6.8:linux", + "credativ:Debian:8:linux", + "credativ:Debian:7:linux", + "SUSE:openSUSE-Leap:42.2:linux", + "SUSE:SLES:12-SP2:linux", + "SUSE:SLES:11-SP4:linux" + ] + }, + "customImageUrl": { + "type": "string", + "description": "Base image URL", + "ignoreCase": "key" + }, + "customImageOSType": { + "description": "Base image OS", + "ignoreCase": "all", + "enum": [ + "windows", + "linux" + ] + }, + "packagePath": { + "type": "string", + "description": "Deployment Package", + "ignoreCase": "key" + }, + "deployScriptPath": { + "type": "string", + "description": "Deployment script", + "ignoreCase": "key" + }, + "deployScriptArguments": { + "type": "string", + "description": "Deployment script arguments", + "ignoreCase": "key" + }, + "additionalBuilderParameters": { + "type": "string", + "description": "Additional Builder parameters", + "ignoreCase": "key" + }, + "skipTempFileCleanupDuringVMDeprovision": { + "type": "boolean", + "description": "Skip temporary file cleanup during deprovision", + "ignoreCase": "key" + }, + "imageUri": { + "type": "string", + "description": "Image URL", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "ConnectedServiceName", + "location", + "storageAccountName", + "azureResourceGroup", + "packagePath", + "deployScriptPath" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -12366,147 +12521,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Build machine image\n\nBuild a machine image using Packer, which may be used for Azure Virtual machine scale set deployment", - "ignoreCase": "value", - "pattern": "^PackerBuild@0$" - }, - "inputs": { - "description": "Build machine image inputs", - "properties": { - "templateType": { - "description": "Packer template", - "ignoreCase": "all", - "enum": [ - "builtin", - "custom" - ] - }, - "customTemplateLocation": { - "type": "string", - "description": "Packer template location", - "ignoreCase": "key" - }, - "customTemplateParameters": { - "type": "string", - "description": "Template parameters", - "ignoreCase": "key" - }, - "ConnectedServiceName": { - "type": "string", - "description": "Azure subscription", - "ignoreCase": "key" - }, - "location": { - "type": "string", - "description": "Storage location", - "ignoreCase": "key" - }, - "storageAccountName": { - "type": "string", - "description": "Storage account", - "ignoreCase": "key" - }, - "azureResourceGroup": { - "type": "string", - "description": "Resource group", - "ignoreCase": "key" - }, - "baseImageSource": { - "description": "Base image source", - "ignoreCase": "all", - "enum": [ - "default", - "customVhd" - ] - }, - "baseImage": { - "description": "Base image", - "ignoreCase": "all", - "enum": [ - "MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:windows", - "MicrosoftWindowsServer:WindowsServer:2016-Datacenter:windows", - "MicrosoftWindowsServer:WindowsServer:2012-Datacenter:windows", - "MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:windows", - "Canonical:UbuntuServer:14.04.4-LTS:linux", - "Canonical:UbuntuServer:16.04-LTS:linux", - "RedHat:RHEL:7.2:linux", - "RedHat:RHEL:6.8:linux", - "OpenLogic:CentOS:7.2:linux", - "OpenLogic:CentOS:6.8:linux", - "credativ:Debian:8:linux", - "credativ:Debian:7:linux", - "SUSE:openSUSE-Leap:42.2:linux", - "SUSE:SLES:12-SP2:linux", - "SUSE:SLES:11-SP4:linux" - ] - }, - "customImageUrl": { - "type": "string", - "description": "Base image URL", - "ignoreCase": "key" - }, - "customImageOSType": { - "description": "Base image OS", - "ignoreCase": "all", - "enum": [ - "windows", - "linux" - ] - }, - "packagePath": { - "type": "string", - "description": "Deployment Package", - "ignoreCase": "key" - }, - "deployScriptPath": { - "type": "string", - "description": "Deployment script", - "ignoreCase": "key" - }, - "deployScriptArguments": { - "type": "string", - "description": "Deployment script arguments", - "ignoreCase": "key" - }, - "additionalBuilderParameters": { - "type": "string", - "description": "Additional Builder parameters", - "ignoreCase": "key" - }, - "skipTempFileCleanupDuringVMDeprovision": { - "type": "boolean", - "description": "Skip temporary file cleanup during deprovision", - "ignoreCase": "key" - }, - "imageUri": { - "type": "string", - "description": "Image URL", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "ConnectedServiceName", - "location", - "storageAccountName", - "azureResourceGroup", - "packagePath", - "deployScriptPath" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -12950,6 +12964,118 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Notation\n\nAzure Pipepine Task for setting up Notation CLI, sign and verify with Notation", + "ignoreCase": "value", + "pattern": "^Notation@0$" + }, + "inputs": { + "description": "Notation inputs", + "properties": { + "command": { + "description": "Command to run", + "ignoreCase": "all", + "enum": [ + "install", + "sign", + "verify" + ] + }, + "isCustomVersion": { + "type": "boolean", + "description": "Custom Version", + "ignoreCase": "key" + }, + "version": { + "type": "string", + "description": "Version", + "ignoreCase": "key" + }, + "url": { + "type": "string", + "description": "Download URL", + "ignoreCase": "key" + }, + "checksum": { + "type": "string", + "description": "Checksum", + "ignoreCase": "key" + }, + "artifactRefs": { + "type": "string", + "description": "Artifact references", + "ignoreCase": "key" + }, + "signatureFormat": { + "description": "Signature Format", + "ignoreCase": "all", + "enum": [ + "cose", + "jws" + ] + }, + "allowReferrersAPI": { + "type": "boolean", + "description": "[Experimental] Allow Referrers API", + "ignoreCase": "key" + }, + "plugin": { + "description": "Plugin", + "ignoreCase": "all", + "enum": [ + "azureKeyVault" + ] + }, + "akvPluginVersion": { + "type": "string", + "description": "Plugin Version", + "ignoreCase": "key" + }, + "azurekvServiceConection": { + "type": "string", + "description": "Azure Key Vault service connection", + "ignoreCase": "key" + }, + "keyid": { + "type": "string", + "description": "Key ID", + "ignoreCase": "key" + }, + "caCertBundle": { + "type": "string", + "description": "Certificate Bundle File Path", + "ignoreCase": "key" + }, + "selfSigned": { + "type": "boolean", + "description": "Self-signed Certificate", + "ignoreCase": "key" + }, + "trustPolicy": { + "type": "string", + "description": "Trust Policy File Path", + "ignoreCase": "key" + }, + "trustStore": { + "type": "string", + "description": "Trust Store Folder Path", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -15017,6 +15143,238 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Mobile Center Test\n\nTest mobile app packages with Visual Studio Mobile Center.", + "ignoreCase": "value", + "pattern": "^VSMobileCenterTest@0$" + }, + "inputs": { + "description": "Mobile Center Test inputs", + "properties": { + "app": { + "type": "string", + "description": "Binary Application File Path", + "ignoreCase": "key" + }, + "artifactsDir": { + "type": "string", + "description": "Artifacts Directory", + "ignoreCase": "key" + }, + "enablePrepare": { + "type": "boolean", + "description": "Prepare Tests", + "ignoreCase": "key" + }, + "framework": { + "description": "Test Framework", + "ignoreCase": "all", + "enum": [ + "appium", + "espresso", + "calabash", + "uitest", + "xcuitest" + ] + }, + "appiumBuildDir": { + "type": "string", + "description": "Build Directory", + "ignoreCase": "key" + }, + "espressoBuildDir": { + "type": "string", + "description": "Build Directory", + "ignoreCase": "key" + }, + "espressoTestApkPath": { + "type": "string", + "description": "Test APK Path", + "ignoreCase": "key" + }, + "calabashProjectDir": { + "type": "string", + "description": "Project Directory", + "ignoreCase": "key" + }, + "calabashConfigFile": { + "type": "string", + "description": "Cucumber Config File", + "ignoreCase": "key" + }, + "calabashProfile": { + "type": "string", + "description": "Profile to run", + "ignoreCase": "key" + }, + "calabashSkipConfigCheck": { + "type": "boolean", + "description": "Skip Configuration Check", + "ignoreCase": "key" + }, + "uitestBuildDir": { + "type": "string", + "description": "Build Directory", + "ignoreCase": "key" + }, + "uitestStoreFile": { + "type": "string", + "description": "Store File", + "ignoreCase": "key" + }, + "uitestStorePass": { + "type": "string", + "description": "Store Password", + "ignoreCase": "key" + }, + "uitestKeyAlias": { + "type": "string", + "description": "Key Alias", + "ignoreCase": "key" + }, + "uitestKeyPass": { + "type": "string", + "description": "Key Password", + "ignoreCase": "key" + }, + "uitestToolsDir": { + "type": "string", + "description": "Test Tools Directory", + "ignoreCase": "key" + }, + "signInfo": { + "type": "string", + "description": "Signing Information", + "ignoreCase": "key" + }, + "xcuitestBuildDir": { + "type": "string", + "description": "Build Directory", + "ignoreCase": "key" + }, + "xcuitestTestIpaPath": { + "type": "string", + "description": "Test IPA Path", + "ignoreCase": "key" + }, + "prepareOpts": { + "type": "string", + "description": "Additional Options", + "ignoreCase": "key" + }, + "enableRun": { + "type": "boolean", + "description": "Run Tests", + "ignoreCase": "key" + }, + "credsType": { + "description": "Authentication Method", + "ignoreCase": "all", + "enum": [ + "serviceEndpoint", + "inputs" + ] + }, + "serverEndpoint": { + "type": "string", + "description": "Mobile Center Connection", + "ignoreCase": "key" + }, + "username": { + "type": "string", + "description": "Mobile Center Username", + "ignoreCase": "key" + }, + "password": { + "type": "string", + "description": "Mobile Center Password", + "ignoreCase": "key" + }, + "appSlug": { + "type": "string", + "description": "App Slug", + "ignoreCase": "key" + }, + "devices": { + "type": "string", + "description": "Devices", + "ignoreCase": "key" + }, + "series": { + "type": "string", + "description": "Test Series", + "ignoreCase": "key" + }, + "dsymDir": { + "type": "string", + "description": "dSYM Directory", + "ignoreCase": "key" + }, + "locale": { + "description": "System Language", + "ignoreCase": "all", + "enum": [ + "da_DK", + "nl_NL", + "en_GB", + "en_US", + "fr_FR", + "de_DE", + "ja_JP", + "ru_RU", + "es_MX", + "es_ES", + "user" + ] + }, + "userDefinedLocale": { + "type": "string", + "description": "Other Locale", + "ignoreCase": "key" + }, + "loginOpts": { + "type": "string", + "description": "Addtional Options for Login", + "ignoreCase": "key" + }, + "runOpts": { + "type": "string", + "description": "Additional Options for Run", + "ignoreCase": "key" + }, + "async": { + "type": "boolean", + "description": "Do not wait for test result", + "ignoreCase": "key" + }, + "cliLocationOverride": { + "type": "string", + "description": "mobile-center CLI Location", + "ignoreCase": "key" + }, + "debug": { + "type": "boolean", + "description": "Enable Debug Output", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "app" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -15321,238 +15679,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Mobile Center Test\n\nTest mobile app packages with Visual Studio Mobile Center.", - "ignoreCase": "value", - "pattern": "^VSMobileCenterTest@0$" - }, - "inputs": { - "description": "Mobile Center Test inputs", - "properties": { - "app": { - "type": "string", - "description": "Binary Application File Path", - "ignoreCase": "key" - }, - "artifactsDir": { - "type": "string", - "description": "Artifacts Directory", - "ignoreCase": "key" - }, - "enablePrepare": { - "type": "boolean", - "description": "Prepare Tests", - "ignoreCase": "key" - }, - "framework": { - "description": "Test Framework", - "ignoreCase": "all", - "enum": [ - "appium", - "espresso", - "calabash", - "uitest", - "xcuitest" - ] - }, - "appiumBuildDir": { - "type": "string", - "description": "Build Directory", - "ignoreCase": "key" - }, - "espressoBuildDir": { - "type": "string", - "description": "Build Directory", - "ignoreCase": "key" - }, - "espressoTestApkPath": { - "type": "string", - "description": "Test APK Path", - "ignoreCase": "key" - }, - "calabashProjectDir": { - "type": "string", - "description": "Project Directory", - "ignoreCase": "key" - }, - "calabashConfigFile": { - "type": "string", - "description": "Cucumber Config File", - "ignoreCase": "key" - }, - "calabashProfile": { - "type": "string", - "description": "Profile to run", - "ignoreCase": "key" - }, - "calabashSkipConfigCheck": { - "type": "boolean", - "description": "Skip Configuration Check", - "ignoreCase": "key" - }, - "uitestBuildDir": { - "type": "string", - "description": "Build Directory", - "ignoreCase": "key" - }, - "uitestStoreFile": { - "type": "string", - "description": "Store File", - "ignoreCase": "key" - }, - "uitestStorePass": { - "type": "string", - "description": "Store Password", - "ignoreCase": "key" - }, - "uitestKeyAlias": { - "type": "string", - "description": "Key Alias", - "ignoreCase": "key" - }, - "uitestKeyPass": { - "type": "string", - "description": "Key Password", - "ignoreCase": "key" - }, - "uitestToolsDir": { - "type": "string", - "description": "Test Tools Directory", - "ignoreCase": "key" - }, - "signInfo": { - "type": "string", - "description": "Signing Information", - "ignoreCase": "key" - }, - "xcuitestBuildDir": { - "type": "string", - "description": "Build Directory", - "ignoreCase": "key" - }, - "xcuitestTestIpaPath": { - "type": "string", - "description": "Test IPA Path", - "ignoreCase": "key" - }, - "prepareOpts": { - "type": "string", - "description": "Additional Options", - "ignoreCase": "key" - }, - "enableRun": { - "type": "boolean", - "description": "Run Tests", - "ignoreCase": "key" - }, - "credsType": { - "description": "Authentication Method", - "ignoreCase": "all", - "enum": [ - "serviceEndpoint", - "inputs" - ] - }, - "serverEndpoint": { - "type": "string", - "description": "Mobile Center Connection", - "ignoreCase": "key" - }, - "username": { - "type": "string", - "description": "Mobile Center Username", - "ignoreCase": "key" - }, - "password": { - "type": "string", - "description": "Mobile Center Password", - "ignoreCase": "key" - }, - "appSlug": { - "type": "string", - "description": "App Slug", - "ignoreCase": "key" - }, - "devices": { - "type": "string", - "description": "Devices", - "ignoreCase": "key" - }, - "series": { - "type": "string", - "description": "Test Series", - "ignoreCase": "key" - }, - "dsymDir": { - "type": "string", - "description": "dSYM Directory", - "ignoreCase": "key" - }, - "locale": { - "description": "System Language", - "ignoreCase": "all", - "enum": [ - "da_DK", - "nl_NL", - "en_GB", - "en_US", - "fr_FR", - "de_DE", - "ja_JP", - "ru_RU", - "es_MX", - "es_ES", - "user" - ] - }, - "userDefinedLocale": { - "type": "string", - "description": "Other Locale", - "ignoreCase": "key" - }, - "loginOpts": { - "type": "string", - "description": "Addtional Options for Login", - "ignoreCase": "key" - }, - "runOpts": { - "type": "string", - "description": "Additional Options for Run", - "ignoreCase": "key" - }, - "async": { - "type": "boolean", - "description": "Do not wait for test result", - "ignoreCase": "key" - }, - "cliLocationOverride": { - "type": "string", - "description": "mobile-center CLI Location", - "ignoreCase": "key" - }, - "debug": { - "type": "boolean", - "description": "Enable Debug Output", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "app" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -16556,6 +16682,44 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Command line\n\nRun a command line script using Bash on Linux and macOS and cmd.exe on Windows", + "ignoreCase": "value", + "pattern": "^CmdLine@2$" + }, + "inputs": { + "description": "Command line inputs", + "properties": { + "script": { + "type": "string", + "description": "Script", + "ignoreCase": "key" + }, + "workingDirectory": { + "type": "string", + "description": "Working Directory", + "ignoreCase": "key" + }, + "failOnStderr": { + "type": "boolean", + "description": "Fail on Standard Error", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -16602,44 +16766,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Command line\n\nRun a command line script using Bash on Linux and macOS and cmd.exe on Windows", - "ignoreCase": "value", - "pattern": "^CmdLine@2$" - }, - "inputs": { - "description": "Command line inputs", - "properties": { - "script": { - "type": "string", - "description": "Script", - "ignoreCase": "key" - }, - "workingDirectory": { - "type": "string", - "description": "Working Directory", - "ignoreCase": "key" - }, - "failOnStderr": { - "type": "boolean", - "description": "Fail on Standard Error", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -16725,6 +16851,83 @@ "task" ] }, + { + "properties": { + "task": { + "description": "NuGet Installer\n\nInstalls or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", + "ignoreCase": "value", + "pattern": "^NuGetInstaller@0$" + }, + "inputs": { + "description": "NuGet Installer inputs", + "properties": { + "solution": { + "type": "string", + "description": "Path to solution or packages.config", + "ignoreCase": "key" + }, + "nugetConfigPath": { + "type": "string", + "description": "Path to NuGet.config", + "ignoreCase": "key" + }, + "restoreMode": { + "description": "Installation type", + "ignoreCase": "all", + "enum": [ + "restore", + "install" + ] + }, + "noCache": { + "type": "boolean", + "description": "Disable local cache", + "ignoreCase": "key" + }, + "nuGetRestoreArgs": { + "type": "string", + "description": "NuGet arguments", + "ignoreCase": "key" + }, + "verbosity": { + "description": "Verbosity", + "ignoreCase": "all", + "enum": [ + "-", + "Quiet", + "Normal", + "Detailed" + ] + }, + "nuGetVersion": { + "description": "NuGet Version", + "ignoreCase": "all", + "enum": [ + "3.3.0", + "3.5.0.1829", + "4.0.0.2283", + "custom" + ] + }, + "nuGetPath": { + "type": "string", + "description": "Path to NuGet.exe", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "deprecationMessage": "NuGetInstaller is deprecated - Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", + "doNotSuggest": true, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -17063,83 +17266,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "NuGet Installer\n\nInstalls or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", - "ignoreCase": "value", - "pattern": "^NuGetInstaller@0$" - }, - "inputs": { - "description": "NuGet Installer inputs", - "properties": { - "solution": { - "type": "string", - "description": "Path to solution or packages.config", - "ignoreCase": "key" - }, - "nugetConfigPath": { - "type": "string", - "description": "Path to NuGet.config", - "ignoreCase": "key" - }, - "restoreMode": { - "description": "Installation type", - "ignoreCase": "all", - "enum": [ - "restore", - "install" - ] - }, - "noCache": { - "type": "boolean", - "description": "Disable local cache", - "ignoreCase": "key" - }, - "nuGetRestoreArgs": { - "type": "string", - "description": "NuGet arguments", - "ignoreCase": "key" - }, - "verbosity": { - "description": "Verbosity", - "ignoreCase": "all", - "enum": [ - "-", - "Quiet", - "Normal", - "Detailed" - ] - }, - "nuGetVersion": { - "description": "NuGet Version", - "ignoreCase": "all", - "enum": [ - "3.3.0", - "3.5.0.1829", - "4.0.0.2283", - "custom" - ] - }, - "nuGetPath": { - "type": "string", - "description": "Path to NuGet.exe", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "deprecationMessage": "NuGetInstaller is deprecated - Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.", - "doNotSuggest": true, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -17168,103 +17294,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Xamarin.iOS\n\nBuild an iOS app with Xamarin on macOS", - "ignoreCase": "value", - "pattern": "^XamariniOS@2$" - }, - "inputs": { - "description": "Xamarin.iOS inputs", - "properties": { - "solutionFile": { - "type": "string", - "description": "Solution", - "ignoreCase": "key", - "aliases": [ - "solution" - ] - }, - "configuration": { - "type": "string", - "description": "Configuration", - "ignoreCase": "key" - }, - "clean": { - "type": "boolean", - "description": "Clean", - "ignoreCase": "key" - }, - "packageApp": { - "type": "boolean", - "description": "Create app package", - "ignoreCase": "key" - }, - "buildForSimulator": { - "type": "boolean", - "description": "Build for iOS Simulator", - "ignoreCase": "key", - "aliases": [ - "forSimulator" - ] - }, - "runNugetRestore": { - "type": "boolean", - "description": "Run NuGet restore", - "ignoreCase": "key" - }, - "args": { - "type": "string", - "description": "Arguments", - "ignoreCase": "key" - }, - "workingDirectory": { - "type": "string", - "description": "Working directory", - "ignoreCase": "key", - "aliases": [ - "cwd" - ] - }, - "mdtoolFile": { - "type": "string", - "description": "Build tool path", - "ignoreCase": "key", - "aliases": [ - "buildToolLocation", - "mdtoolLocation" - ] - }, - "signingIdentity": { - "type": "string", - "description": "Signing identity", - "ignoreCase": "key", - "aliases": [ - "iosSigningIdentity" - ] - }, - "signingProvisioningProfileID": { - "type": "string", - "description": "Provisioning profile UUID", - "ignoreCase": "key", - "aliases": [ - "provProfileUuid" - ] - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -17431,6 +17460,103 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Xamarin.iOS\n\nBuild an iOS app with Xamarin on macOS", + "ignoreCase": "value", + "pattern": "^XamariniOS@2$" + }, + "inputs": { + "description": "Xamarin.iOS inputs", + "properties": { + "solutionFile": { + "type": "string", + "description": "Solution", + "ignoreCase": "key", + "aliases": [ + "solution" + ] + }, + "configuration": { + "type": "string", + "description": "Configuration", + "ignoreCase": "key" + }, + "clean": { + "type": "boolean", + "description": "Clean", + "ignoreCase": "key" + }, + "packageApp": { + "type": "boolean", + "description": "Create app package", + "ignoreCase": "key" + }, + "buildForSimulator": { + "type": "boolean", + "description": "Build for iOS Simulator", + "ignoreCase": "key", + "aliases": [ + "forSimulator" + ] + }, + "runNugetRestore": { + "type": "boolean", + "description": "Run NuGet restore", + "ignoreCase": "key" + }, + "args": { + "type": "string", + "description": "Arguments", + "ignoreCase": "key" + }, + "workingDirectory": { + "type": "string", + "description": "Working directory", + "ignoreCase": "key", + "aliases": [ + "cwd" + ] + }, + "mdtoolFile": { + "type": "string", + "description": "Build tool path", + "ignoreCase": "key", + "aliases": [ + "buildToolLocation", + "mdtoolLocation" + ] + }, + "signingIdentity": { + "type": "string", + "description": "Signing identity", + "ignoreCase": "key", + "aliases": [ + "iosSigningIdentity" + ] + }, + "signingProvisioningProfileID": { + "type": "string", + "description": "Provisioning profile UUID", + "ignoreCase": "key", + "aliases": [ + "provProfileUuid" + ] + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -17538,6 +17664,16 @@ "description": "Fail if there are test failures", "ignoreCase": "key" }, + "failTaskOnFailureToPublishResults": { + "type": "boolean", + "description": "Fail if there is failure in publishing test results", + "ignoreCase": "key" + }, + "failTaskOnMissingResultsFile": { + "type": "boolean", + "description": "Fail if no result files are found", + "ignoreCase": "key" + }, "testRunTitle": { "type": "string", "description": "Test run title", @@ -17577,322 +17713,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", - "ignoreCase": "value", - "pattern": "^AzureFileCopy@2$" - }, - "inputs": { - "description": "Azure file copy inputs", - "properties": { - "SourcePath": { - "type": "string", - "description": "Source", - "ignoreCase": "key" - }, - "azureConnectionType": { - "description": "Azure Connection Type", - "ignoreCase": "all", - "enum": [ - "ConnectedServiceName", - "ConnectedServiceNameARM" - ], - "aliases": [ - "ConnectedServiceNameSelector" - ] - }, - "azureClassicSubscription": { - "type": "string", - "description": "Azure Classic Subscription", - "ignoreCase": "key", - "aliases": [ - "ConnectedServiceName" - ] - }, - "azureSubscription": { - "type": "string", - "description": "Azure Subscription", - "ignoreCase": "key", - "aliases": [ - "ConnectedServiceNameARM" - ] - }, - "Destination": { - "description": "Destination Type", - "ignoreCase": "all", - "enum": [ - "AzureBlob", - "AzureVMs" - ] - }, - "classicStorage": { - "type": "string", - "description": "Classic Storage Account", - "ignoreCase": "key", - "aliases": [ - "StorageAccount" - ] - }, - "storage": { - "type": "string", - "description": "RM Storage Account", - "ignoreCase": "key", - "aliases": [ - "StorageAccountRM" - ] - }, - "ContainerName": { - "type": "string", - "description": "Container Name", - "ignoreCase": "key" - }, - "BlobPrefix": { - "type": "string", - "description": "Blob Prefix", - "ignoreCase": "key" - }, - "cloudService": { - "type": "string", - "description": "Cloud Service", - "ignoreCase": "key", - "aliases": [ - "EnvironmentName" - ] - }, - "resourceGroup": { - "type": "string", - "description": "Resource Group", - "ignoreCase": "key", - "aliases": [ - "EnvironmentNameRM" - ] - }, - "ResourceFilteringMethod": { - "description": "Select Machines By", - "ignoreCase": "all", - "enum": [ - "machineNames", - "tags" - ] - }, - "MachineNames": { - "type": "string", - "description": "Filter Criteria", - "ignoreCase": "key" - }, - "vmsAdminUserName": { - "type": "string", - "description": "Admin Login", - "ignoreCase": "key" - }, - "vmsAdminPassword": { - "type": "string", - "description": "Password", - "ignoreCase": "key" - }, - "TargetPath": { - "type": "string", - "description": "Destination Folder", - "ignoreCase": "key" - }, - "AdditionalArgumentsForBlobCopy": { - "type": "string", - "description": "Optional Arguments (for uploading files to blob)", - "ignoreCase": "key" - }, - "AdditionalArgumentsForVMCopy": { - "type": "string", - "description": "Optional Arguments (for downloading files to VM)", - "ignoreCase": "key" - }, - "enableCopyPrerequisites": { - "type": "boolean", - "description": "Enable Copy Prerequisites", - "ignoreCase": "key" - }, - "CopyFilesInParallel": { - "type": "boolean", - "description": "Copy in Parallel", - "ignoreCase": "key" - }, - "CleanTargetBeforeCopy": { - "type": "boolean", - "description": "Clean Target", - "ignoreCase": "key" - }, - "skipCACheck": { - "type": "boolean", - "description": "Test Certificate", - "ignoreCase": "key" - }, - "outputStorageUri": { - "type": "string", - "description": "Storage Container URI", - "ignoreCase": "key" - }, - "outputStorageContainerSasToken": { - "type": "string", - "description": "Storage Container SAS Token", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "SourcePath", - "Destination" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, - { - "properties": { - "task": { - "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", - "ignoreCase": "value", - "pattern": "^AzureFileCopy@4$" - }, - "inputs": { - "description": "Azure file copy inputs", - "properties": { - "SourcePath": { - "type": "string", - "description": "Source", - "ignoreCase": "key" - }, - "azureSubscription": { - "type": "string", - "description": "Azure Subscription", - "ignoreCase": "key", - "aliases": [ - "ConnectedServiceNameARM" - ] - }, - "Destination": { - "description": "Destination Type", - "ignoreCase": "all", - "enum": [ - "AzureBlob", - "AzureVMs" - ] - }, - "storage": { - "type": "string", - "description": "RM Storage Account", - "ignoreCase": "key", - "aliases": [ - "StorageAccountRM" - ] - }, - "ContainerName": { - "type": "string", - "description": "Container Name", - "ignoreCase": "key" - }, - "BlobPrefix": { - "type": "string", - "description": "Blob Prefix", - "ignoreCase": "key" - }, - "resourceGroup": { - "type": "string", - "description": "Resource Group", - "ignoreCase": "key", - "aliases": [ - "EnvironmentNameRM" - ] - }, - "ResourceFilteringMethod": { - "description": "Select Machines By", - "ignoreCase": "all", - "enum": [ - "machineNames", - "tags" - ] - }, - "MachineNames": { - "type": "string", - "description": "Filter Criteria", - "ignoreCase": "key" - }, - "vmsAdminUserName": { - "type": "string", - "description": "Admin Login", - "ignoreCase": "key" - }, - "vmsAdminPassword": { - "type": "string", - "description": "Password", - "ignoreCase": "key" - }, - "TargetPath": { - "type": "string", - "description": "Destination Folder", - "ignoreCase": "key" - }, - "AdditionalArgumentsForBlobCopy": { - "type": "string", - "description": "Optional Arguments (for uploading files to blob)", - "ignoreCase": "key" - }, - "AdditionalArgumentsForVMCopy": { - "type": "string", - "description": "Optional Arguments (for downloading files to VM)", - "ignoreCase": "key" - }, - "sasTokenTimeOutInMinutes": { - "type": "string", - "description": "SAS Token Expiration Period In Minutes", - "ignoreCase": "key" - }, - "enableCopyPrerequisites": { - "type": "boolean", - "description": "Enable Copy Prerequisites", - "ignoreCase": "key" - }, - "CopyFilesInParallel": { - "type": "boolean", - "description": "Copy in Parallel", - "ignoreCase": "key" - }, - "CleanTargetBeforeCopy": { - "type": "boolean", - "description": "Clean Target", - "ignoreCase": "key" - }, - "skipCACheck": { - "type": "boolean", - "description": "Test Certificate", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "SourcePath", - "azureSubscription", - "Destination", - "storage" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -18204,6 +18024,183 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", + "ignoreCase": "value", + "pattern": "^AzureFileCopy@2$" + }, + "inputs": { + "description": "Azure file copy inputs", + "properties": { + "SourcePath": { + "type": "string", + "description": "Source", + "ignoreCase": "key" + }, + "azureConnectionType": { + "description": "Azure Connection Type", + "ignoreCase": "all", + "enum": [ + "ConnectedServiceName", + "ConnectedServiceNameARM" + ], + "aliases": [ + "ConnectedServiceNameSelector" + ] + }, + "azureClassicSubscription": { + "type": "string", + "description": "Azure Classic Subscription", + "ignoreCase": "key", + "aliases": [ + "ConnectedServiceName" + ] + }, + "azureSubscription": { + "type": "string", + "description": "Azure Subscription", + "ignoreCase": "key", + "aliases": [ + "ConnectedServiceNameARM" + ] + }, + "Destination": { + "description": "Destination Type", + "ignoreCase": "all", + "enum": [ + "AzureBlob", + "AzureVMs" + ] + }, + "classicStorage": { + "type": "string", + "description": "Classic Storage Account", + "ignoreCase": "key", + "aliases": [ + "StorageAccount" + ] + }, + "storage": { + "type": "string", + "description": "RM Storage Account", + "ignoreCase": "key", + "aliases": [ + "StorageAccountRM" + ] + }, + "ContainerName": { + "type": "string", + "description": "Container Name", + "ignoreCase": "key" + }, + "BlobPrefix": { + "type": "string", + "description": "Blob Prefix", + "ignoreCase": "key" + }, + "cloudService": { + "type": "string", + "description": "Cloud Service", + "ignoreCase": "key", + "aliases": [ + "EnvironmentName" + ] + }, + "resourceGroup": { + "type": "string", + "description": "Resource Group", + "ignoreCase": "key", + "aliases": [ + "EnvironmentNameRM" + ] + }, + "ResourceFilteringMethod": { + "description": "Select Machines By", + "ignoreCase": "all", + "enum": [ + "machineNames", + "tags" + ] + }, + "MachineNames": { + "type": "string", + "description": "Filter Criteria", + "ignoreCase": "key" + }, + "vmsAdminUserName": { + "type": "string", + "description": "Admin Login", + "ignoreCase": "key" + }, + "vmsAdminPassword": { + "type": "string", + "description": "Password", + "ignoreCase": "key" + }, + "TargetPath": { + "type": "string", + "description": "Destination Folder", + "ignoreCase": "key" + }, + "AdditionalArgumentsForBlobCopy": { + "type": "string", + "description": "Optional Arguments (for uploading files to blob)", + "ignoreCase": "key" + }, + "AdditionalArgumentsForVMCopy": { + "type": "string", + "description": "Optional Arguments (for downloading files to VM)", + "ignoreCase": "key" + }, + "enableCopyPrerequisites": { + "type": "boolean", + "description": "Enable Copy Prerequisites", + "ignoreCase": "key" + }, + "CopyFilesInParallel": { + "type": "boolean", + "description": "Copy in Parallel", + "ignoreCase": "key" + }, + "CleanTargetBeforeCopy": { + "type": "boolean", + "description": "Clean Target", + "ignoreCase": "key" + }, + "skipCACheck": { + "type": "boolean", + "description": "Test Certificate", + "ignoreCase": "key" + }, + "outputStorageUri": { + "type": "string", + "description": "Storage Container URI", + "ignoreCase": "key" + }, + "outputStorageContainerSasToken": { + "type": "string", + "description": "Storage Container SAS Token", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "SourcePath", + "Destination" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -18353,6 +18350,145 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines", + "ignoreCase": "value", + "pattern": "^AzureFileCopy@4$" + }, + "inputs": { + "description": "Azure file copy inputs", + "properties": { + "SourcePath": { + "type": "string", + "description": "Source", + "ignoreCase": "key" + }, + "azureSubscription": { + "type": "string", + "description": "Azure Subscription", + "ignoreCase": "key", + "aliases": [ + "ConnectedServiceNameARM" + ] + }, + "Destination": { + "description": "Destination Type", + "ignoreCase": "all", + "enum": [ + "AzureBlob", + "AzureVMs" + ] + }, + "storage": { + "type": "string", + "description": "RM Storage Account", + "ignoreCase": "key", + "aliases": [ + "StorageAccountRM" + ] + }, + "ContainerName": { + "type": "string", + "description": "Container Name", + "ignoreCase": "key" + }, + "BlobPrefix": { + "type": "string", + "description": "Blob Prefix", + "ignoreCase": "key" + }, + "resourceGroup": { + "type": "string", + "description": "Resource Group", + "ignoreCase": "key", + "aliases": [ + "EnvironmentNameRM" + ] + }, + "ResourceFilteringMethod": { + "description": "Select Machines By", + "ignoreCase": "all", + "enum": [ + "machineNames", + "tags" + ] + }, + "MachineNames": { + "type": "string", + "description": "Filter Criteria", + "ignoreCase": "key" + }, + "vmsAdminUserName": { + "type": "string", + "description": "Admin Login", + "ignoreCase": "key" + }, + "vmsAdminPassword": { + "type": "string", + "description": "Password", + "ignoreCase": "key" + }, + "TargetPath": { + "type": "string", + "description": "Destination Folder", + "ignoreCase": "key" + }, + "AdditionalArgumentsForBlobCopy": { + "type": "string", + "description": "Optional Arguments (for uploading files to blob)", + "ignoreCase": "key" + }, + "AdditionalArgumentsForVMCopy": { + "type": "string", + "description": "Optional Arguments (for downloading files to VM)", + "ignoreCase": "key" + }, + "sasTokenTimeOutInMinutes": { + "type": "string", + "description": "SAS Token Expiration Period In Minutes", + "ignoreCase": "key" + }, + "enableCopyPrerequisites": { + "type": "boolean", + "description": "Enable Copy Prerequisites", + "ignoreCase": "key" + }, + "CopyFilesInParallel": { + "type": "boolean", + "description": "Copy in Parallel", + "ignoreCase": "key" + }, + "CleanTargetBeforeCopy": { + "type": "boolean", + "description": "Clean Target", + "ignoreCase": "key" + }, + "skipCACheck": { + "type": "boolean", + "description": "Test Certificate", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "SourcePath", + "azureSubscription", + "Destination", + "storage" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -18614,241 +18750,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Gradle\n\nBuild using a Gradle wrapper script", - "ignoreCase": "value", - "pattern": "^Gradle@3$" - }, - "inputs": { - "description": "Gradle inputs", - "properties": { - "gradleWrapperFile": { - "type": "string", - "description": "Gradle wrapper", - "ignoreCase": "key", - "aliases": [ - "wrapperScript" - ] - }, - "workingDirectory": { - "type": "string", - "description": "Working directory", - "ignoreCase": "key", - "aliases": [ - "cwd" - ] - }, - "options": { - "type": "string", - "description": "Options", - "ignoreCase": "key" - }, - "tasks": { - "type": "string", - "description": "Tasks", - "ignoreCase": "key" - }, - "publishJUnitResults": { - "type": "boolean", - "description": "Publish to Azure Pipelines", - "ignoreCase": "key" - }, - "testResultsFiles": { - "type": "string", - "description": "Test results files", - "ignoreCase": "key" - }, - "testRunTitle": { - "type": "string", - "description": "Test run title", - "ignoreCase": "key" - }, - "codeCoverageToolOption": { - "description": "Code coverage tool", - "ignoreCase": "all", - "enum": [ - "None", - "Cobertura", - "JaCoCo" - ], - "aliases": [ - "codeCoverageTool" - ] - }, - "codeCoverageClassFilesDirectories": { - "type": "string", - "description": "Class files directories", - "ignoreCase": "key", - "aliases": [ - "classFilesDirectories" - ] - }, - "codeCoverageClassFilter": { - "type": "string", - "description": "Class inclusion/exclusion filters", - "ignoreCase": "key", - "aliases": [ - "classFilter" - ] - }, - "codeCoverageFailIfEmpty": { - "type": "boolean", - "description": "Fail when code coverage results are missing", - "ignoreCase": "key", - "aliases": [ - "failIfCoverageEmpty" - ] - }, - "codeCoverageGradle5xOrHigher": { - "type": "boolean", - "description": "Gradle version >= 5.x", - "ignoreCase": "key", - "aliases": [ - "gradle5xOrHigher" - ] - }, - "javaHomeOption": { - "description": "Set JAVA_HOME by", - "ignoreCase": "all", - "enum": [ - "JDKVersion", - "Path" - ], - "aliases": [ - "javaHomeSelection" - ] - }, - "jdkVersionOption": { - "description": "JDK version", - "ignoreCase": "all", - "enum": [ - "default", - "1.17", - "1.11", - "1.10", - "1.9", - "1.8", - "1.7", - "1.6" - ], - "aliases": [ - "jdkVersion" - ] - }, - "jdkDirectory": { - "type": "string", - "description": "JDK path", - "ignoreCase": "key", - "aliases": [ - "jdkUserInputPath" - ] - }, - "jdkArchitectureOption": { - "description": "JDK architecture", - "ignoreCase": "all", - "enum": [ - "x86", - "x64" - ], - "aliases": [ - "jdkArchitecture" - ] - }, - "gradleOptions": { - "type": "string", - "description": "Set GRADLE_OPTS", - "ignoreCase": "key", - "aliases": [ - "gradleOpts" - ] - }, - "sonarQubeRunAnalysis": { - "type": "boolean", - "description": "Run SonarQube or SonarCloud Analysis", - "ignoreCase": "key", - "aliases": [ - "sqAnalysisEnabled" - ] - }, - "sqGradlePluginVersionChoice": { - "description": "SonarQube scanner for Gradle version", - "ignoreCase": "all", - "enum": [ - "specify", - "build" - ] - }, - "sonarQubeGradlePluginVersion": { - "type": "string", - "description": "SonarQube scanner for Gradle plugin version", - "ignoreCase": "key", - "aliases": [ - "sqGradlePluginVersion" - ] - }, - "checkStyleRunAnalysis": { - "type": "boolean", - "description": "Run Checkstyle", - "ignoreCase": "key", - "aliases": [ - "checkstyleAnalysisEnabled" - ] - }, - "findBugsRunAnalysis": { - "type": "boolean", - "description": "Run FindBugs", - "ignoreCase": "key", - "aliases": [ - "findbugsAnalysisEnabled" - ] - }, - "pmdRunAnalysis": { - "type": "boolean", - "description": "Run PMD", - "ignoreCase": "key", - "aliases": [ - "pmdAnalysisEnabled" - ] - }, - "spotBugsAnalysis": { - "type": "boolean", - "description": "Run SpotBugs", - "ignoreCase": "key", - "aliases": [ - "spotBugsAnalysisEnabled" - ] - }, - "spotBugsGradlePluginVersionChoice": { - "description": "Spotbugs plugin version", - "ignoreCase": "all", - "enum": [ - "specify", - "build" - ] - }, - "spotbugsGradlePluginVersion": { - "type": "string", - "description": "Version number", - "ignoreCase": "key", - "aliases": [ - "spotbugsGradlePluginVersion" - ] - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -19359,146 +19260,228 @@ { "properties": { "task": { - "description": "App Center distribute\n\nDistribute app builds to testers and users via Visual Studio App Center", + "description": "Gradle\n\nBuild using a Gradle wrapper script", "ignoreCase": "value", - "pattern": "^AppCenterDistribute@3$" + "pattern": "^Gradle@3$" }, "inputs": { - "description": "App Center distribute inputs", + "description": "Gradle inputs", "properties": { - "serverEndpoint": { + "gradleWrapperFile": { "type": "string", - "description": "App Center service connection", - "ignoreCase": "key" - }, - "appSlug": { - "type": "string", - "description": "App slug", - "ignoreCase": "key" - }, - "appFile": { - "type": "string", - "description": "Binary file path", + "description": "Gradle wrapper", "ignoreCase": "key", "aliases": [ - "app" + "wrapperScript" ] }, - "buildVersion": { + "workingDirectory": { "type": "string", - "description": "Build version", + "description": "Working directory", + "ignoreCase": "key", + "aliases": [ + "cwd" + ] + }, + "options": { + "type": "string", + "description": "Options", "ignoreCase": "key" }, - "symbolsOption": { - "description": "Symbols type", + "tasks": { + "type": "string", + "description": "Tasks", + "ignoreCase": "key" + }, + "publishJUnitResults": { + "type": "boolean", + "description": "Publish to Azure Pipelines", + "ignoreCase": "key" + }, + "testResultsFiles": { + "type": "string", + "description": "Test results files", + "ignoreCase": "key" + }, + "testRunTitle": { + "type": "string", + "description": "Test run title", + "ignoreCase": "key" + }, + "codeCoverageToolOption": { + "description": "Code coverage tool", "ignoreCase": "all", "enum": [ - "Apple", - "Android", - "UWP" + "None", + "Cobertura", + "JaCoCo" ], "aliases": [ - "symbolsType" + "codeCoverageTool" ] }, - "symbolsPath": { + "codeCoverageClassFilesDirectories": { "type": "string", - "description": "Symbols path", - "ignoreCase": "key" - }, - "appxsymPath": { - "type": "string", - "description": "Symbols path (*.appxsym)", - "ignoreCase": "key" - }, - "symbolsDsymFiles": { - "type": "string", - "description": "dSYM path", + "description": "Class files directories", "ignoreCase": "key", "aliases": [ - "dsymPath" + "classFilesDirectories" ] }, - "symbolsMappingTxtFile": { + "codeCoverageClassFilter": { "type": "string", - "description": "Mapping file", + "description": "Class inclusion/exclusion filters", "ignoreCase": "key", "aliases": [ - "mappingTxtPath" + "classFilter" ] }, - "nativeLibrariesPath": { - "type": "string", - "description": "Native Library File Path", - "ignoreCase": "key" - }, - "symbolsIncludeParentDirectory": { + "codeCoverageFailIfEmpty": { "type": "boolean", - "description": "Include all items in parent folder", + "description": "Fail when code coverage results are missing", "ignoreCase": "key", "aliases": [ - "packParentFolder" + "failIfCoverageEmpty" ] }, - "releaseNotesOption": { - "description": "Create release notes", + "codeCoverageGradle5xOrHigher": { + "type": "boolean", + "description": "Gradle version >= 5.x", + "ignoreCase": "key", + "aliases": [ + "gradle5xOrHigher" + ] + }, + "javaHomeOption": { + "description": "Set JAVA_HOME by", "ignoreCase": "all", "enum": [ - "input", - "file" + "JDKVersion", + "Path" ], "aliases": [ - "releaseNotesSelection" + "javaHomeSelection" ] }, - "releaseNotesInput": { - "type": "string", - "description": "Release notes", - "ignoreCase": "key" - }, - "releaseNotesFile": { - "type": "string", - "description": "Release notes file", - "ignoreCase": "key" - }, - "isMandatory": { - "type": "boolean", - "description": "Require users to update to this release", - "ignoreCase": "key" - }, - "destinationType": { - "description": "Release destination", + "jdkVersionOption": { + "description": "JDK version", "ignoreCase": "all", "enum": [ - "groups", - "store" + "default", + "1.17", + "1.11", + "1.10", + "1.9", + "1.8", + "1.7", + "1.6" + ], + "aliases": [ + "jdkVersion" ] }, - "distributionGroupId": { + "jdkDirectory": { "type": "string", - "description": "Destination IDs", + "description": "JDK path", "ignoreCase": "key", "aliases": [ - "destinationGroupIds" + "jdkUserInputPath" ] }, - "destinationStoreId": { - "type": "string", - "description": "Destination ID", - "ignoreCase": "key" + "jdkArchitectureOption": { + "description": "JDK architecture", + "ignoreCase": "all", + "enum": [ + "x86", + "x64" + ], + "aliases": [ + "jdkArchitecture" + ] }, - "isSilent": { + "gradleOptions": { + "type": "string", + "description": "Set GRADLE_OPTS", + "ignoreCase": "key", + "aliases": [ + "gradleOpts" + ] + }, + "sonarQubeRunAnalysis": { "type": "boolean", - "description": "Do not notify testers. Release will still be available to install.", - "ignoreCase": "key" + "description": "Run SonarQube or SonarCloud Analysis", + "ignoreCase": "key", + "aliases": [ + "sqAnalysisEnabled" + ] + }, + "sqGradlePluginVersionChoice": { + "description": "SonarQube scanner for Gradle version", + "ignoreCase": "all", + "enum": [ + "specify", + "build" + ] + }, + "sonarQubeGradlePluginVersion": { + "type": "string", + "description": "SonarQube scanner for Gradle plugin version", + "ignoreCase": "key", + "aliases": [ + "sqGradlePluginVersion" + ] + }, + "checkStyleRunAnalysis": { + "type": "boolean", + "description": "Run Checkstyle", + "ignoreCase": "key", + "aliases": [ + "checkstyleAnalysisEnabled" + ] + }, + "findBugsRunAnalysis": { + "type": "boolean", + "description": "Run FindBugs", + "ignoreCase": "key", + "aliases": [ + "findbugsAnalysisEnabled" + ] + }, + "pmdRunAnalysis": { + "type": "boolean", + "description": "Run PMD", + "ignoreCase": "key", + "aliases": [ + "pmdAnalysisEnabled" + ] + }, + "spotBugsAnalysis": { + "type": "boolean", + "description": "Run SpotBugs", + "ignoreCase": "key", + "aliases": [ + "spotBugsAnalysisEnabled" + ] + }, + "spotBugsGradlePluginVersionChoice": { + "description": "Spotbugs plugin version", + "ignoreCase": "all", + "enum": [ + "specify", + "build" + ] + }, + "spotbugsGradlePluginVersion": { + "type": "string", + "description": "Version number", + "ignoreCase": "key", + "aliases": [ + "spotbugsGradlePluginVersion" + ] } }, "additionalProperties": false, - "required": [ - "serverEndpoint", - "appSlug", - "appFile" - ] + "required": [] } }, "doNotSuggest": false, @@ -19506,137 +19489,7 @@ "task" ], "required": [ - "task", - "inputs" - ] - }, - { - "properties": { - "task": { - "description": "App Center distribute\n\nDistribute app builds to testers and users via Visual Studio App Center", - "ignoreCase": "value", - "pattern": "^AppCenterDistribute@2$" - }, - "inputs": { - "description": "App Center distribute inputs", - "properties": { - "serverEndpoint": { - "type": "string", - "description": "App Center service connection", - "ignoreCase": "key" - }, - "appSlug": { - "type": "string", - "description": "App slug", - "ignoreCase": "key" - }, - "appFile": { - "type": "string", - "description": "Binary file path", - "ignoreCase": "key", - "aliases": [ - "app" - ] - }, - "symbolsOption": { - "description": "Symbols type", - "ignoreCase": "all", - "enum": [ - "Apple" - ], - "aliases": [ - "symbolsType" - ] - }, - "symbolsPath": { - "type": "string", - "description": "Symbols path", - "ignoreCase": "key" - }, - "symbolsPdbFiles": { - "type": "string", - "description": "Symbols path (*.pdb)", - "ignoreCase": "key", - "aliases": [ - "pdbPath" - ] - }, - "symbolsDsymFiles": { - "type": "string", - "description": "dSYM path", - "ignoreCase": "key", - "aliases": [ - "dsymPath" - ] - }, - "symbolsMappingTxtFile": { - "type": "string", - "description": "Mapping file", - "ignoreCase": "key", - "aliases": [ - "mappingTxtPath" - ] - }, - "symbolsIncludeParentDirectory": { - "type": "boolean", - "description": "Include all items in parent folder", - "ignoreCase": "key", - "aliases": [ - "packParentFolder" - ] - }, - "releaseNotesOption": { - "description": "Create release notes", - "ignoreCase": "all", - "enum": [ - "input", - "file" - ], - "aliases": [ - "releaseNotesSelection" - ] - }, - "releaseNotesInput": { - "type": "string", - "description": "Release notes", - "ignoreCase": "key" - }, - "releaseNotesFile": { - "type": "string", - "description": "Release notes file", - "ignoreCase": "key" - }, - "isMandatory": { - "type": "boolean", - "description": "Require users to update to this release", - "ignoreCase": "key" - }, - "distributionGroupId": { - "type": "string", - "description": "Destination IDs", - "ignoreCase": "key", - "aliases": [ - "destinationIds", - "destinationId" - ] - } - }, - "additionalProperties": false, - "required": [ - "serverEndpoint", - "appSlug", - "appFile" - ] - } - }, - "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", - "doNotSuggest": true, - "firstProperty": [ "task" - ], - "required": [ - "task", - "inputs" ] }, { @@ -19886,6 +19739,289 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "App Center distribute\n\nDistribute app builds to testers and users via Visual Studio App Center", + "ignoreCase": "value", + "pattern": "^AppCenterDistribute@2$" + }, + "inputs": { + "description": "App Center distribute inputs", + "properties": { + "serverEndpoint": { + "type": "string", + "description": "App Center service connection", + "ignoreCase": "key" + }, + "appSlug": { + "type": "string", + "description": "App slug", + "ignoreCase": "key" + }, + "appFile": { + "type": "string", + "description": "Binary file path", + "ignoreCase": "key", + "aliases": [ + "app" + ] + }, + "symbolsOption": { + "description": "Symbols type", + "ignoreCase": "all", + "enum": [ + "Apple" + ], + "aliases": [ + "symbolsType" + ] + }, + "symbolsPath": { + "type": "string", + "description": "Symbols path", + "ignoreCase": "key" + }, + "symbolsPdbFiles": { + "type": "string", + "description": "Symbols path (*.pdb)", + "ignoreCase": "key", + "aliases": [ + "pdbPath" + ] + }, + "symbolsDsymFiles": { + "type": "string", + "description": "dSYM path", + "ignoreCase": "key", + "aliases": [ + "dsymPath" + ] + }, + "symbolsMappingTxtFile": { + "type": "string", + "description": "Mapping file", + "ignoreCase": "key", + "aliases": [ + "mappingTxtPath" + ] + }, + "symbolsIncludeParentDirectory": { + "type": "boolean", + "description": "Include all items in parent folder", + "ignoreCase": "key", + "aliases": [ + "packParentFolder" + ] + }, + "releaseNotesOption": { + "description": "Create release notes", + "ignoreCase": "all", + "enum": [ + "input", + "file" + ], + "aliases": [ + "releaseNotesSelection" + ] + }, + "releaseNotesInput": { + "type": "string", + "description": "Release notes", + "ignoreCase": "key" + }, + "releaseNotesFile": { + "type": "string", + "description": "Release notes file", + "ignoreCase": "key" + }, + "isMandatory": { + "type": "boolean", + "description": "Require users to update to this release", + "ignoreCase": "key" + }, + "distributionGroupId": { + "type": "string", + "description": "Destination IDs", + "ignoreCase": "key", + "aliases": [ + "destinationIds", + "destinationId" + ] + } + }, + "additionalProperties": false, + "required": [ + "serverEndpoint", + "appSlug", + "appFile" + ] + } + }, + "deprecationMessage": "AppCenterDistribute is deprecated - Distribute app builds to testers and users via Visual Studio App Center", + "doNotSuggest": true, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, + { + "properties": { + "task": { + "description": "App Center distribute\n\nDistribute app builds to testers and users via Visual Studio App Center", + "ignoreCase": "value", + "pattern": "^AppCenterDistribute@3$" + }, + "inputs": { + "description": "App Center distribute inputs", + "properties": { + "serverEndpoint": { + "type": "string", + "description": "App Center service connection", + "ignoreCase": "key" + }, + "appSlug": { + "type": "string", + "description": "App slug", + "ignoreCase": "key" + }, + "appFile": { + "type": "string", + "description": "Binary file path", + "ignoreCase": "key", + "aliases": [ + "app" + ] + }, + "buildVersion": { + "type": "string", + "description": "Build version", + "ignoreCase": "key" + }, + "symbolsOption": { + "description": "Symbols type", + "ignoreCase": "all", + "enum": [ + "Apple", + "Android", + "UWP" + ], + "aliases": [ + "symbolsType" + ] + }, + "symbolsPath": { + "type": "string", + "description": "Symbols path", + "ignoreCase": "key" + }, + "appxsymPath": { + "type": "string", + "description": "Symbols path (*.appxsym)", + "ignoreCase": "key" + }, + "symbolsDsymFiles": { + "type": "string", + "description": "dSYM path", + "ignoreCase": "key", + "aliases": [ + "dsymPath" + ] + }, + "symbolsMappingTxtFile": { + "type": "string", + "description": "Mapping file", + "ignoreCase": "key", + "aliases": [ + "mappingTxtPath" + ] + }, + "nativeLibrariesPath": { + "type": "string", + "description": "Native Library File Path", + "ignoreCase": "key" + }, + "symbolsIncludeParentDirectory": { + "type": "boolean", + "description": "Include all items in parent folder", + "ignoreCase": "key", + "aliases": [ + "packParentFolder" + ] + }, + "releaseNotesOption": { + "description": "Create release notes", + "ignoreCase": "all", + "enum": [ + "input", + "file" + ], + "aliases": [ + "releaseNotesSelection" + ] + }, + "releaseNotesInput": { + "type": "string", + "description": "Release notes", + "ignoreCase": "key" + }, + "releaseNotesFile": { + "type": "string", + "description": "Release notes file", + "ignoreCase": "key" + }, + "isMandatory": { + "type": "boolean", + "description": "Require users to update to this release", + "ignoreCase": "key" + }, + "destinationType": { + "description": "Release destination", + "ignoreCase": "all", + "enum": [ + "groups", + "store" + ] + }, + "distributionGroupId": { + "type": "string", + "description": "Destination IDs", + "ignoreCase": "key", + "aliases": [ + "destinationGroupIds" + ] + }, + "destinationStoreId": { + "type": "string", + "description": "Destination ID", + "ignoreCase": "key" + }, + "isSilent": { + "type": "boolean", + "description": "Do not notify testers. Release will still be available to install.", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "serverEndpoint", + "appSlug", + "appFile" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -20459,86 +20595,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Install Apple certificate\n\nInstall an Apple certificate required to build on a macOS agent machine", - "ignoreCase": "value", - "pattern": "^InstallAppleCertificate@2$" - }, - "inputs": { - "description": "Install Apple certificate inputs", - "properties": { - "certSecureFile": { - "type": "string", - "description": "Certificate (P12)", - "ignoreCase": "key" - }, - "certPwd": { - "type": "string", - "description": "Certificate (P12) password", - "ignoreCase": "key" - }, - "keychain": { - "description": "Keychain", - "ignoreCase": "all", - "enum": [ - "default", - "temp", - "custom" - ] - }, - "keychainPassword": { - "type": "string", - "description": "Keychain password", - "ignoreCase": "key" - }, - "customKeychainPath": { - "type": "string", - "description": "Custom keychain path", - "ignoreCase": "key" - }, - "deleteCert": { - "type": "boolean", - "description": "Delete certificate from keychain", - "ignoreCase": "key" - }, - "deleteCustomKeychain": { - "type": "boolean", - "description": "Delete custom keychain", - "ignoreCase": "key" - }, - "signingIdentity": { - "type": "string", - "description": "Certificate signing identity", - "ignoreCase": "key" - }, - "setUpPartitionIdACLForPrivateKey": { - "type": "boolean", - "description": "Set up partition_id ACL for the imported private key", - "ignoreCase": "key" - }, - "opensslPkcsArgs": { - "type": "string", - "description": "OpenSSL arguments for PKCS12", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "certSecureFile" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -20679,6 +20735,86 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Install Apple certificate\n\nInstall an Apple certificate required to build on a macOS agent machine", + "ignoreCase": "value", + "pattern": "^InstallAppleCertificate@2$" + }, + "inputs": { + "description": "Install Apple certificate inputs", + "properties": { + "certSecureFile": { + "type": "string", + "description": "Certificate (P12)", + "ignoreCase": "key" + }, + "certPwd": { + "type": "string", + "description": "Certificate (P12) password", + "ignoreCase": "key" + }, + "keychain": { + "description": "Keychain", + "ignoreCase": "all", + "enum": [ + "default", + "temp", + "custom" + ] + }, + "keychainPassword": { + "type": "string", + "description": "Keychain password", + "ignoreCase": "key" + }, + "customKeychainPath": { + "type": "string", + "description": "Custom keychain path", + "ignoreCase": "key" + }, + "deleteCert": { + "type": "boolean", + "description": "Delete certificate from keychain", + "ignoreCase": "key" + }, + "deleteCustomKeychain": { + "type": "boolean", + "description": "Delete custom keychain", + "ignoreCase": "key" + }, + "signingIdentity": { + "type": "string", + "description": "Certificate signing identity", + "ignoreCase": "key" + }, + "setUpPartitionIdACLForPrivateKey": { + "type": "boolean", + "description": "Set up partition_id ACL for the imported private key", + "ignoreCase": "key" + }, + "opensslPkcsArgs": { + "type": "string", + "description": "OpenSSL arguments for PKCS12", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "certSecureFile" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -21043,8 +21179,7 @@ ] } }, - "deprecationMessage": "PublishPipelineArtifact is deprecated - Publish a local directory or file as a named artifact for the current pipeline", - "doNotSuggest": true, + "doNotSuggest": false, "firstProperty": [ "task" ], @@ -21917,6 +22052,77 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Android Signing\n\nSign and align Android APK files", + "ignoreCase": "value", + "pattern": "^AndroidSigning@1$" + }, + "inputs": { + "description": "Android Signing inputs", + "properties": { + "files": { + "type": "string", + "description": "APK Files", + "ignoreCase": "key" + }, + "jarsign": { + "type": "boolean", + "description": "Sign the APK", + "ignoreCase": "key" + }, + "keystoreFile": { + "type": "string", + "description": "Keystore File", + "ignoreCase": "key" + }, + "keystorePass": { + "type": "string", + "description": "Keystore Password", + "ignoreCase": "key" + }, + "keystoreAlias": { + "type": "string", + "description": "Alias", + "ignoreCase": "key" + }, + "keyPass": { + "type": "string", + "description": "Key Password", + "ignoreCase": "key" + }, + "jarsignerArguments": { + "type": "string", + "description": "Jarsigner Arguments", + "ignoreCase": "key" + }, + "zipalign": { + "type": "boolean", + "description": "Zipalign", + "ignoreCase": "key" + }, + "zipalignLocation": { + "type": "string", + "description": "Zipalign Location", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "files" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -22107,214 +22313,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Android Signing\n\nSign and align Android APK files", - "ignoreCase": "value", - "pattern": "^AndroidSigning@1$" - }, - "inputs": { - "description": "Android Signing inputs", - "properties": { - "files": { - "type": "string", - "description": "APK Files", - "ignoreCase": "key" - }, - "jarsign": { - "type": "boolean", - "description": "Sign the APK", - "ignoreCase": "key" - }, - "keystoreFile": { - "type": "string", - "description": "Keystore File", - "ignoreCase": "key" - }, - "keystorePass": { - "type": "string", - "description": "Keystore Password", - "ignoreCase": "key" - }, - "keystoreAlias": { - "type": "string", - "description": "Alias", - "ignoreCase": "key" - }, - "keyPass": { - "type": "string", - "description": "Key Password", - "ignoreCase": "key" - }, - "jarsignerArguments": { - "type": "string", - "description": "Jarsigner Arguments", - "ignoreCase": "key" - }, - "zipalign": { - "type": "boolean", - "description": "Zipalign", - "ignoreCase": "key" - }, - "zipalignLocation": { - "type": "string", - "description": "Zipalign Location", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "files" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, - { - "properties": { - "task": { - "description": "Download pipeline artifact\n\nDownload a named artifact from a pipeline to a local path", - "ignoreCase": "value", - "pattern": "^DownloadPipelineArtifact@1$" - }, - "inputs": { - "description": "Download pipeline artifact inputs", - "properties": { - "buildType": { - "description": "Download artifacts produced by", - "ignoreCase": "all", - "enum": [ - "current", - "specific" - ] - }, - "project": { - "type": "string", - "description": "Project", - "ignoreCase": "key" - }, - "pipeline": { - "type": "string", - "description": "Build pipeline", - "ignoreCase": "key", - "aliases": [ - "definition" - ] - }, - "specificBuildWithTriggering": { - "type": "boolean", - "description": "When appropriate, download artifacts from the triggering build.", - "ignoreCase": "key" - }, - "buildVersionToDownload": { - "description": "Build version to download", - "ignoreCase": "all", - "enum": [ - "latest", - "latestFromBranch", - "specific" - ] - }, - "branchName": { - "type": "string", - "description": "Branch name", - "ignoreCase": "key" - }, - "pipelineId": { - "type": "string", - "description": "Build", - "ignoreCase": "key", - "aliases": [ - "buildId" - ] - }, - "tags": { - "type": "string", - "description": "Build Tags", - "ignoreCase": "key" - }, - "artifactName": { - "type": "string", - "description": "Artifact name", - "ignoreCase": "key" - }, - "itemPattern": { - "type": "string", - "description": "Matching pattern", - "ignoreCase": "key" - }, - "targetPath": { - "type": "string", - "description": "Destination directory", - "ignoreCase": "key", - "aliases": [ - "downloadPath" - ] - } - }, - "additionalProperties": false, - "required": [] - } - }, - "deprecationMessage": "DownloadPipelineArtifact is deprecated - Download a named artifact from a pipeline to a local path", - "doNotSuggest": true, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, - { - "properties": { - "task": { - "description": "Download pipeline artifact\n\nDownloads an artifact associated with a pipeline", - "ignoreCase": "value", - "pattern": "^DownloadPipelineArtifact@0$" - }, - "inputs": { - "description": "Download pipeline artifact inputs", - "properties": { - "pipelineId": { - "type": "string", - "description": "The specific pipeline to download from", - "ignoreCase": "key" - }, - "artifactName": { - "type": "string", - "description": "The name of artifact to download.", - "ignoreCase": "key" - }, - "targetPath": { - "type": "string", - "description": "Path to download to", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "targetPath" - ] - } - }, - "deprecationMessage": "DownloadPipelineArtifact is deprecated - Downloads an artifact associated with a pipeline", - "doNotSuggest": true, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -22439,6 +22437,141 @@ "task" ] }, + { + "properties": { + "task": { + "description": "Download pipeline artifact\n\nDownloads an artifact associated with a pipeline", + "ignoreCase": "value", + "pattern": "^DownloadPipelineArtifact@0$" + }, + "inputs": { + "description": "Download pipeline artifact inputs", + "properties": { + "pipelineId": { + "type": "string", + "description": "The specific pipeline to download from", + "ignoreCase": "key" + }, + "artifactName": { + "type": "string", + "description": "The name of artifact to download.", + "ignoreCase": "key" + }, + "targetPath": { + "type": "string", + "description": "Path to download to", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "targetPath" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, + { + "properties": { + "task": { + "description": "Download pipeline artifact\n\nDownload a named artifact from a pipeline to a local path", + "ignoreCase": "value", + "pattern": "^DownloadPipelineArtifact@1$" + }, + "inputs": { + "description": "Download pipeline artifact inputs", + "properties": { + "buildType": { + "description": "Download artifacts produced by", + "ignoreCase": "all", + "enum": [ + "current", + "specific" + ] + }, + "project": { + "type": "string", + "description": "Project", + "ignoreCase": "key" + }, + "pipeline": { + "type": "string", + "description": "Build pipeline", + "ignoreCase": "key", + "aliases": [ + "definition" + ] + }, + "specificBuildWithTriggering": { + "type": "boolean", + "description": "When appropriate, download artifacts from the triggering build.", + "ignoreCase": "key" + }, + "buildVersionToDownload": { + "description": "Build version to download", + "ignoreCase": "all", + "enum": [ + "latest", + "latestFromBranch", + "specific" + ] + }, + "branchName": { + "type": "string", + "description": "Branch name", + "ignoreCase": "key" + }, + "pipelineId": { + "type": "string", + "description": "Build", + "ignoreCase": "key", + "aliases": [ + "buildId" + ] + }, + "tags": { + "type": "string", + "description": "Build Tags", + "ignoreCase": "key" + }, + "artifactName": { + "type": "string", + "description": "Artifact name", + "ignoreCase": "key" + }, + "itemPattern": { + "type": "string", + "description": "Matching pattern", + "ignoreCase": "key" + }, + "targetPath": { + "type": "string", + "description": "Destination directory", + "ignoreCase": "key", + "aliases": [ + "downloadPath" + ] + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { @@ -22552,12 +22685,117 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Visual Studio Test\n\nRun tests with Visual Studio test runner", + "ignoreCase": "value", + "pattern": "^VSTest@1$" + }, + "inputs": { + "description": "Visual Studio Test inputs", + "properties": { + "testAssembly": { + "type": "string", + "description": "Test Assembly", + "ignoreCase": "key" + }, + "testFiltercriteria": { + "type": "string", + "description": "Test Filter criteria", + "ignoreCase": "key" + }, + "runSettingsFile": { + "type": "string", + "description": "Run Settings File", + "ignoreCase": "key" + }, + "overrideTestrunParameters": { + "type": "string", + "description": "Override TestRun Parameters", + "ignoreCase": "key" + }, + "codeCoverageEnabled": { + "type": "boolean", + "description": "Code Coverage Enabled", + "ignoreCase": "key" + }, + "runInParallel": { + "type": "boolean", + "description": "Run In Parallel", + "ignoreCase": "key" + }, + "vstestLocationMethod": { + "description": "VSTest", + "ignoreCase": "all", + "enum": [ + "version", + "location" + ] + }, + "vsTestVersion": { + "description": "VSTest version", + "ignoreCase": "all", + "enum": [ + "latest", + "14.0", + "12.0" + ] + }, + "vstestLocation": { + "type": "string", + "description": "Path to vstest.console.exe", + "ignoreCase": "key" + }, + "pathtoCustomTestAdapters": { + "type": "string", + "description": "Path to Custom Test Adapters", + "ignoreCase": "key" + }, + "otherConsoleOptions": { + "type": "string", + "description": "Other console options", + "ignoreCase": "key" + }, + "testRunTitle": { + "type": "string", + "description": "Test Run Title", + "ignoreCase": "key" + }, + "platform": { + "type": "string", + "description": "Platform", + "ignoreCase": "key" + }, + "configuration": { + "type": "string", + "description": "Configuration", + "ignoreCase": "key" + }, + "publishRunAttachments": { + "type": "boolean", + "description": "Upload Test Attachments", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, { "properties": { "task": { "description": "Visual Studio Test\n\nRun unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).", "ignoreCase": "value", - "pattern": "^VSTest@3$" + "pattern": "^VSTest@2$" }, "inputs": { "description": "Visual Studio Test inputs", @@ -22811,117 +23049,12 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Visual Studio Test\n\nRun tests with Visual Studio test runner", - "ignoreCase": "value", - "pattern": "^VSTest@1$" - }, - "inputs": { - "description": "Visual Studio Test inputs", - "properties": { - "testAssembly": { - "type": "string", - "description": "Test Assembly", - "ignoreCase": "key" - }, - "testFiltercriteria": { - "type": "string", - "description": "Test Filter criteria", - "ignoreCase": "key" - }, - "runSettingsFile": { - "type": "string", - "description": "Run Settings File", - "ignoreCase": "key" - }, - "overrideTestrunParameters": { - "type": "string", - "description": "Override TestRun Parameters", - "ignoreCase": "key" - }, - "codeCoverageEnabled": { - "type": "boolean", - "description": "Code Coverage Enabled", - "ignoreCase": "key" - }, - "runInParallel": { - "type": "boolean", - "description": "Run In Parallel", - "ignoreCase": "key" - }, - "vstestLocationMethod": { - "description": "VSTest", - "ignoreCase": "all", - "enum": [ - "version", - "location" - ] - }, - "vsTestVersion": { - "description": "VSTest version", - "ignoreCase": "all", - "enum": [ - "latest", - "14.0", - "12.0" - ] - }, - "vstestLocation": { - "type": "string", - "description": "Path to vstest.console.exe", - "ignoreCase": "key" - }, - "pathtoCustomTestAdapters": { - "type": "string", - "description": "Path to Custom Test Adapters", - "ignoreCase": "key" - }, - "otherConsoleOptions": { - "type": "string", - "description": "Other console options", - "ignoreCase": "key" - }, - "testRunTitle": { - "type": "string", - "description": "Test Run Title", - "ignoreCase": "key" - }, - "platform": { - "type": "string", - "description": "Platform", - "ignoreCase": "key" - }, - "configuration": { - "type": "string", - "description": "Configuration", - "ignoreCase": "key" - }, - "publishRunAttachments": { - "type": "boolean", - "description": "Upload Test Attachments", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { "description": "Visual Studio Test\n\nRun unit and functional tests (Selenium, Appium, Coded UI test, etc.) using the Visual Studio Test (VsTest) runner. Test frameworks that have a Visual Studio test adapter such as MsTest, xUnit, NUnit, Chutzpah (for JavaScript tests using QUnit, Mocha and Jasmine), etc. can be run. Tests can be distributed on multiple agents using this task (version 2).", "ignoreCase": "value", - "pattern": "^VSTest@2$" + "pattern": "^VSTest@3$" }, "inputs": { "description": "Visual Studio Test inputs", @@ -23569,6 +23702,57 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Conda environment\n\nCreate and activate a Conda environment", + "ignoreCase": "value", + "pattern": "^CondaEnvironment@0$" + }, + "inputs": { + "description": "Conda environment inputs", + "properties": { + "environmentName": { + "type": "string", + "description": "Environment name", + "ignoreCase": "key" + }, + "packageSpecs": { + "type": "string", + "description": "Package specs", + "ignoreCase": "key" + }, + "updateConda": { + "type": "boolean", + "description": "Update to the latest Conda", + "ignoreCase": "key" + }, + "createOptions": { + "type": "string", + "description": "Environment creation options", + "ignoreCase": "key" + }, + "cleanEnvironment": { + "type": "boolean", + "description": "Clean the environment", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "environmentName" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -23628,57 +23812,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Conda environment\n\nCreate and activate a Conda environment", - "ignoreCase": "value", - "pattern": "^CondaEnvironment@0$" - }, - "inputs": { - "description": "Conda environment inputs", - "properties": { - "environmentName": { - "type": "string", - "description": "Environment name", - "ignoreCase": "key" - }, - "packageSpecs": { - "type": "string", - "description": "Package specs", - "ignoreCase": "key" - }, - "updateConda": { - "type": "boolean", - "description": "Update to the latest Conda", - "ignoreCase": "key" - }, - "createOptions": { - "type": "string", - "description": "Environment creation options", - "ignoreCase": "key" - }, - "cleanEnvironment": { - "type": "boolean", - "description": "Clean the environment", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "environmentName" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -23997,12 +24130,12 @@ { "properties": { "task": { - "description": ".NET Core SDK/runtime installer\n\nAcquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", + "description": "Use .NET Core\n\nAcquires a specific version of the .NET Core SDK from the internet or the local cache and adds it to the PATH. Use this task to change the version of .NET Core used in subsequent tasks. Additionally provides proxy support.", "ignoreCase": "value", - "pattern": "^DotNetCoreInstaller@0$" + "pattern": "^UseDotNet@2$" }, "inputs": { - "description": ".NET Core SDK/runtime installer inputs", + "description": "Use .NET Core inputs", "properties": { "packageType": { "description": "Package to install", @@ -24012,10 +24145,40 @@ "sdk" ] }, + "useGlobalJson": { + "type": "boolean", + "description": "Use global json", + "ignoreCase": "key" + }, + "workingDirectory": { + "type": "string", + "description": "Working Directory", + "ignoreCase": "key" + }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" + }, + "vsVersion": { + "type": "string", + "description": "Compatible Visual Studio version", + "ignoreCase": "key" + }, + "includePreviewVersions": { + "type": "boolean", + "description": "Include Preview Versions", + "ignoreCase": "key" + }, + "installationPath": { + "type": "string", + "description": "Path To Install .Net Core", + "ignoreCase": "key" + }, + "performMultiLevelLookup": { + "type": "boolean", + "description": "Perform Multi Level Lookup", + "ignoreCase": "key" } }, "additionalProperties": false, @@ -24085,12 +24248,12 @@ { "properties": { "task": { - "description": "Use .NET Core\n\nAcquires a specific version of the .NET Core SDK from the internet or the local cache and adds it to the PATH. Use this task to change the version of .NET Core used in subsequent tasks. Additionally provides proxy support.", + "description": ".NET Core SDK/runtime installer\n\nAcquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH", "ignoreCase": "value", - "pattern": "^UseDotNet@2$" + "pattern": "^DotNetCoreInstaller@0$" }, "inputs": { - "description": "Use .NET Core inputs", + "description": ".NET Core SDK/runtime installer inputs", "properties": { "packageType": { "description": "Package to install", @@ -24100,40 +24263,10 @@ "sdk" ] }, - "useGlobalJson": { - "type": "boolean", - "description": "Use global json", - "ignoreCase": "key" - }, - "workingDirectory": { - "type": "string", - "description": "Working Directory", - "ignoreCase": "key" - }, "version": { "type": "string", "description": "Version", "ignoreCase": "key" - }, - "vsVersion": { - "type": "string", - "description": "Compatible Visual Studio version", - "ignoreCase": "key" - }, - "includePreviewVersions": { - "type": "boolean", - "description": "Include Preview Versions", - "ignoreCase": "key" - }, - "installationPath": { - "type": "string", - "description": "Path To Install .Net Core", - "ignoreCase": "key" - }, - "performMultiLevelLookup": { - "type": "boolean", - "description": "Perform Multi Level Lookup", - "ignoreCase": "key" } }, "additionalProperties": false, @@ -24807,6 +24940,278 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Azure Resource Group Deployment\n\nDeploy, start, stop, delete Azure Resource Groups", + "ignoreCase": "value", + "pattern": "^AzureResourceGroupDeployment@1$" + }, + "inputs": { + "description": "Azure Resource Group Deployment inputs", + "properties": { + "ConnectedServiceNameSelector": { + "description": "Azure Connection Type", + "ignoreCase": "all", + "enum": [ + "ConnectedServiceName", + "ConnectedServiceNameClassic" + ] + }, + "ConnectedServiceName": { + "type": "string", + "description": "Azure Subscription", + "ignoreCase": "key" + }, + "ConnectedServiceNameClassic": { + "type": "string", + "description": "Azure Classic Subscription", + "ignoreCase": "key" + }, + "action": { + "description": "Action", + "ignoreCase": "all", + "enum": [ + "Create Or Update Resource Group", + "Select Resource Group", + "Start", + "Stop", + "Restart", + "Delete", + "DeleteRG" + ] + }, + "actionClassic": { + "description": "Action", + "ignoreCase": "all", + "enum": [ + "Select Resource Group" + ] + }, + "resourceGroupName": { + "type": "string", + "description": "Resource Group", + "ignoreCase": "key" + }, + "cloudService": { + "type": "string", + "description": "Cloud Service", + "ignoreCase": "key" + }, + "location": { + "description": "Location", + "ignoreCase": "all", + "enum": [ + "Australia East", + "Australia Southeast", + "Brazil South", + "Canada Central", + "Canada East", + "Central India", + "Central US", + "East Asia", + "East US", + "East US 2 ", + "Japan East", + "Japan West", + "North Central US", + "North Europe", + "South Central US", + "South India", + "Southeast Asia", + "UK South", + "UK West", + "West Central US", + "West Europe", + "West India", + "West US", + "West US 2" + ] + }, + "csmFile": { + "type": "string", + "description": "Template", + "ignoreCase": "key" + }, + "csmParametersFile": { + "type": "string", + "description": "Template Parameters", + "ignoreCase": "key" + }, + "overrideParameters": { + "type": "string", + "description": "Override Template Parameters", + "ignoreCase": "key" + }, + "deploymentMode": { + "description": "Deployment Mode", + "ignoreCase": "all", + "enum": [ + "Validation", + "Incremental", + "Complete" + ] + }, + "enableDeploymentPrerequisitesForCreate": { + "type": "boolean", + "description": "Enable Deployment Prerequisites", + "ignoreCase": "key" + }, + "enableDeploymentPrerequisitesForSelect": { + "type": "boolean", + "description": "Enable Deployment Prerequisites", + "ignoreCase": "key" + }, + "outputVariable": { + "type": "string", + "description": "Resource Group", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "deprecationMessage": "AzureResourceGroupDeployment is deprecated - Deploy, start, stop, delete Azure Resource Groups", + "doNotSuggest": true, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, + { + "properties": { + "task": { + "description": "ARM template deployment\n\nDeploy an Azure Resource Manager (ARM) template to all the deployment scopes", + "ignoreCase": "value", + "pattern": "^AzureResourceManagerTemplateDeployment@3$" + }, + "inputs": { + "description": "ARM template deployment inputs", + "properties": { + "deploymentScope": { + "description": "Deployment scope", + "ignoreCase": "all", + "enum": [ + "Management Group", + "Subscription", + "Resource Group" + ] + }, + "azureResourceManagerConnection": { + "type": "string", + "description": "Azure Resource Manager connection", + "ignoreCase": "key", + "aliases": [ + "ConnectedServiceName" + ] + }, + "subscriptionId": { + "type": "string", + "description": "Subscription", + "ignoreCase": "key", + "aliases": [ + "subscriptionName" + ] + }, + "action": { + "description": "Action", + "ignoreCase": "all", + "enum": [ + "Create Or Update Resource Group", + "DeleteRG" + ] + }, + "resourceGroupName": { + "type": "string", + "description": "Resource group", + "ignoreCase": "key" + }, + "location": { + "type": "string", + "description": "Location", + "ignoreCase": "key" + }, + "templateLocation": { + "description": "Template location", + "ignoreCase": "all", + "enum": [ + "Linked artifact", + "URL of the file" + ] + }, + "csmFileLink": { + "type": "string", + "description": "Template link", + "ignoreCase": "key" + }, + "csmParametersFileLink": { + "type": "string", + "description": "Template parameters link", + "ignoreCase": "key" + }, + "csmFile": { + "type": "string", + "description": "Template", + "ignoreCase": "key" + }, + "csmParametersFile": { + "type": "string", + "description": "Template parameters", + "ignoreCase": "key" + }, + "overrideParameters": { + "type": "string", + "description": "Override template parameters", + "ignoreCase": "key" + }, + "deploymentMode": { + "description": "Deployment mode", + "ignoreCase": "all", + "enum": [ + "Incremental", + "Complete", + "Validation" + ] + }, + "deploymentName": { + "type": "string", + "description": "Deployment name", + "ignoreCase": "key" + }, + "deploymentOutputs": { + "type": "string", + "description": "Deployment outputs", + "ignoreCase": "key" + }, + "addSpnToEnvironment": { + "type": "boolean", + "description": "Access service principal details in override parameters", + "ignoreCase": "key" + }, + "useWithoutJSON": { + "type": "boolean", + "description": "Use individual output values without JSON.Stringify applied", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "azureResourceManagerConnection" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -24983,278 +25388,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "ARM template deployment\n\nDeploy an Azure Resource Manager (ARM) template to all the deployment scopes", - "ignoreCase": "value", - "pattern": "^AzureResourceManagerTemplateDeployment@3$" - }, - "inputs": { - "description": "ARM template deployment inputs", - "properties": { - "deploymentScope": { - "description": "Deployment scope", - "ignoreCase": "all", - "enum": [ - "Management Group", - "Subscription", - "Resource Group" - ] - }, - "azureResourceManagerConnection": { - "type": "string", - "description": "Azure Resource Manager connection", - "ignoreCase": "key", - "aliases": [ - "ConnectedServiceName" - ] - }, - "subscriptionId": { - "type": "string", - "description": "Subscription", - "ignoreCase": "key", - "aliases": [ - "subscriptionName" - ] - }, - "action": { - "description": "Action", - "ignoreCase": "all", - "enum": [ - "Create Or Update Resource Group", - "DeleteRG" - ] - }, - "resourceGroupName": { - "type": "string", - "description": "Resource group", - "ignoreCase": "key" - }, - "location": { - "type": "string", - "description": "Location", - "ignoreCase": "key" - }, - "templateLocation": { - "description": "Template location", - "ignoreCase": "all", - "enum": [ - "Linked artifact", - "URL of the file" - ] - }, - "csmFileLink": { - "type": "string", - "description": "Template link", - "ignoreCase": "key" - }, - "csmParametersFileLink": { - "type": "string", - "description": "Template parameters link", - "ignoreCase": "key" - }, - "csmFile": { - "type": "string", - "description": "Template", - "ignoreCase": "key" - }, - "csmParametersFile": { - "type": "string", - "description": "Template parameters", - "ignoreCase": "key" - }, - "overrideParameters": { - "type": "string", - "description": "Override template parameters", - "ignoreCase": "key" - }, - "deploymentMode": { - "description": "Deployment mode", - "ignoreCase": "all", - "enum": [ - "Incremental", - "Complete", - "Validation" - ] - }, - "deploymentName": { - "type": "string", - "description": "Deployment name", - "ignoreCase": "key" - }, - "deploymentOutputs": { - "type": "string", - "description": "Deployment outputs", - "ignoreCase": "key" - }, - "addSpnToEnvironment": { - "type": "boolean", - "description": "Access service principal details in override parameters", - "ignoreCase": "key" - }, - "useWithoutJSON": { - "type": "boolean", - "description": "Use individual output values without JSON.Stringify applied", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "azureResourceManagerConnection" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, - { - "properties": { - "task": { - "description": "Azure Resource Group Deployment\n\nDeploy, start, stop, delete Azure Resource Groups", - "ignoreCase": "value", - "pattern": "^AzureResourceGroupDeployment@1$" - }, - "inputs": { - "description": "Azure Resource Group Deployment inputs", - "properties": { - "ConnectedServiceNameSelector": { - "description": "Azure Connection Type", - "ignoreCase": "all", - "enum": [ - "ConnectedServiceName", - "ConnectedServiceNameClassic" - ] - }, - "ConnectedServiceName": { - "type": "string", - "description": "Azure Subscription", - "ignoreCase": "key" - }, - "ConnectedServiceNameClassic": { - "type": "string", - "description": "Azure Classic Subscription", - "ignoreCase": "key" - }, - "action": { - "description": "Action", - "ignoreCase": "all", - "enum": [ - "Create Or Update Resource Group", - "Select Resource Group", - "Start", - "Stop", - "Restart", - "Delete", - "DeleteRG" - ] - }, - "actionClassic": { - "description": "Action", - "ignoreCase": "all", - "enum": [ - "Select Resource Group" - ] - }, - "resourceGroupName": { - "type": "string", - "description": "Resource Group", - "ignoreCase": "key" - }, - "cloudService": { - "type": "string", - "description": "Cloud Service", - "ignoreCase": "key" - }, - "location": { - "description": "Location", - "ignoreCase": "all", - "enum": [ - "Australia East", - "Australia Southeast", - "Brazil South", - "Canada Central", - "Canada East", - "Central India", - "Central US", - "East Asia", - "East US", - "East US 2 ", - "Japan East", - "Japan West", - "North Central US", - "North Europe", - "South Central US", - "South India", - "Southeast Asia", - "UK South", - "UK West", - "West Central US", - "West Europe", - "West India", - "West US", - "West US 2" - ] - }, - "csmFile": { - "type": "string", - "description": "Template", - "ignoreCase": "key" - }, - "csmParametersFile": { - "type": "string", - "description": "Template Parameters", - "ignoreCase": "key" - }, - "overrideParameters": { - "type": "string", - "description": "Override Template Parameters", - "ignoreCase": "key" - }, - "deploymentMode": { - "description": "Deployment Mode", - "ignoreCase": "all", - "enum": [ - "Validation", - "Incremental", - "Complete" - ] - }, - "enableDeploymentPrerequisitesForCreate": { - "type": "boolean", - "description": "Enable Deployment Prerequisites", - "ignoreCase": "key" - }, - "enableDeploymentPrerequisitesForSelect": { - "type": "boolean", - "description": "Enable Deployment Prerequisites", - "ignoreCase": "key" - }, - "outputVariable": { - "type": "string", - "description": "Resource Group", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "deprecationMessage": "AzureResourceGroupDeployment is deprecated - Deploy, start, stop, delete Azure Resource Groups", - "doNotSuggest": true, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -26093,44 +26226,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Use Node.js ecosystem\n\nSet up a Node.js environment and add it to the PATH, additionally providing proxy support", - "ignoreCase": "value", - "pattern": "^UseNode@1$" - }, - "inputs": { - "description": "Use Node.js ecosystem inputs", - "properties": { - "version": { - "type": "string", - "description": "Version", - "ignoreCase": "key" - }, - "checkLatest": { - "type": "boolean", - "description": "Check for Latest Version", - "ignoreCase": "key" - }, - "force32bit": { - "type": "boolean", - "description": "Use 32 bit version on x64 agents", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task" - ] - }, { "properties": { "task": { @@ -26173,6 +26268,64 @@ "type": "string", "description": "Set source for Node.js binaries", "ignoreCase": "key" + }, + "retryCountOnDownloadFails": { + "type": "string", + "description": "Set retry count when nodes downloads failed", + "ignoreCase": "key" + }, + "delayBetweenRetries": { + "type": "string", + "description": "Set delay between retries", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task" + ] + }, + { + "properties": { + "task": { + "description": "Use Node.js ecosystem\n\nSet up a Node.js environment and add it to the PATH, additionally providing proxy support", + "ignoreCase": "value", + "pattern": "^UseNode@1$" + }, + "inputs": { + "description": "Use Node.js ecosystem inputs", + "properties": { + "version": { + "type": "string", + "description": "Version", + "ignoreCase": "key" + }, + "checkLatest": { + "type": "boolean", + "description": "Check for Latest Version", + "ignoreCase": "key" + }, + "force32bit": { + "type": "boolean", + "description": "Use 32 bit version on x64 agents", + "ignoreCase": "key" + }, + "retryCountOnDownloadFails": { + "type": "string", + "description": "Set retry count when nodes downloads failed", + "ignoreCase": "key" + }, + "delayBetweenRetries": { + "type": "string", + "description": "Set delay between retries", + "ignoreCase": "key" } }, "additionalProperties": false, @@ -27169,6 +27322,11 @@ "description": "Retry count", "ignoreCase": "key" }, + "retryRedirectDownloadCount": { + "type": "string", + "description": "Retry count for redirect download", + "ignoreCase": "key" + }, "extractTars": { "type": "boolean", "description": "Extract all files that are stored inside tar archives", @@ -27488,89 +27646,6 @@ "inputs" ] }, - { - "properties": { - "task": { - "description": "Azure CLI\n\nRun Azure CLI commands against an Azure subscription in a Shell script when running on Linux agent or Batch script when running on Windows agent.", - "ignoreCase": "value", - "pattern": "^AzureCLI@1$" - }, - "inputs": { - "description": "Azure CLI inputs", - "properties": { - "azureSubscription": { - "type": "string", - "description": "Azure subscription", - "ignoreCase": "key", - "aliases": [ - "connectedServiceNameARM" - ] - }, - "scriptLocation": { - "description": "Script Location", - "ignoreCase": "all", - "enum": [ - "inlineScript", - "scriptPath" - ] - }, - "scriptPath": { - "type": "string", - "description": "Script Path", - "ignoreCase": "key" - }, - "inlineScript": { - "type": "string", - "description": "Inline Script", - "ignoreCase": "key" - }, - "arguments": { - "type": "string", - "description": "Arguments", - "ignoreCase": "key", - "aliases": [ - "args" - ] - }, - "addSpnToEnvironment": { - "type": "boolean", - "description": "Access service principal details in script", - "ignoreCase": "key" - }, - "useGlobalConfig": { - "type": "boolean", - "description": "Use global Azure CLI configuration", - "ignoreCase": "key" - }, - "workingDirectory": { - "type": "string", - "description": "Working Directory", - "ignoreCase": "key", - "aliases": [ - "cwd" - ] - }, - "failOnStandardError": { - "type": "boolean", - "description": "Fail on Standard Error", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "azureSubscription" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -27753,6 +27828,89 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Azure CLI\n\nRun Azure CLI commands against an Azure subscription in a Shell script when running on Linux agent or Batch script when running on Windows agent.", + "ignoreCase": "value", + "pattern": "^AzureCLI@1$" + }, + "inputs": { + "description": "Azure CLI inputs", + "properties": { + "azureSubscription": { + "type": "string", + "description": "Azure subscription", + "ignoreCase": "key", + "aliases": [ + "connectedServiceNameARM" + ] + }, + "scriptLocation": { + "description": "Script Location", + "ignoreCase": "all", + "enum": [ + "inlineScript", + "scriptPath" + ] + }, + "scriptPath": { + "type": "string", + "description": "Script Path", + "ignoreCase": "key" + }, + "inlineScript": { + "type": "string", + "description": "Inline Script", + "ignoreCase": "key" + }, + "arguments": { + "type": "string", + "description": "Arguments", + "ignoreCase": "key", + "aliases": [ + "args" + ] + }, + "addSpnToEnvironment": { + "type": "boolean", + "description": "Access service principal details in script", + "ignoreCase": "key" + }, + "useGlobalConfig": { + "type": "boolean", + "description": "Use global Azure CLI configuration", + "ignoreCase": "key" + }, + "workingDirectory": { + "type": "string", + "description": "Working Directory", + "ignoreCase": "key", + "aliases": [ + "cwd" + ] + }, + "failOnStandardError": { + "type": "boolean", + "description": "Fail on Standard Error", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "azureSubscription" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -28487,6 +28645,79 @@ "inputs" ] }, + { + "properties": { + "task": { + "description": "Azure Function on Kubernetes\n\nDeploy Azure function to Kubernetes cluster.", + "ignoreCase": "value", + "pattern": "^AzureFunctionOnKubernetes@0$" + }, + "inputs": { + "description": "Azure Function on Kubernetes inputs", + "properties": { + "dockerRegistryServiceConnection": { + "type": "string", + "description": "Docker registry service connection", + "ignoreCase": "key" + }, + "kubernetesServiceConnection": { + "type": "string", + "description": "Kubernetes service connection", + "ignoreCase": "key" + }, + "namespace": { + "type": "string", + "description": "Kubernetes namespace", + "ignoreCase": "key" + }, + "secretName": { + "type": "string", + "description": "Secret Name", + "ignoreCase": "key" + }, + "dockerHubNamespace": { + "type": "string", + "description": "Docker Hub namespace", + "ignoreCase": "key" + }, + "appName": { + "type": "string", + "description": "Application Name", + "ignoreCase": "key" + }, + "functionRootDirectory": { + "type": "string", + "description": "Function root directory", + "ignoreCase": "key" + }, + "waitForStability": { + "type": "boolean", + "description": "Wait for stability", + "ignoreCase": "key" + }, + "arguments": { + "type": "string", + "description": "Arguments", + "ignoreCase": "key" + } + }, + "additionalProperties": false, + "required": [ + "dockerRegistryServiceConnection", + "kubernetesServiceConnection", + "appName" + ] + } + }, + "doNotSuggest": false, + "firstProperty": [ + "task" + ], + "required": [ + "task", + "inputs" + ] + }, { "properties": { "task": { @@ -28591,64 +28822,42 @@ { "properties": { "task": { - "description": "Azure Function on Kubernetes\n\nDeploy Azure function to Kubernetes cluster.", + "description": "Shell script\n\nRun a shell script using Bash", "ignoreCase": "value", - "pattern": "^AzureFunctionOnKubernetes@0$" + "pattern": "^ShellScript@2$" }, "inputs": { - "description": "Azure Function on Kubernetes inputs", + "description": "Shell script inputs", "properties": { - "dockerRegistryServiceConnection": { + "scriptPath": { "type": "string", - "description": "Docker registry service connection", + "description": "Script Path", "ignoreCase": "key" }, - "kubernetesServiceConnection": { - "type": "string", - "description": "Kubernetes service connection", - "ignoreCase": "key" - }, - "namespace": { - "type": "string", - "description": "Kubernetes namespace", - "ignoreCase": "key" - }, - "secretName": { - "type": "string", - "description": "Secret Name", - "ignoreCase": "key" - }, - "dockerHubNamespace": { - "type": "string", - "description": "Docker Hub namespace", - "ignoreCase": "key" - }, - "appName": { - "type": "string", - "description": "Application Name", - "ignoreCase": "key" - }, - "functionRootDirectory": { - "type": "string", - "description": "Function root directory", - "ignoreCase": "key" - }, - "waitForStability": { - "type": "boolean", - "description": "Wait for stability", - "ignoreCase": "key" - }, - "arguments": { + "args": { "type": "string", "description": "Arguments", "ignoreCase": "key" + }, + "disableAutoCwd": { + "type": "boolean", + "description": "Specify Working Directory", + "ignoreCase": "key" + }, + "cwd": { + "type": "string", + "description": "Working Directory", + "ignoreCase": "key" + }, + "failOnStandardError": { + "type": "boolean", + "description": "Fail on Standard Error", + "ignoreCase": "key" } }, "additionalProperties": false, "required": [ - "dockerRegistryServiceConnection", - "kubernetesServiceConnection", - "appName" + "scriptPath" ] } }, @@ -28722,57 +28931,6 @@ "task" ] }, - { - "properties": { - "task": { - "description": "Shell script\n\nRun a shell script using Bash", - "ignoreCase": "value", - "pattern": "^ShellScript@2$" - }, - "inputs": { - "description": "Shell script inputs", - "properties": { - "scriptPath": { - "type": "string", - "description": "Script Path", - "ignoreCase": "key" - }, - "args": { - "type": "string", - "description": "Arguments", - "ignoreCase": "key" - }, - "disableAutoCwd": { - "type": "boolean", - "description": "Specify Working Directory", - "ignoreCase": "key" - }, - "cwd": { - "type": "string", - "description": "Working Directory", - "ignoreCase": "key" - }, - "failOnStandardError": { - "type": "boolean", - "description": "Fail on Standard Error", - "ignoreCase": "key" - } - }, - "additionalProperties": false, - "required": [ - "scriptPath" - ] - } - }, - "doNotSuggest": false, - "firstProperty": [ - "task" - ], - "required": [ - "task", - "inputs" - ] - }, { "properties": { "task": { @@ -30134,4 +30292,4 @@ ] } } -} \ No newline at end of file +} From 6c788dbfff8457f1c83a8a3ea33ac67e202bd444 Mon Sep 17 00:00:00 2001 From: Winston Liu Date: Tue, 1 Oct 2024 08:02:55 -0700 Subject: [PATCH 2/2] Migrate to builtin authentication provider & remove Configure Pipeline support (#595) * Remove Azure Accounts dependency & delete configure flow * Don't bring in a new package for one API call * Only run MSA logic on MSAs * Account for the non-MSAL case * Further remove references to Configure Pipeline * Remove leftover comment * Use modern versions of vsce * Bump compilation target VS Code 1.82/Node 18 supports all the way up to ES2022. * Also remove uuid dependency * Switch to @vscode/test-cli * Provide a fast path for the single org scenario And use clearSessionPreference when the wrong account is used * Remove unused telemetry keys * Add user agent info * Add Extension Test Runner as a recommended extension --- .azure-pipelines/common-steps.yml | 4 +- .gitignore | 1 + .vscode-test.mjs | 16 + .vscode/extensions.json | 3 +- .vscode/launch.json | 2 +- .vscodeignore | 3 +- README.md | 28 - package-lock.json | 3902 +++++++++-------- package.json | 56 +- resources/configure-pipeline.gif | Bin 599829 -> 0 bytes resources/gitHubPatScope.png | Bin 84918 -> 0 bytes src/clients/devOps/organizationsClient.ts | 55 + src/configure/activate.ts | 12 - .../clients/azure/appServiceClient.ts | 74 - .../clients/devOps/organizationsClient.ts | 93 - .../clients/devOps/serviceConnectionClient.ts | 141 - src/configure/clients/restClient.ts | 18 - src/configure/configure.ts | 791 ---- src/configure/helper/commonHelper.ts | 67 - .../helper/devOps/azureDevOpsHelper.ts | 140 - .../helper/devOps/serviceConnectionHelper.ts | 58 - src/configure/helper/gitHubHelper.ts | 33 - src/configure/helper/graphHelper.ts | 182 - src/configure/helper/templateHelper.ts | 214 - src/configure/helper/userCancelledError.ts | 8 - src/configure/model/models.ts | 124 - src/configure/resources/constants.ts | 7 - src/configure/resources/tracePoints.ts | 8 - src/configure/templates/dotnetLinuxWebApp.yml | 95 - .../templates/dotnetWindowsFunctionApp.yml | 95 - .../templates/dotnetWindowsWebApp.yml | 95 - .../templates/nodejsLinuxFunctionApp.yml | 78 - .../templates/nodejsWindowsWebApp.yml | 66 - .../templates/nodejsWindowsWebAppAngular.yml | 68 - .../templates/nodejsWindowsWebAppGrunt.yml | 66 - .../templates/nodejsWindowsWebAppGulp.yml | 66 - .../templates/nodejsWindowsWebAppWebpack.yml | 67 - src/configure/templates/pythonDjango.yml | 43 - .../templates/pythonLinuxFunctionApp.yml | 76 - src/configure/templates/pythonLinuxWebApp.yml | 70 - src/configure/templates/simpleWebApp.yml | 60 - src/extension.ts | 12 +- src/extensionApis.ts | 19 - src/helpers/azureDevOpsHelper.ts | 70 + .../helper => helpers}/controlProvider.ts | 4 +- src/helpers/parseError.ts | 247 -- src/helpers/telemetryHelper.ts | 65 +- src/helpers/telemetryKeys.ts | 15 - src/messages.ts | 45 +- src/schema-association-service-1espt.ts | 44 +- src/schema-association-service.ts | 301 +- src/test/index.ts | 40 - src/test/runTest.ts | 51 - .../suite/configure/azureDevOpsHelper.test.ts | 158 - src/test/suite/configure/gitHubHelper.test.ts | 64 - src/typings/azure-account.api.d.ts | 71 - tsconfig.json | 7 +- webpack.config.js | 14 - 58 files changed, 2408 insertions(+), 5804 deletions(-) create mode 100644 .vscode-test.mjs delete mode 100644 resources/configure-pipeline.gif delete mode 100644 resources/gitHubPatScope.png create mode 100644 src/clients/devOps/organizationsClient.ts delete mode 100644 src/configure/activate.ts delete mode 100644 src/configure/clients/azure/appServiceClient.ts delete mode 100644 src/configure/clients/devOps/organizationsClient.ts delete mode 100644 src/configure/clients/devOps/serviceConnectionClient.ts delete mode 100644 src/configure/clients/restClient.ts delete mode 100644 src/configure/configure.ts delete mode 100644 src/configure/helper/commonHelper.ts delete mode 100644 src/configure/helper/devOps/azureDevOpsHelper.ts delete mode 100644 src/configure/helper/devOps/serviceConnectionHelper.ts delete mode 100644 src/configure/helper/gitHubHelper.ts delete mode 100644 src/configure/helper/graphHelper.ts delete mode 100644 src/configure/helper/templateHelper.ts delete mode 100644 src/configure/helper/userCancelledError.ts delete mode 100644 src/configure/model/models.ts delete mode 100644 src/configure/resources/constants.ts delete mode 100644 src/configure/resources/tracePoints.ts delete mode 100644 src/configure/templates/dotnetLinuxWebApp.yml delete mode 100644 src/configure/templates/dotnetWindowsFunctionApp.yml delete mode 100644 src/configure/templates/dotnetWindowsWebApp.yml delete mode 100644 src/configure/templates/nodejsLinuxFunctionApp.yml delete mode 100644 src/configure/templates/nodejsWindowsWebApp.yml delete mode 100644 src/configure/templates/nodejsWindowsWebAppAngular.yml delete mode 100644 src/configure/templates/nodejsWindowsWebAppGrunt.yml delete mode 100644 src/configure/templates/nodejsWindowsWebAppGulp.yml delete mode 100644 src/configure/templates/nodejsWindowsWebAppWebpack.yml delete mode 100644 src/configure/templates/pythonDjango.yml delete mode 100644 src/configure/templates/pythonLinuxFunctionApp.yml delete mode 100644 src/configure/templates/pythonLinuxWebApp.yml delete mode 100644 src/configure/templates/simpleWebApp.yml create mode 100644 src/helpers/azureDevOpsHelper.ts rename src/{configure/helper => helpers}/controlProvider.ts (88%) delete mode 100644 src/helpers/parseError.ts delete mode 100644 src/test/index.ts delete mode 100644 src/test/runTest.ts delete mode 100644 src/test/suite/configure/azureDevOpsHelper.test.ts delete mode 100644 src/test/suite/configure/gitHubHelper.test.ts delete mode 100644 src/typings/azure-account.api.d.ts diff --git a/.azure-pipelines/common-steps.yml b/.azure-pipelines/common-steps.yml index 21940d4..a708a05 100644 --- a/.azure-pipelines/common-steps.yml +++ b/.azure-pipelines/common-steps.yml @@ -35,8 +35,8 @@ steps: # Acquire the `vsce` tool and use it to package - script: | - npm install -g vsce - vsce package --githubBranch main + npm install -g @vscode/vsce + vsce package displayName: Create VSIX - script: | diff --git a/.gitignore b/.gitignore index c27f898..af649f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +coverage dist out node_modules diff --git a/.vscode-test.mjs b/.vscode-test.mjs new file mode 100644 index 0000000..5396a3b --- /dev/null +++ b/.vscode-test.mjs @@ -0,0 +1,16 @@ +// @ts-check + +import { defineConfig } from '@vscode/test-cli'; +import path from 'path'; + +export default defineConfig({ + files: 'out/test/**/*.test.js', + workspaceFolder: path.join(import.meta.dirname, 'src', 'test', 'workspace'), + mocha: { + timeout: 100000, + }, + coverage: { + reporter: ['cobertura', 'text', 'html'], + output: './coverage', + } +}); diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 3ac9aeb..186459d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,6 +2,7 @@ // See http://go.microsoft.com/fwlink/?LinkId=827846 // for the documentation about the extensions.json format "recommendations": [ - "dbaeumer.vscode-eslint" + "dbaeumer.vscode-eslint", + "ms-vscode.extension-test-runner" ] } diff --git a/.vscode/launch.json b/.vscode/launch.json index 037293b..febd3e7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -21,7 +21,7 @@ "name": "Extension Tests", "type": "extensionHost", "request": "launch", - "runtimeExecutable": "${execPath}", + "testConfiguration": "${workspaceFolder}/.vscode-test.js", "args": [ "${workspaceFolder}/src/test/workspace", "--extensionDevelopmentPath=${workspaceFolder}", diff --git a/.vscodeignore b/.vscodeignore index 05952e6..b9be09e 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,12 +1,13 @@ - .gitattributes .gitignore +.vscode-test.mjs tsconfig.json tslint.json webpack.config.js .azure-pipelines/ .vscode/ .vscode-test/ +coverage/ dist/**/*.map examples/ node_modules/ diff --git a/README.md b/README.md index 9435fc2..3fd2058 100644 --- a/README.md +++ b/README.md @@ -56,38 +56,10 @@ Add this to your `settings.json`: Both format on save and the `Format document` command should now work! -## Pipeline configuration - -![Configure Pipeline Demo](https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/main/resources/configure-pipeline.gif) - -To set up a pipeline, choose *Azure Pipelines: Configure Pipeline* from the command palette (Ctrl/Cmd + Shift + P) or right-click in the file explorer. The guided workflow will generate a starter YAML file defining the build and deploy process. - -You can customize the pipeline using all the features offered by [Azure Pipelines.](https://azure.microsoft.com/services/devops/pipelines/). - -Once the setup is completed, an automatic CI/CD trigger will fire for every code push. To set this up, the extension will ask for a GitHub PAT with *repo* and *admin:repo_hook* scope. - -![GitHub PAT scope](resources/gitHubPatScope.png) - ## Telemetry VS Code collects usage data and sends it to Microsoft to help improve our products and services. Read our [privacy statement](https://go.microsoft.com/fwlink/?LinkID=528096&clcid=0x409) to learn more. If you don’t wish to send usage data to Microsoft, you can set the `telemetry.enableTelemetry` setting to `false`. Learn more in our [FAQ](https://code.visualstudio.com/docs/supporting/faq#_how-to-disable-telemetry-reporting). -## Troubleshooting failures - -- **Selected workspace is not a Git repository**: You can configure a pipeline for a Git repository backed by GitHub or Azure Repos. Initialize your workspace as a Git repo, commit your files, and add a remote to GitHub or Azure Repos. Run the following commands to configure git repository: - - `git init` - - `git add *` - - `git commit -m ` - - `git remote add ` - -- **The current branch doesn't have a tracking branch, and the selected repository has no remotes**: You can configure a pipeline for a Git repository backed by GitHub or Azure Repos. To add a new remote Git repository, run `git remote add ` - -- **Failed to determine Azure Repo details from remote url**: If you're configuring a pipeline for a Git repository backed by Azure Repos, ensure that it has a remote pointing to a valid Azure Repos Git repo URL. - ## Extension Development If you are only working on the extension (i.e. syntax highlighting, configure pipeline, and the language client): diff --git a/package-lock.json b/package-lock.json index 3ae9bf8..6e56308 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,33 +9,21 @@ "version": "1.237.0", "license": "MIT", "dependencies": { - "@azure/arm-appservice": "^6.1.0", - "@azure/arm-subscriptions": "^3.0.0", - "@azure/ms-rest-azure-env": "^2.0.0", - "@azure/ms-rest-nodeauth": "^3.0.6", "@vscode/extension-telemetry": "^0.5.1", "azure-devops-node-api": "^11.0.1", "azure-pipelines-language-server": "0.8.0", - "html-to-text": "^5.1.1", - "mustache": "^4.2.0", - "uuid": "^8.3.2", "vscode-languageclient": "^7.0.0", "vscode-uri": "^3.0.2" }, "devDependencies": { - "@types/glob": "^7.2.0", - "@types/html-to-text": "^5.1.2", "@types/mocha": "^9.0.0", - "@types/mustache": "0.8.32", - "@types/node": "^14.16.0", - "@types/uuid": "^8.3.4", - "@types/vscode": "~1.64.0", + "@types/node": "~20.15.0", + "@types/vscode": "~1.82.0", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", - "@vscode/test-electron": "^1.6.2", - "copy-webpack-plugin": "^10.2.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", "eslint": "^8.54.0", - "glob": "^7.1.6", "mocha": "^9.1.1", "ts-loader": "^8.0.14", "typescript": "~5.2.2", @@ -43,135 +31,14 @@ "webpack-cli": "^4.4.0" }, "engines": { - "node": ">=12.20.0", - "vscode": "^1.64.0" + "vscode": "^1.82.0" } }, - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/abort-controller/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha1-BDj4EK16ntzeeiQcPYDbaTyMv+A=", - "license": "0BSD" - }, - "node_modules/@azure/arm-appservice": { - "version": "6.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/arm-appservice/-/arm-appservice-6.1.0.tgz", - "integrity": "sha1-wsTE1QvZ8OzL2Bomjh9uxkmqfKo=", - "deprecated": "Please note, versions of this package with version numbers 9.0.0 and below have been deprecated as of 31-March-2022. We strongly encourage you to upgrade to version 10.0.0 or above to continue receiving updates. Refer to our deprecation policy: https://azure.github.io/azure-sdk/policies_support.html for more details.", - "license": "MIT", - "dependencies": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", - "tslib": "^1.10.0" - } - }, - "node_modules/@azure/arm-subscriptions": { - "version": "3.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/arm-subscriptions/-/arm-subscriptions-3.1.2.tgz", - "integrity": "sha1-avsHVHiZQvGQwtjiRKUhyeLNuIY=", - "deprecated": "Please note, versions of this package with version numbers 3.1.2 and below have been deprecated as of 31-March-2022. We strongly encourage you to upgrade to version 4.0.0 or above to continue receiving updates. Refer to our deprecation policy: https://azure.github.io/azure-sdk/policies_support.html for more details.", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.1.4", - "@azure/ms-rest-azure-js": "^2.1.0", - "@azure/ms-rest-js": "^2.2.0", - "tslib": "^1.10.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.7.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/core-auth/-/core-auth-1.7.2.tgz", - "integrity": "sha1-VYt8t90SsAvuwHrl31kH103x69k=", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-auth/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha1-BDj4EK16ntzeeiQcPYDbaTyMv+A=", - "license": "0BSD" - }, - "node_modules/@azure/core-util": { - "version": "1.9.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/core-util/-/core-util-1.9.2.tgz", - "integrity": "sha1-HcN9xbDa40xXi+Ys+YkFunwMr+c=", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-util/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha1-BDj4EK16ntzeeiQcPYDbaTyMv+A=", - "license": "0BSD" - }, - "node_modules/@azure/ms-rest-azure-env": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz", - "integrity": "sha1-RYCfiXY6SAkk4h08YgzUCGZ3FiU=", - "license": "MIT" - }, - "node_modules/@azure/ms-rest-azure-js": { - "version": "2.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-azure-js/-/ms-rest-azure-js-2.1.0.tgz", - "integrity": "sha1-jJCzFGiuyjFGsGxxRLOG/Ugn9kw=", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.1.4", - "@azure/ms-rest-js": "^2.2.0", - "tslib": "^1.10.0" - } - }, - "node_modules/@azure/ms-rest-js": { - "version": "2.7.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz", - "integrity": "sha1-hjkGVXf/30lGlR4dJGM06/1y1Tc=", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.1.4", - "abort-controller": "^3.0.0", - "form-data": "^2.5.0", - "node-fetch": "^2.6.7", - "tslib": "^1.10.0", - "tunnel": "0.0.6", - "uuid": "^8.3.2", - "xml2js": "^0.5.0" - } - }, - "node_modules/@azure/ms-rest-nodeauth": { - "version": "3.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-nodeauth/-/ms-rest-nodeauth-3.1.1.tgz", - "integrity": "sha1-JiQiLwaFrlgIAdbxq+qyCSOBRpM=", - "license": "MIT", - "dependencies": { - "@azure/ms-rest-azure-env": "^2.0.0", - "@azure/ms-rest-js": "^2.0.4", - "adal-node": "^0.2.2" - } + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha1-daLotRy3WKdVPWgEpZMteqznXDk=", + "dev": true }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", @@ -349,6 +216,111 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha1-s3Znt7wYHBaHgiWbq0JHT79StVA=", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha1-lexAnGlhnWyxuLNPFLZg7yjr1lQ=", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha1-DmIyDPmcIa//OzASGSVGqsv7BcU=", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha1-hAyIA7DYBH9P8M+WMXazLU7z7XI=", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha1-FPja7G2B5yIdKjV+Zoyrc728p5Q=", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha1-1bZWjKaJ2FYTcLBwdoXSJDT6/0U=", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha1-VtwiNo7lcPrOG0mBmXXZuaXq0hQ=", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha1-5F44TkuOwWvOL9kDr3hFD2v37Jg=", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -451,14 +423,14 @@ "node": ">= 8" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha1-zLkURTYBeaBOf+av94wA/8Hur4I=", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=", "dev": true, - "license": "MIT", + "optional": true, "engines": { - "node": ">= 6" + "node": ">=14" } }, "node_modules/@types/estree": { @@ -468,23 +440,11 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha1-vBtb86qS8lvV3TnzXFc2G9zlsus=", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/html-to-text": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/html-to-text/-/html-to-text-5.1.2.tgz", - "integrity": "sha1-WacjzOQbVzt/pgZBTizqqIYDgJg=", - "dev": true, - "license": "MIT" + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha1-dznCMqH+6bTTzomF8xTAxtM1Sdc=", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -493,13 +453,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha1-B1CLRXl8uB7D8nMBGwVM0HVe3co=", - "dev": true, - "license": "MIT" - }, "node_modules/@types/mocha": { "version": "9.1.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-9.1.1.tgz", @@ -507,19 +460,15 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/mustache": { - "version": "0.8.32", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mustache/-/mustache-0.8.32.tgz", - "integrity": "sha1-fbO4Hyv0UL04gF9ZbSDsqXxO1ZU=", - "dev": true, - "license": "MIT" - }, "node_modules/@types/node": { - "version": "14.18.63", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-14.18.63.tgz", - "integrity": "sha1-F4j6jag427X56plLg0J4IF22yis=", + "version": "20.15.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-20.15.0.tgz", + "integrity": "sha1-cwX3/nxizTEEftjWXFCS8LDhxV0=", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "undici-types": "~6.13.0" + } }, "node_modules/@types/semver": { "version": "7.5.8", @@ -528,17 +477,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha1-vYakNhffBZR4fTi3NfVcgFvs8bw=", - "dev": true, - "license": "MIT" - }, "node_modules/@types/vscode": { - "version": "1.64.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/vscode/-/vscode-1.64.0.tgz", - "integrity": "sha1-v9gsjZLceCTBvghL4atGziDX+1U=", + "version": "1.82.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/vscode/-/vscode-1.82.0.tgz", + "integrity": "sha1-ibCyEXnc9ejO4WZKmgXF9sYNONA=", "dev": true, "license": "MIT" }, @@ -763,20 +705,281 @@ "vscode": "^1.60.0" } }, - "node_modules/@vscode/test-electron": { - "version": "1.6.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@vscode/test-electron/-/test-electron-1.6.2.tgz", - "integrity": "sha1-9jnKsZoAE5SQFQedz9L/DBqoihs=", + "node_modules/@vscode/test-cli": { + "version": "0.0.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@vscode/test-cli/-/test-cli-0.0.10.tgz", + "integrity": "sha1-NfDoHC4P+NrOsiPpnRtlMGwVgiw=", "dev": true, - "license": "MIT", "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" + "@types/mocha": "^10.0.2", + "c8": "^9.1.0", + "chokidar": "^3.5.3", + "enhanced-resolve": "^5.15.0", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^10.2.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "bin": { + "vscode-test": "out/bin.mjs" }, "engines": { - "node": ">=8.9.3" + "node": ">=18" + } + }, + "node_modules/@vscode/test-cli/node_modules/@types/mocha": { + "version": "10.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-10.0.8.tgz", + "integrity": "sha1-p+/1gW4HDDtNgD8dPNeAxOQpNKE=", + "dev": true + }, + "node_modules/@vscode/test-cli/node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha1-N2ETQOsiQ+cMxgTK011jJw1IeBs=", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vscode/test-cli/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=", + "dev": true + }, + "node_modules/@vscode/test-cli/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/diff/-/diff-5.2.0.tgz", + "integrity": "sha1-Jt7QR80RebeLlTfV73JVA84a5TE=", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@vscode/test-cli/node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha1-Z7+7zC+B1RG+d9aGqQJn73+JihU=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@vscode/test-cli/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha1-wftl+PUBeQHN0slRhkuhhFihBgI=", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@vscode/test-cli/node_modules/mocha": { + "version": "10.7.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha1-rjIAPKu9UrWa7OF4RgVqaOtLB1I=", + "dev": true, + "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" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@vscode/test-cli/node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-8.1.0.tgz", + "integrity": "sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4=", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY=", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vscode/test-cli/node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@vscode/test-cli/node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vscode/test-cli/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.3.tgz", + "integrity": "sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=", + "dev": true + }, + "node_modules/@vscode/test-cli/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha1-F7/PaGKI9THbPeoyFVEGIcy1WVQ=", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@vscode/test-cli/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha1-GWenPvQGCoLxKrlq+G1S/bdu7KA=", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vscode/test-cli/node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha1-Bg9zs50Mr5fG22TaAEzQG0wJlUQ=", + "dev": true + }, + "node_modules/@vscode/test-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha1-mR3zmspnWhkrgW4eA2P5110qomk=", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vscode/test-cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vscode/test-cli/node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha1-DASwddsCy/5g3I5s8vVIaxo2CKo=", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vscode/test-cli/node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU=", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@vscode/test-electron/-/test-electron-2.4.1.tgz", + "integrity": "sha1-XCdgZAv2ku+9qhi6/NNftRloiUE=", + "dev": true, + "dependencies": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^7.0.1", + "semver": "^7.6.2" + }, + "engines": { + "node": ">=16" } }, "node_modules/@webassemblyjs/ast": { @@ -979,15 +1182,6 @@ } } }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha1-oTN8pCaqYc75/hW1so40CnL2+pk=", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -1002,18 +1196,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha1-6vVNU7YrrkE46AnKIlyEOabvs5I=", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/acorn": { "version": "8.12.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn/-/acorn-8.12.1.tgz", @@ -1047,47 +1229,16 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/adal-node": { - "version": "0.2.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adal-node/-/adal-node-0.2.4.tgz", - "integrity": "sha1-iBvu2dSTt2qGcGrVyNxvYO/wRSA=", - "deprecated": "This package is no longer supported. Please migrate to @azure/msal-node.", - "license": "Apache-2.0", - "dependencies": { - "@xmldom/xmldom": "^0.8.3", - "async": "^2.6.3", - "axios": "^0.21.1", - "date-utils": "*", - "jws": "3.x.x", - "underscore": ">= 1.3.1", - "uuid": "^3.1.0", - "xpath.js": "~1.1.0" - }, - "engines": { - "node": ">= 0.6.15" - } - }, - "node_modules/adal-node/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=", + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha1-vb3tffsJa3UaKgh+7rlmRyWy4xc=", "dev": true, - "license": "MIT", "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -1107,48 +1258,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha1-bmaUAGWet0lzu/LjMycYCgmWtSA=", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha1-N9mlx3ava8ktf0+VEOukwKYNEaY=", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=", - "dev": true, - "license": "MIT" - }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -1228,30 +1337,6 @@ "node": ">=8" } }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/async/-/async-2.6.4.tgz", - "integrity": "sha1-cGt/9ghGZM1+rnE/b5ZUM7VQQiE=", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "license": "MIT" - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/axios/-/axios-0.21.4.tgz", - "integrity": "sha1-xnuQ3AVo5cHPKwuFjEO6KOLtpXU=", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, "node_modules/azure-devops-node-api": { "version": "11.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", @@ -1307,15 +1392,25 @@ "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=", "license": "MIT" }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha1-YKiH8wR2FKjhv/5dcXNJCpfcjIU=", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=", "dev": true, - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/big.js": { "version": "5.2.2", @@ -1327,20 +1422,6 @@ "node": "*" } }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "license": "MIT", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -1354,12 +1435,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/bl/-/bl-5.1.0.tgz", + "integrity": "sha1-GDcV9njHGI7O+f5HXZAglABiQnM=", "dev": true, - "license": "MIT" + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } }, "node_modules/brace-expansion": { "version": "2.0.1", @@ -1424,11 +1523,29 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", - "license": "BSD-3-Clause" + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha1-Ks5XhFnMj74qcKqo9S7mO2p0xsY=", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } }, "node_modules/buffer-from": { "version": "1.1.2", @@ -1437,23 +1554,70 @@ "dev": true, "license": "MIT" }, - "node_modules/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha1-0nMhNcWZnGSyd/z5savjSYJUcpw=", + "node_modules/c8": { + "version": "9.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/c8/-/c8-9.1.0.tgz", + "integrity": "sha1-Dle6Ornllgqx1lC0qG9x5Ty2gRI=", "dev": true, - "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, "engines": { - "node": ">=0.10" + "node": ">=14.14.0" } }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "node_modules/c8/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha1-DASwddsCy/5g3I5s8vVIaxo2CKo=", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/c8/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha1-mR3zmspnWhkrgW4eA2P5110qomk=", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/c8/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU=", "dev": true, "engines": { - "node": ">=0.2.0" + "node": ">=12" } }, "node_modules/call-bind": { @@ -1519,19 +1683,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-4.1.2.tgz", @@ -1600,6 +1751,33 @@ "node": ">=6.0" } }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha1-POz+NzS/T+Aqg2HL3A9v4oxqV+o=", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha1-F3Oo9LnE1qwxVj31Oz/B15Ri/kE=", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-7.0.4.tgz", @@ -1654,18 +1832,6 @@ "dev": true, "license": "MIT" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/commander/-/commander-2.20.3.tgz", @@ -1679,77 +1845,11 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "license": "MIT" }, - "node_modules/copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha1-bIVL4/2q4iAl2jS5ESzPgcYzCP4=", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.20.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha1-2lJjDTJ/i4jPv7V3KOKvXNm2uXU=", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "12.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/globby/-/globby-12.2.0.tgz", - "integrity": "sha1-KrgEa0+6T/bu3oNbKfZ4+Q49PCI=", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/slash/-/slash-4.0.0.tgz", - "integrity": "sha1-JCI3IXbExsWt214q2oha+YSzlqc=", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co=", + "dev": true }, "node_modules/core-util-is": { "version": "1.0.3", @@ -1773,15 +1873,6 @@ "node": ">= 8" } }, - "node_modules/date-utils": { - "version": "1.2.21", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/date-utils/-/date-utils-1.2.21.tgz", - "integrity": "sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q=", - "license": "MIT", - "engines": { - "node": ">0.4.0" - } - }, "node_modules/debug": { "version": "4.3.6", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.6.tgz", @@ -1837,15 +1928,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/diff/-/diff-5.0.0.tgz", @@ -1882,113 +1964,11 @@ "node": ">=6.0.0" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha1-XEXo6GmVJiYzHXqrMm0B2vZdWJ0=", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/entities/-/entities-2.2.0.tgz", - "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", - "dev": true, - "license": "MIT" - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha1-aWzi7Aqg5uqTo5f/zySqeEDIJ8s=", + "dev": true }, "node_modules/electron-to-chromium": { "version": "1.5.13", @@ -2028,12 +2008,6 @@ "node": ">=6.9.0" } }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/entities/-/entities-1.1.2.tgz", - "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=", - "license": "BSD-2-Clause" - }, "node_modules/envinfo": { "version": "7.13.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/envinfo/-/envinfo-7.13.0.tgz", @@ -2333,15 +2307,6 @@ "node": ">=0.10.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha1-XU0+vflYPWOlMzzi3rdICrKwV4k=", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/events/-/events-3.3.0.tgz", @@ -2403,13 +2368,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha1-zd0u7PyDpxwb4swu8gYTMb6KcTQ=", - "dev": true, - "license": "MIT" - }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -2505,38 +2463,20 @@ "dev": true, "license": "ISC" }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha1-f4FcDNpCScdP8J6V75fCO1/QOZs=", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha1-8svsV7XlniNxbhKP5E1OXdI4lfQ=", - "license": "MIT", + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha1-CshkTAbkMUOfhWHbjs8pp7VRnHc=", + "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.12" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/fs.realpath": { @@ -2560,37 +2500,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.2.tgz", @@ -2630,22 +2539,20 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", - "integrity": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.4.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-10.4.5.tgz", + "integrity": "sha1-9NnwuQ/9urCcnXf18ptCYlF7CVY=", "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2671,28 +2578,19 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "version": "9.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha1-10+d1rV9g9jpjPuCEzsDl4vJKeU=", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -2830,72 +2728,64 @@ "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/he/-/he-1.2.0.tgz", "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true, "license": "MIT", "bin": { "he": "bin/he" } }, - "node_modules/html-to-text": { - "version": "5.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/html-to-text/-/html-to-text-5.1.1.tgz", - "integrity": "sha1-LYnbe/NLx7y31UaxsiiZGhaSboc=", - "license": "MIT", - "dependencies": { - "he": "^1.2.0", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.11", - "minimist": "^1.2.0" - }, - "bin": { - "html-to-text": "bin/cli.js" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", - "license": "MIT", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha1-39YAJ9o2o238viNiYsAKWCJoFFM=", + "dev": true }, "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha1-ioyO9/WTLM+VPClsqCkblap0qjo=", + "version": "7.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha1-mosfJGhmwChQlIZYX2K48sGMJw4=", "dev": true, - "license": "MIT", "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha1-xZ7yJKBP6LdU89sAY6Jeow0ABdY=", + "version": "7.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha1-notQE4cymeEfq2/VSEBdotbGArI=", "dev": true, - "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ignore/-/ignore-5.3.2.tgz", @@ -2906,6 +2796,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2969,6 +2865,7 @@ "version": "2.0.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true, "license": "ISC" }, "node_modules/interpret": { @@ -3043,6 +2940,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha1-QMV2FFk4JtoRAK3mBZd41ZfxbpA=", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-number/-/is-number-7.0.0.tgz", @@ -3123,6 +3032,57 @@ "node": ">=0.10.0" } }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha1-LRZsSwZE1Do58Ev2wu3R5YXzF1Y=", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha1-kIMFusmlvRdaxqdEier9D8JEWn0=", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha1-2u0SueHcpRjhXAVuHlN+dBKA+gs=", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha1-iDOp2Jq0rN5hiJQr0cU7Y5DtWoo=", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jest-worker/-/jest-worker-27.5.1.tgz", @@ -3214,25 +3174,16 @@ "integrity": "sha1-Qvz1bXCFKgQ/ra/eUd20qFZJl40=", "license": "MIT" }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", - "license": "MIT", + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha1-NK7nDrGOofrsL1iSCKFX0f6wkcI=", + "dev": true, "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jws/-/jws-3.2.2.tgz", - "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, "node_modules/keyv": { @@ -3269,12 +3220,14 @@ "node": ">= 0.8.0" } }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lie/-/lie-3.3.0.tgz", + "integrity": "sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o=", "dev": true, - "license": "ISC" + "dependencies": { + "immediate": "~3.0.5" + } }, "node_modules/loader-runner": { "version": "4.3.0", @@ -3317,12 +3270,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=", - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3347,6 +3294,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha1-QQ/IoXtw5ZgBPfJXwkRrfzOD8Rk=", + "dev": true + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha1-w8IwencSd82WODBfkVwprnQbYU4=", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/memory-fs": { "version": "0.5.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/memory-fs/-/memory-fs-0.5.0.tgz", @@ -3361,39 +3329,6 @@ "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/memory-fs/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/memory-fs/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", - "dev": true, - "license": "MIT" - }, - "node_modules/memory-fs/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/merge-stream/-/merge-stream-2.0.0.tgz", @@ -3429,6 +3364,7 @@ "version": "1.52.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha1-u6vNwChZ9JhzAchW4zh85exDv3A=", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -3438,6 +3374,7 @@ "version": "2.1.35", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha1-OBqHG2KnNEUGYK497uRIE/cNlZo=", + "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -3446,6 +3383,15 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/minimatch": { "version": "9.0.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-9.0.3.tgz", @@ -3462,26 +3408,13 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha1-fe8D0kMtyuS6HWEURcSDlgYiVfY=", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha1-k6libOXl5mvU24aEnnUV6SNApwc=", "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/mocha": { @@ -3672,15 +3605,6 @@ "dev": true, "license": "MIT" }, - "node_modules/mustache": { - "version": "4.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha1-5YkjJNYKEuycKnM1ntylKXK/b2Q=", - "license": "MIT", - "bin": { - "mustache": "bin/mustache" - } - }, "node_modules/nanoid": { "version": "3.3.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nanoid/-/nanoid-3.3.1.tgz", @@ -3708,26 +3632,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha1-0PD6bj4twdJ+/NitmdVQvalNGH0=", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/node-releases/-/node-releases-2.0.18.tgz", @@ -3767,6 +3671,21 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/optionator/-/optionator-0.9.4.tgz", @@ -3785,6 +3704,119 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "7.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ora/-/ora-7.0.1.tgz", + "integrity": "sha1-zdUw7Nhl/jnkUaDnaXhlZpyxGTA=", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha1-lexAnGlhnWyxuLNPFLZg7yjr1lQ=", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha1-Z8IKfr73Dn85cKAfkPohDLaGA4U=", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha1-A1U6/qgLOXV0nPyzb3dsomjkE9Q=", + "dev": true + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha1-2CSYS2FsKSouGYIH1KYJmDhC9xQ=", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha1-og47ml9T+sauuOK7IsB88sjxbZM=", + "dev": true, + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha1-lkiNbtI/mtXYLRNSKvnkxMP9dRg=", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha1-1bZWjKaJ2FYTcLBwdoXSJDT6/0U=", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-limit/-/p-limit-3.1.0.tgz", @@ -3827,6 +3859,18 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha1-5QHNMJSyeEletCWNTJ9tWsMBnwA=", + "dev": true + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/pako/-/pako-1.0.11.tgz", + "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/parent-module/-/parent-module-1.0.1.tgz", @@ -3877,6 +3921,22 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha1-eWCmaIiFlKByCxKpEdGnQqufEdI=", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-type/-/path-type-4.0.0.tgz", @@ -4057,19 +4117,26 @@ } }, "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=", - "license": "MIT", + "version": "2.3.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", + "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readdirp/-/readdirp-3.6.0.tgz", @@ -4176,16 +4243,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.8.tgz", @@ -4237,6 +4294,28 @@ "node": ">=4" } }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha1-UZVgpDGJdQlt725gnUQQDtqkzLk=", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha1-qaF2f4r4QVURTqq9c/mSc8j1mtk=", + "dev": true + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/reusify/-/reusify-1.0.4.tgz", @@ -4265,6 +4344,49 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4293,6 +4415,7 @@ "version": "5.2.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true, "funding": [ { "type": "github", @@ -4309,69 +4432,6 @@ ], "license": "MIT" }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sax/-/sax-1.4.1.tgz", - "integrity": "sha1-RMyJiDd/EmME07P8EBDHM7kp7w8=", - "license": "ISC" - }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha1-cNfJPhU6JzqAWAGILr07/yDYnIs=", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha1-N9mlx3ava8ktf0+VEOukwKYNEaY=", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha1-adTThaRzPNvqtElkoRcKiPh/DhY=", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=", - "dev": true, - "license": "MIT" - }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.3.tgz", @@ -4415,8 +4475,7 @@ "version": "1.0.5", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/shallow-clone": { "version": "3.0.1", @@ -4472,6 +4531,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha1-lSGIwcvVRgcOLdIND0HArgUwywQ=", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/slash/-/slash-3.0.0.tgz", @@ -4509,15 +4580,36 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "license": "BSD-3-Clause" }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", - "license": "MIT", + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha1-IrPkADk6jijr9T+ZWPOIBiLv3iE=", + "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz", @@ -4533,6 +4625,21 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4546,6 +4653,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -4668,6 +4788,63 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha1-BKhphmHYBepvopO2y55jrARO8V4=", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/text-table/-/text-table-0.2.0.tgz", @@ -4688,22 +4865,6 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "license": "MIT" - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true, - "license": "MIT/X11", - "engines": { - "node": "*" - } - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -4738,12 +4899,6 @@ "webpack": "*" } }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=", - "license": "0BSD" - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tunnel/-/tunnel-0.0.6.tgz", @@ -4810,58 +4965,13 @@ "integrity": "sha1-lw4zljr5p92iKPF+voOZ5fvmOhA=", "license": "MIT" }, - "node_modules/unzipper": { - "version": "0.10.14", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha1-0rM8l3cU2g+8D4J3StNUcKfJYrE=", - "dev": true, - "license": "MIT", - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/unzipper/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "node_modules/undici-types": { + "version": "6.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha1-4+eSIKuMge0UlrWBJHGv188HXqU=", "dev": true, "license": "MIT" }, - "node_modules/unzipper/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", @@ -4907,15 +5017,21 @@ "version": "1.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true, "license": "MIT" }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha1-uVcqv6Yr1VbBbXX968GkEdX/MXU=", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" } }, "node_modules/vscode-json-languageservice": { @@ -5048,12 +5164,6 @@ "node": ">=10.13.0" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "license": "BSD-2-Clause" - }, "node_modules/webpack": { "version": "5.94.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/webpack/-/webpack-5.94.0.tgz", @@ -5251,16 +5361,6 @@ "node": ">=6" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/which/-/which-2.0.2.tgz", @@ -5319,6 +5419,24 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", @@ -5326,37 +5444,6 @@ "dev": true, "license": "ISC" }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha1-2UQGMfuy7YACA/rRBvJyT2LEk7c=", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha1-vpuuHIoEbnazESdyY0fQrXACvrM=", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xpath.js": { - "version": "1.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xpath.js/-/xpath.js-1.1.0.tgz", - "integrity": "sha1-OBakTtS7NSCRCD0AKjg91RBKX/E=", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/y18n/-/y18n-5.0.8.tgz", @@ -5433,114 +5520,11 @@ } }, "dependencies": { - "@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", - "requires": { - "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha1-BDj4EK16ntzeeiQcPYDbaTyMv+A=" - } - } - }, - "@azure/arm-appservice": { - "version": "6.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/arm-appservice/-/arm-appservice-6.1.0.tgz", - "integrity": "sha1-wsTE1QvZ8OzL2Bomjh9uxkmqfKo=", - "requires": { - "@azure/ms-rest-azure-js": "^2.0.1", - "@azure/ms-rest-js": "^2.0.4", - "tslib": "^1.10.0" - } - }, - "@azure/arm-subscriptions": { - "version": "3.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/arm-subscriptions/-/arm-subscriptions-3.1.2.tgz", - "integrity": "sha1-avsHVHiZQvGQwtjiRKUhyeLNuIY=", - "requires": { - "@azure/core-auth": "^1.1.4", - "@azure/ms-rest-azure-js": "^2.1.0", - "@azure/ms-rest-js": "^2.2.0", - "tslib": "^1.10.0" - } - }, - "@azure/core-auth": { - "version": "1.7.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/core-auth/-/core-auth-1.7.2.tgz", - "integrity": "sha1-VYt8t90SsAvuwHrl31kH103x69k=", - "requires": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.1.0", - "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha1-BDj4EK16ntzeeiQcPYDbaTyMv+A=" - } - } - }, - "@azure/core-util": { - "version": "1.9.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/core-util/-/core-util-1.9.2.tgz", - "integrity": "sha1-HcN9xbDa40xXi+Ys+YkFunwMr+c=", - "requires": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "dependencies": { - "tslib": { - "version": "2.6.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha1-BDj4EK16ntzeeiQcPYDbaTyMv+A=" - } - } - }, - "@azure/ms-rest-azure-env": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-azure-env/-/ms-rest-azure-env-2.0.0.tgz", - "integrity": "sha1-RYCfiXY6SAkk4h08YgzUCGZ3FiU=" - }, - "@azure/ms-rest-azure-js": { - "version": "2.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-azure-js/-/ms-rest-azure-js-2.1.0.tgz", - "integrity": "sha1-jJCzFGiuyjFGsGxxRLOG/Ugn9kw=", - "requires": { - "@azure/core-auth": "^1.1.4", - "@azure/ms-rest-js": "^2.2.0", - "tslib": "^1.10.0" - } - }, - "@azure/ms-rest-js": { - "version": "2.7.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz", - "integrity": "sha1-hjkGVXf/30lGlR4dJGM06/1y1Tc=", - "requires": { - "@azure/core-auth": "^1.1.4", - "abort-controller": "^3.0.0", - "form-data": "^2.5.0", - "node-fetch": "^2.6.7", - "tslib": "^1.10.0", - "tunnel": "0.0.6", - "uuid": "^8.3.2", - "xml2js": "^0.5.0" - } - }, - "@azure/ms-rest-nodeauth": { - "version": "3.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@azure/ms-rest-nodeauth/-/ms-rest-nodeauth-3.1.1.tgz", - "integrity": "sha1-JiQiLwaFrlgIAdbxq+qyCSOBRpM=", - "requires": { - "@azure/ms-rest-azure-env": "^2.0.0", - "@azure/ms-rest-js": "^2.0.4", - "adal-node": "^0.2.2" - } + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha1-daLotRy3WKdVPWgEpZMteqznXDk=", + "dev": true }, "@discoveryjs/json-ext": { "version": "0.5.7", @@ -5666,6 +5650,77 @@ "integrity": "sha1-Siho111taWPkI7z5C3/RvjQ0CdM=", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha1-s3Znt7wYHBaHgiWbq0JHT79StVA=", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha1-lexAnGlhnWyxuLNPFLZg7yjr1lQ=", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha1-DmIyDPmcIa//OzASGSVGqsv7BcU=", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha1-hAyIA7DYBH9P8M+WMXazLU7z7XI=", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha1-FPja7G2B5yIdKjV+Zoyrc728p5Q=", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha1-1bZWjKaJ2FYTcLBwdoXSJDT6/0U=", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha1-VtwiNo7lcPrOG0mBmXXZuaXq0hQ=", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha1-5F44TkuOwWvOL9kDr3hFD2v37Jg=", + "dev": true + }, "@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -5741,11 +5796,12 @@ "fastq": "^1.6.0" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha1-zLkURTYBeaBOf+av94wA/8Hur4I=", - "dev": true + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha1-p36nQvqyV3UUVDTrHSMoz1ATrDM=", + "dev": true, + "optional": true }, "@types/estree": { "version": "1.0.5", @@ -5753,20 +5809,10 @@ "integrity": "sha1-ps4+VW4A/ZiV3Yct0XKtDUvWh/Q=", "dev": true }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha1-vBtb86qS8lvV3TnzXFc2G9zlsus=", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/html-to-text": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/html-to-text/-/html-to-text-5.1.2.tgz", - "integrity": "sha1-WacjzOQbVzt/pgZBTizqqIYDgJg=", + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha1-dznCMqH+6bTTzomF8xTAxtM1Sdc=", "dev": true }, "@types/json-schema": { @@ -5775,29 +5821,20 @@ "integrity": "sha1-WWoXRyM2lNUPatinhp/Lb1bPWEE=", "dev": true }, - "@types/minimatch": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha1-B1CLRXl8uB7D8nMBGwVM0HVe3co=", - "dev": true - }, "@types/mocha": { "version": "9.1.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-9.1.1.tgz", "integrity": "sha1-58TxAB7vpLivvR7uJ6I3/uO/KcQ=", "dev": true }, - "@types/mustache": { - "version": "0.8.32", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mustache/-/mustache-0.8.32.tgz", - "integrity": "sha1-fbO4Hyv0UL04gF9ZbSDsqXxO1ZU=", - "dev": true - }, "@types/node": { - "version": "14.18.63", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-14.18.63.tgz", - "integrity": "sha1-F4j6jag427X56plLg0J4IF22yis=", - "dev": true + "version": "20.15.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-20.15.0.tgz", + "integrity": "sha1-cwX3/nxizTEEftjWXFCS8LDhxV0=", + "dev": true, + "requires": { + "undici-types": "~6.13.0" + } }, "@types/semver": { "version": "7.5.8", @@ -5805,16 +5842,10 @@ "integrity": "sha1-gmioxXo+Sr0lwWXs02I323lIpV4=", "dev": true }, - "@types/uuid": { - "version": "8.3.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha1-vYakNhffBZR4fTi3NfVcgFvs8bw=", - "dev": true - }, "@types/vscode": { - "version": "1.64.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/vscode/-/vscode-1.64.0.tgz", - "integrity": "sha1-v9gsjZLceCTBvghL4atGziDX+1U=", + "version": "1.82.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/vscode/-/vscode-1.82.0.tgz", + "integrity": "sha1-ibCyEXnc9ejO4WZKmgXF9sYNONA=", "dev": true }, "@typescript-eslint/eslint-plugin": { @@ -5935,16 +5966,219 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@vscode/extension-telemetry/-/extension-telemetry-0.5.2.tgz", "integrity": "sha1-sAiIjL+7693h8qyGv/50BXrdjCU=" }, - "@vscode/test-electron": { - "version": "1.6.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@vscode/test-electron/-/test-electron-1.6.2.tgz", - "integrity": "sha1-9jnKsZoAE5SQFQedz9L/DBqoihs=", + "@vscode/test-cli": { + "version": "0.0.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@vscode/test-cli/-/test-cli-0.0.10.tgz", + "integrity": "sha1-NfDoHC4P+NrOsiPpnRtlMGwVgiw=", "dev": true, "requires": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" + "@types/mocha": "^10.0.2", + "c8": "^9.1.0", + "chokidar": "^3.5.3", + "enhanced-resolve": "^5.15.0", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^10.2.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "dependencies": { + "@types/mocha": { + "version": "10.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-10.0.8.tgz", + "integrity": "sha1-p+/1gW4HDDtNgD8dPNeAxOQpNKE=", + "dev": true + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha1-N2ETQOsiQ+cMxgTK011jJw1IeBs=", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=", + "dev": true + }, + "diff": { + "version": "5.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/diff/-/diff-5.2.0.tgz", + "integrity": "sha1-Jt7QR80RebeLlTfV73JVA84a5TE=", + "dev": true + }, + "enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha1-Z7+7zC+B1RG+d9aGqQJn73+JihU=", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha1-wftl+PUBeQHN0slRhkuhhFihBgI=", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "mocha": { + "version": "10.7.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha1-rjIAPKu9UrWa7OF4RgVqaOtLB1I=", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "glob": { + "version": "8.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-8.1.0.tgz", + "integrity": "sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY=", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.3.tgz", + "integrity": "sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=", + "dev": true + }, + "supports-color": { + "version": "9.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha1-F7/PaGKI9THbPeoyFVEGIcy1WVQ=", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha1-GWenPvQGCoLxKrlq+G1S/bdu7KA=", + "dev": true + }, + "workerpool": { + "version": "6.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha1-Bg9zs50Mr5fG22TaAEzQG0wJlUQ=", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha1-mR3zmspnWhkrgW4eA2P5110qomk=", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha1-DASwddsCy/5g3I5s8vVIaxo2CKo=", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=", + "dev": true + } + } + }, + "@vscode/test-electron": { + "version": "2.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@vscode/test-electron/-/test-electron-2.4.1.tgz", + "integrity": "sha1-XCdgZAv2ku+9qhi6/NNftRloiUE=", + "dev": true, + "requires": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^7.0.1", + "semver": "^7.6.2" } }, "@webassemblyjs/ast": { @@ -6116,11 +6350,6 @@ "dev": true, "requires": {} }, - "@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha1-oTN8pCaqYc75/hW1so40CnL2+pk=" - }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -6133,14 +6362,6 @@ "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", "dev": true }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha1-6vVNU7YrrkE46AnKIlyEOabvs5I=", - "requires": { - "event-target-shim": "^5.0.0" - } - }, "acorn": { "version": "8.12.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn/-/acorn-8.12.1.tgz", @@ -6161,35 +6382,13 @@ "dev": true, "requires": {} }, - "adal-node": { - "version": "0.2.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adal-node/-/adal-node-0.2.4.tgz", - "integrity": "sha1-iBvu2dSTt2qGcGrVyNxvYO/wRSA=", - "requires": { - "@xmldom/xmldom": "^0.8.3", - "async": "^2.6.3", - "axios": "^0.21.1", - "date-utils": "*", - "jws": "3.x.x", - "underscore": ">= 1.3.1", - "uuid": "^3.1.0", - "xpath.js": "~1.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=" - } - } - }, "agent-base": { - "version": "6.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha1-Sf/1hXfP7j83F2/qtMIuAPhtf3c=", + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha1-vb3tffsJa3UaKgh+7rlmRyWy4xc=", "dev": true, "requires": { - "debug": "4" + "debug": "^4.3.4" } }, "ajv": { @@ -6204,35 +6403,6 @@ "uri-js": "^4.2.2" } }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha1-bmaUAGWet0lzu/LjMycYCgmWtSA=", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.17.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha1-N9mlx3ava8ktf0+VEOukwKYNEaY=", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=", - "dev": true - } - } - }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -6285,27 +6455,6 @@ "integrity": "sha1-t5hCCtvrHego2ErNii4j0+/oXo0=", "dev": true }, - "async": { - "version": "2.6.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/async/-/async-2.6.4.tgz", - "integrity": "sha1-cGt/9ghGZM1+rnE/b5ZUM7VQQiE=", - "requires": { - "lodash": "^4.17.14" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "axios": { - "version": "0.21.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/axios/-/axios-0.21.4.tgz", - "integrity": "sha1-xnuQ3AVo5cHPKwuFjEO6KOLtpXU=", - "requires": { - "follow-redirects": "^1.14.0" - } - }, "azure-devops-node-api": { "version": "11.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-devops-node-api/-/azure-devops-node-api-11.2.0.tgz", @@ -6348,10 +6497,10 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=" }, - "big-integer": { - "version": "1.6.52", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha1-YKiH8wR2FKjhv/5dcXNJCpfcjIU=", + "base64-js": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=", "dev": true }, "big.js": { @@ -6360,27 +6509,35 @@ "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", "dev": true }, - "binary": { - "version": "0.3.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "binary-extensions": { "version": "2.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha1-9uFKl4WNMnJSIAJC1Mz+UixEVSI=", "dev": true }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true + "bl": { + "version": "5.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/bl/-/bl-5.1.0.tgz", + "integrity": "sha1-GDcV9njHGI7O+f5HXZAglABiQnM=", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } }, "brace-expansion": { "version": "2.0.1", @@ -6418,10 +6575,15 @@ "update-browserslist-db": "^1.1.0" } }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + "buffer": { + "version": "6.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha1-Ks5XhFnMj74qcKqo9S7mO2p0xsY=", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } }, "buffer-from": { "version": "1.1.2", @@ -6429,17 +6591,58 @@ "integrity": "sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=", "dev": true }, - "buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha1-0nMhNcWZnGSyd/z5savjSYJUcpw=", - "dev": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true + "c8": { + "version": "9.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/c8/-/c8-9.1.0.tgz", + "integrity": "sha1-Dle6Ornllgqx1lC0qG9x5Ty2gRI=", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha1-DASwddsCy/5g3I5s8vVIaxo2CKo=", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha1-mR3zmspnWhkrgW4eA2P5110qomk=", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU=", + "dev": true + } + } }, "call-bind": { "version": "1.0.7", @@ -6471,15 +6674,6 @@ "integrity": "sha1-Ut5ZUp6LArGu3Kr1wF2eI8DCgTg=", "dev": true }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "4.1.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-4.1.2.tgz", @@ -6523,6 +6717,21 @@ "integrity": "sha1-Bb/9f/koRlCTMUcIyTvfqb0fD1s=", "dev": true }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha1-POz+NzS/T+Aqg2HL3A9v4oxqV+o=", + "dev": true, + "requires": { + "restore-cursor": "^4.0.0" + } + }, + "cli-spinners": { + "version": "2.9.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha1-F3Oo9LnE1qwxVj31Oz/B15Ri/kE=", + "dev": true + }, "cliui": { "version": "7.0.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-7.0.4.tgz", @@ -6566,14 +6775,6 @@ "integrity": "sha1-nreT5oMwZ/cjWQL807CZF6AAqVo=", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "2.20.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/commander/-/commander-2.20.3.tgz", @@ -6585,47 +6786,11 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "copy-webpack-plugin": { - "version": "10.2.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", - "integrity": "sha1-bIVL4/2q4iAl2jS5ESzPgcYzCP4=", - "dev": true, - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^12.0.2", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "array-union": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha1-2lJjDTJ/i4jPv7V3KOKvXNm2uXU=", - "dev": true - }, - "globby": { - "version": "12.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/globby/-/globby-12.2.0.tgz", - "integrity": "sha1-KrgEa0+6T/bu3oNbKfZ4+Q49PCI=", - "dev": true, - "requires": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/slash/-/slash-4.0.0.tgz", - "integrity": "sha1-JCI3IXbExsWt214q2oha+YSzlqc=", - "dev": true - } - } + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co=", + "dev": true }, "core-util-is": { "version": "1.0.3", @@ -6644,11 +6809,6 @@ "which": "^2.0.1" } }, - "date-utils": { - "version": "1.2.21", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/date-utils/-/date-utils-1.2.21.tgz", - "integrity": "sha1-YfsWzcEnSzyayq/+n8ad+HIKK2Q=" - }, "debug": { "version": "4.3.6", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.6.tgz", @@ -6680,11 +6840,6 @@ "gopd": "^1.0.1" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "diff": { "version": "5.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/diff/-/diff-5.0.0.tgz", @@ -6709,97 +6864,11 @@ "esutils": "^2.0.2" } }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha1-XEXo6GmVJiYzHXqrMm0B2vZdWJ0=" - }, - "entities": { - "version": "2.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/entities/-/entities-2.2.0.tgz", - "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=" - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "^2.0.2" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha1-rg8PothQRe8UqBfao86azQSJ5b8=", - "requires": { - "safe-buffer": "^5.0.1" - } + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha1-aWzi7Aqg5uqTo5f/zySqeEDIJ8s=", + "dev": true }, "electron-to-chromium": { "version": "1.5.13", @@ -6830,11 +6899,6 @@ "tapable": "^1.0.0" } }, - "entities": { - "version": "1.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/entities/-/entities-1.1.2.tgz", - "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=" - }, "envinfo": { "version": "7.13.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/envinfo/-/envinfo-7.13.0.tgz", @@ -7038,11 +7102,6 @@ "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", "dev": true }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha1-XU0+vflYPWOlMzzi3rdICrKwV4k=" - }, "events": { "version": "3.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/events/-/events-3.3.0.tgz", @@ -7091,12 +7150,6 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-uri": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha1-zd0u7PyDpxwb4swu8gYTMb6KcTQ=", - "dev": true - }, "fastest-levenshtein": { "version": "1.0.16", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -7163,19 +7216,14 @@ "integrity": "sha1-IdtHBymmc01JlwAvQ5yzCJh/Vno=", "dev": true }, - "follow-redirects": { - "version": "1.15.6", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha1-f4FcDNpCScdP8J6V75fCO1/QOZs=" - }, - "form-data": { - "version": "2.5.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha1-8svsV7XlniNxbhKP5E1OXdI4lfQ=", + "foreground-child": { + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha1-CshkTAbkMUOfhWHbjs8pp7VRnHc=", + "dev": true, "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" } }, "fs.realpath": { @@ -7191,29 +7239,6 @@ "dev": true, "optional": true }, - "fstream": { - "version": "1.0.12", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, "function-bind": { "version": "1.1.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.2.tgz", @@ -7238,36 +7263,26 @@ } }, "glob": { - "version": "7.2.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", - "integrity": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", + "version": "10.4.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-10.4.5.tgz", + "integrity": "sha1-9NnwuQ/9urCcnXf18ptCYlF7CVY=", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "minimatch": { - "version": "3.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "version": "9.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha1-10+d1rV9g9jpjPuCEzsDl4vJKeU=", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" } } } @@ -7371,59 +7386,53 @@ "he": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/he/-/he-1.2.0.tgz", - "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=" + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true }, - "html-to-text": { - "version": "5.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/html-to-text/-/html-to-text-5.1.1.tgz", - "integrity": "sha1-LYnbe/NLx7y31UaxsiiZGhaSboc=", - "requires": { - "he": "^1.2.0", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.11", - "minimist": "^1.2.0" - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } + "html-escaper": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha1-39YAJ9o2o238viNiYsAKWCJoFFM=", + "dev": true }, "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha1-ioyO9/WTLM+VPClsqCkblap0qjo=", + "version": "7.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha1-mosfJGhmwChQlIZYX2K48sGMJw4=", "dev": true, "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" } }, "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha1-xZ7yJKBP6LdU89sAY6Jeow0ABdY=", + "version": "7.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha1-notQE4cymeEfq2/VSEBdotbGArI=", "dev": true, "requires": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=", + "dev": true + }, "ignore": { "version": "5.3.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ignore/-/ignore-5.3.2.tgz", "integrity": "sha1-PNQOcp82Q/2HywTlC/DrcivFlvU=", "dev": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/import-fresh/-/import-fresh-3.3.0.tgz", @@ -7463,7 +7472,8 @@ "inherits": { "version": "2.0.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=" + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true }, "interpret": { "version": "2.2.0", @@ -7510,6 +7520,12 @@ "is-extglob": "^2.1.1" } }, + "is-interactive": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha1-QMV2FFk4JtoRAK3mBZd41ZfxbpA=", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-number/-/is-number-7.0.0.tgz", @@ -7561,6 +7577,43 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha1-LRZsSwZE1Do58Ev2wu3R5YXzF1Y=", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha1-kIMFusmlvRdaxqdEier9D8JEWn0=", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-reports": { + "version": "3.1.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha1-2u0SueHcpRjhXAVuHlN+dBKA+gs=", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha1-iDOp2Jq0rN5hiJQr0cU7Y5DtWoo=", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jest-worker": { "version": "27.5.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jest-worker/-/jest-worker-27.5.1.tgz", @@ -7627,23 +7680,16 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jsonc-parser/-/jsonc-parser-2.0.2.tgz", "integrity": "sha1-Qvz1bXCFKgQ/ra/eUd20qFZJl40=" }, - "jwa": { - "version": "1.4.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha1-dDwymFy56YZVUw1TZBtmyGRbA5o=", + "jszip": { + "version": "3.10.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha1-NK7nDrGOofrsL1iSCKFX0f6wkcI=", + "dev": true, "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jws/-/jws-3.2.2.tgz", - "integrity": "sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ=", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, "keyv": { @@ -7671,11 +7717,14 @@ "type-check": "~0.4.0" } }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "dev": true + "lie": { + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lie/-/lie-3.3.0.tgz", + "integrity": "sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o=", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } }, "loader-runner": { "version": "4.3.0", @@ -7703,11 +7752,6 @@ "p-locate": "^5.0.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=" - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -7724,6 +7768,21 @@ "is-unicode-supported": "^0.1.0" } }, + "lru-cache": { + "version": "10.4.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha1-QQ/IoXtw5ZgBPfJXwkRrfzOD8Rk=", + "dev": true + }, + "make-dir": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha1-w8IwencSd82WODBfkVwprnQbYU4=", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + }, "memory-fs": { "version": "0.5.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/memory-fs/-/memory-fs-0.5.0.tgz", @@ -7732,38 +7791,6 @@ "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "merge-stream": { @@ -7791,16 +7818,24 @@ "mime-db": { "version": "1.52.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha1-u6vNwChZ9JhzAchW4zh85exDv3A=" + "integrity": "sha1-u6vNwChZ9JhzAchW4zh85exDv3A=", + "dev": true }, "mime-types": { "version": "2.1.35", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha1-OBqHG2KnNEUGYK497uRIE/cNlZo=", + "dev": true, "requires": { "mime-db": "1.52.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, "minimatch": { "version": "9.0.3", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-9.0.3.tgz", @@ -7810,19 +7845,11 @@ "brace-expansion": "^2.0.1" } }, - "minimist": { - "version": "1.2.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=" - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha1-fe8D0kMtyuS6HWEURcSDlgYiVfY=", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } + "minipass": { + "version": "7.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha1-k6libOXl5mvU24aEnnUV6SNApwc=", + "dev": true }, "mocha": { "version": "9.2.2", @@ -7964,11 +7991,6 @@ "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", "dev": true }, - "mustache": { - "version": "4.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mustache/-/mustache-4.2.0.tgz", - "integrity": "sha1-5YkjJNYKEuycKnM1ntylKXK/b2Q=" - }, "nanoid": { "version": "3.3.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nanoid/-/nanoid-3.3.1.tgz", @@ -7987,14 +8009,6 @@ "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8=", "dev": true }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha1-0PD6bj4twdJ+/NitmdVQvalNGH0=", - "requires": { - "whatwg-url": "^5.0.0" - } - }, "node-releases": { "version": "2.0.18", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/node-releases/-/node-releases-2.0.18.tgz", @@ -8021,6 +8035,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "optionator": { "version": "0.9.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/optionator/-/optionator-0.9.4.tgz", @@ -8035,6 +8058,79 @@ "word-wrap": "^1.2.5" } }, + "ora": { + "version": "7.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ora/-/ora-7.0.1.tgz", + "integrity": "sha1-zdUw7Nhl/jnkUaDnaXhlZpyxGTA=", + "dev": true, + "requires": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha1-lexAnGlhnWyxuLNPFLZg7yjr1lQ=", + "dev": true + }, + "chalk": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha1-Z8IKfr73Dn85cKAfkPohDLaGA4U=", + "dev": true + }, + "emoji-regex": { + "version": "10.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha1-A1U6/qgLOXV0nPyzb3dsomjkE9Q=", + "dev": true + }, + "is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha1-2CSYS2FsKSouGYIH1KYJmDhC9xQ=", + "dev": true + }, + "log-symbols": { + "version": "5.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha1-og47ml9T+sauuOK7IsB88sjxbZM=", + "dev": true, + "requires": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + } + }, + "string-width": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha1-lkiNbtI/mtXYLRNSKvnkxMP9dRg=", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha1-1bZWjKaJ2FYTcLBwdoXSJDT6/0U=", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, "p-limit": { "version": "3.1.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-limit/-/p-limit-3.1.0.tgz", @@ -8059,6 +8155,18 @@ "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", "dev": true }, + "package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha1-5QHNMJSyeEletCWNTJ9tWsMBnwA=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/pako/-/pako-1.0.11.tgz", + "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/parent-module/-/parent-module-1.0.1.tgz", @@ -8092,6 +8200,16 @@ "integrity": "sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=", "dev": true }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha1-eWCmaIiFlKByCxKpEdGnQqufEdI=", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, "path-type": { "version": "4.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-type/-/path-type-4.0.0.tgz", @@ -8206,13 +8324,26 @@ } }, "readable-stream": { - "version": "3.6.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha1-VqmzbqllwAxak+8x6xEaDxEFaWc=", + "version": "2.3.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", + "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + } } }, "readdirp": { @@ -8295,12 +8426,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=", - "dev": true - }, "resolve": { "version": "1.22.8", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.8.tgz", @@ -8335,6 +8460,24 @@ "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", "dev": true }, + "restore-cursor": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha1-UZVgpDGJdQlt725gnUQQDtqkzLk=", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "signal-exit": { + "version": "3.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha1-qaF2f4r4QVURTqq9c/mSc8j1mtk=", + "dev": true + } + } + }, "reusify": { "version": "1.0.4", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/reusify/-/reusify-1.0.4.tgz", @@ -8348,6 +8491,41 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "run-parallel": { @@ -8362,53 +8540,8 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=" - }, - "sax": { - "version": "1.4.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sax/-/sax-1.4.1.tgz", - "integrity": "sha1-RMyJiDd/EmME07P8EBDHM7kp7w8=" - }, - "schema-utils": { - "version": "4.2.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha1-cNfJPhU6JzqAWAGILr07/yDYnIs=", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "dependencies": { - "ajv": { - "version": "8.17.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha1-N9mlx3ava8ktf0+VEOukwKYNEaY=", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha1-adTThaRzPNvqtElkoRcKiPh/DhY=", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=", - "dev": true - } - } + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true }, "semver": { "version": "7.6.3", @@ -8478,6 +8611,12 @@ "object-inspect": "^1.13.1" } }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha1-lSGIwcvVRgcOLdIND0HArgUwywQ=", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/slash/-/slash-3.0.0.tgz", @@ -8505,12 +8644,30 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=", + "stdin-discarder": { + "version": "0.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha1-IrPkADk6jijr9T+ZWPOIBiLv3iE=", + "dev": true, "requires": { - "safe-buffer": "~5.2.0" + "bl": "^5.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", + "dev": true + } } }, "string-width": { @@ -8524,6 +8681,17 @@ "strip-ansi": "^6.0.1" } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha1-JpxxF9J7Ba0uU2gwqOyJXvnG0BA=", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "strip-ansi": { "version": "6.0.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -8533,6 +8701,15 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha1-nibGPTD1NEPpSJSVshBdN7Z6hdk=", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-json-comments": { "version": "3.1.1", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -8598,6 +8775,52 @@ } } }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha1-BKhphmHYBepvopO2y55jrARO8V4=", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/text-table/-/text-table-0.2.0.tgz", @@ -8613,17 +8836,6 @@ "is-number": "^7.0.0" } }, - "tr46": { - "version": "0.0.3", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "traverse": { - "version": "0.3.9", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - }, "ts-api-utils": { "version": "1.3.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -8644,11 +8856,6 @@ "semver": "^7.3.4" } }, - "tslib": { - "version": "1.14.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=" - }, "tunnel": { "version": "0.0.6", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tunnel/-/tunnel-0.0.6.tgz", @@ -8690,55 +8897,11 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/underscore/-/underscore-1.13.7.tgz", "integrity": "sha1-lw4zljr5p92iKPF+voOZ5fvmOhA=" }, - "unzipper": { - "version": "0.10.14", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha1-0rM8l3cU2g+8D4J3StNUcKfJYrE=", - "dev": true, - "requires": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha1-kRJegEK7obmIf0k0X2J3Anzovps=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } + "undici-types": { + "version": "6.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/undici-types/-/undici-types-6.13.0.tgz", + "integrity": "sha1-4+eSIKuMge0UlrWBJHGv188HXqU=", + "dev": true }, "update-browserslist-db": { "version": "1.1.0", @@ -8762,12 +8925,19 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, - "uuid": { - "version": "8.3.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=" + "v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha1-uVcqv6Yr1VbBbXX968GkEdX/MXU=", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } }, "vscode-json-languageservice": { "version": "4.2.1", @@ -8876,11 +9046,6 @@ "graceful-fs": "^4.1.2" } }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, "webpack": { "version": "5.94.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/webpack/-/webpack-5.94.0.tgz", @@ -9002,15 +9167,6 @@ "integrity": "sha1-LU2quEUf1LJAzCcFX/agwszqDN4=", "dev": true }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "which": { "version": "2.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/which/-/which-2.0.2.tgz", @@ -9049,31 +9205,23 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "xml2js": { - "version": "0.5.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha1-2UQGMfuy7YACA/rRBvJyT2LEk7c=", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha1-vpuuHIoEbnazESdyY0fQrXACvrM=" - }, - "xpath.js": { - "version": "1.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xpath.js/-/xpath.js-1.1.0.tgz", - "integrity": "sha1-OBakTtS7NSCRCD0AKjg91RBKX/E=" - }, "y18n": { "version": "5.0.8", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 9fe8980..d524164 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,7 @@ "theme": "light" }, "engines": { - "vscode": "^1.64.0", - "node": ">=12.20.0" + "vscode": "^1.82.0" }, "categories": [ "Programming Languages", @@ -37,10 +36,6 @@ "continuous integration", "CI/CD" ], - "activationEvents": [ - "onLanguage:azure-pipelines", - "onCommand:azure-pipelines.configure-pipeline" - ], "main": "./dist/extension", "capabilities": { "untrustedWorkspaces": { @@ -83,12 +78,6 @@ "configuration": { "title": "Azure Pipelines", "properties": { - "azure-pipelines.configure": { - "type": "boolean", - "default": true, - "description": "Enable 'Configure Pipeline' feature", - "order": 0 - }, "azure-pipelines.1ESPipelineTemplatesSchemaFile": { "type": "boolean", "default": false, @@ -115,26 +104,12 @@ } }, "commands": [ - { - "command": "azure-pipelines.configure-pipeline", - "title": "Configure Pipeline", - "category": "Azure Pipelines" - }, { "command": "azure-pipelines.reset-state", "title": "Reset 'do not ask again' messages", "category": "Azure Pipelines" } - ], - "menus": { - "explorer/context": [ - { - "command": "azure-pipelines.configure-pipeline", - "group": "Azure Pipelines", - "when": "explorerResourceIsFolder == true" - } - ] - } + ] }, "scripts": { "vscode:prepublish": "npm run compile", @@ -143,22 +118,17 @@ "compile:test": "tsc --project ./tsconfig.test.json", "lint": "eslint .", "watch": "webpack --mode development --progress --color --watch", - "test": "npm run compile:test && node ./out/test/runTest.js" + "test": "npm run compile:test && vscode-test" }, "devDependencies": { - "@types/glob": "^7.2.0", - "@types/html-to-text": "^5.1.2", "@types/mocha": "^9.0.0", - "@types/mustache": "0.8.32", - "@types/node": "^14.16.0", - "@types/uuid": "^8.3.4", - "@types/vscode": "~1.64.0", + "@types/node": "~20.15.0", + "@types/vscode": "~1.82.0", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/parser": "^6.11.0", - "@vscode/test-electron": "^1.6.2", - "copy-webpack-plugin": "^10.2.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", "eslint": "^8.54.0", - "glob": "^7.1.6", "mocha": "^9.1.1", "ts-loader": "^8.0.14", "typescript": "~5.2.2", @@ -166,20 +136,10 @@ "webpack-cli": "^4.4.0" }, "dependencies": { - "@azure/arm-appservice": "^6.1.0", - "@azure/arm-subscriptions": "^3.0.0", - "@azure/ms-rest-azure-env": "^2.0.0", - "@azure/ms-rest-nodeauth": "^3.0.6", "@vscode/extension-telemetry": "^0.5.1", "azure-devops-node-api": "^11.0.1", "azure-pipelines-language-server": "0.8.0", - "html-to-text": "^5.1.1", - "mustache": "^4.2.0", - "uuid": "^8.3.2", "vscode-languageclient": "^7.0.0", "vscode-uri": "^3.0.2" - }, - "extensionDependencies": [ - "ms-vscode.azure-account" - ] + } } diff --git a/resources/configure-pipeline.gif b/resources/configure-pipeline.gif deleted file mode 100644 index 5e0352fe286ca7f88da274895044016fa30e5b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599829 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%0Djp1|Y5+&&=z+U39%eVHI2G1W(EGX#RZi~sK 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

K*n7d&|#*g9+< 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

|an6d*g9jR78t@Sd3*N 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 z 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 z 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

5+_p8R-p$|+&meA+BBUB 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 +} + +export class OrganizationsClient { + private organizations?: Organization[]; + + constructor(private token: string) { } + + public async listOrganizations(forceRefresh?: boolean): Promise { + if (this.organizations && !forceRefresh) { + return this.organizations; + } + + const { authenticatedUser } = await this.fetch("https://app.vssps.visualstudio.com/_apis/connectiondata"); + if (authenticatedUser === undefined) { + return []; + } + + const { value: organizations } = await this.fetch<{ value: Organization[] }>(`https://app.vssps.visualstudio.com/_apis/accounts?memberId=${authenticatedUser.id}&api-version=7.0`); + this.organizations = organizations.sort((org1, org2) => { + const account1 = org1.accountName.toLowerCase(); + const account2 = org2.accountName.toLowerCase(); + if (account1 < account2) { + return -1; + } else if (account1 > account2) { + return 1; + } + return 0; + }); + + return this.organizations; + } + + private async fetch(...[request, init]: Parameters): Promise { + const response = await fetch(request, { + ...init, + headers: { + ...init?.headers, + 'Authorization': `Bearer ${this.token}`, + 'Content-Type': 'application/json', + 'User-Agent': `azure-pipelines-vscode ${extensionVersion}`, + 'X-TFS-Session': telemetryHelper.getJourneyId(), + } + }); + return (await response.json()) as T; + } +} diff --git a/src/configure/activate.ts b/src/configure/activate.ts deleted file mode 100644 index 66b6423..0000000 --- a/src/configure/activate.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as vscode from 'vscode'; - -import { configurePipeline } from './configure'; -import { telemetryHelper } from '../helpers/telemetryHelper'; - -export function activateConfigurePipeline(): void { - vscode.commands.registerCommand('azure-pipelines.configure-pipeline', async () => { - await telemetryHelper.callWithTelemetryAndErrorHandling('azurePipelines.configure-pipeline', async () => { - await configurePipeline(); - }); - }); -} diff --git a/src/configure/clients/azure/appServiceClient.ts b/src/configure/clients/azure/appServiceClient.ts deleted file mode 100644 index 1c7e558..0000000 --- a/src/configure/clients/azure/appServiceClient.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { v4 as uuid } from 'uuid'; -import { WebSiteManagementClient, WebSiteManagementModels } from '@azure/arm-appservice'; -import { TokenCredentialsBase } from '@azure/ms-rest-nodeauth'; - -import { WebAppKind, ValidatedSite } from '../../model/models'; - -export class AppServiceClient { - private webSiteManagementClient: WebSiteManagementClient; - - constructor(credentials: TokenCredentialsBase, subscriptionId: string) { - this.webSiteManagementClient = new WebSiteManagementClient(credentials, subscriptionId); - } - - public async getAppServices(filterForResourceKind: WebAppKind): Promise { - const sites = await this.webSiteManagementClient.webApps.list(); - return sites.filter(site => site.kind === filterForResourceKind); - } - - public async getAppServiceConfig(site: ValidatedSite): Promise { - return this.webSiteManagementClient.webApps.getConfiguration(site.resourceGroup, site.name); - } - - public async updateScmType(site: ValidatedSite): Promise { - const siteConfig = await this.getAppServiceConfig(site); - siteConfig.scmType = ScmType.VSTSRM; - return this.webSiteManagementClient.webApps.updateConfiguration(site.resourceGroup, site.name, siteConfig); - } - - public async getAppServiceMetadata(site: ValidatedSite): Promise { - return this.webSiteManagementClient.webApps.listMetadata(site.resourceGroup, site.name); - } - - public async updateAppServiceMetadata(site: ValidatedSite, metadata: WebSiteManagementModels.StringDictionary): Promise { - return this.webSiteManagementClient.webApps.updateMetadata(site.resourceGroup, site.name, metadata); - } - - public async publishDeploymentToAppService(site: ValidatedSite, buildDefinitionUrl: string, releaseDefinitionUrl: string, triggeredBuildUrl: string): Promise { - // create deployment object - const deploymentId = uuid(); - const deployment = this.createDeploymentObject(deploymentId, buildDefinitionUrl, releaseDefinitionUrl, triggeredBuildUrl); - return this.webSiteManagementClient.webApps.createDeployment(site.resourceGroup, site.name, deploymentId, deployment); - } - - private createDeploymentObject(deploymentId: string, buildDefinitionUrl: string, releaseDefinitionUrl: string, triggeredBuildUrl: string): WebSiteManagementModels.Deployment { - const message: DeploymentMessage = { - type: "CDDeploymentConfiguration", - message: "Successfully set up continuous delivery from VS Code and triggered deployment to Azure Web App.", - VSTSRM_BuildDefinitionWebAccessUrl: buildDefinitionUrl, - VSTSRM_ConfiguredCDEndPoint: '', - VSTSRM_BuildWebAccessUrl: triggeredBuildUrl, - }; - - return { - id: deploymentId, - status: 4, - author: 'VSTS', - deployer: 'VSTS', - message: JSON.stringify(message), - }; - } -} - -export enum ScmType { - VSTSRM = 'VSTSRM', - NONE = 'NONE' -} - -interface DeploymentMessage { - type: string; - message: string; - VSTSRM_BuildDefinitionWebAccessUrl: string; - VSTSRM_ConfiguredCDEndPoint: string; - VSTSRM_BuildWebAccessUrl: string; -} diff --git a/src/configure/clients/devOps/organizationsClient.ts b/src/configure/clients/devOps/organizationsClient.ts deleted file mode 100644 index a8d6e63..0000000 --- a/src/configure/clients/devOps/organizationsClient.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { RequestPrepareOptions } from '@azure/ms-rest-js'; -import { TokenCredentialsBase } from '@azure/ms-rest-nodeauth'; -import { ConnectionData } from 'azure-devops-node-api/interfaces/LocationsInterfaces'; - -import { RestClient } from '../restClient'; -import { Organization } from '../../model/models'; -import { telemetryHelper } from '../../../helpers/telemetryHelper'; - -export class OrganizationsClient { - private restClient: RestClient; - private organizations?: Organization[]; - - constructor(credentials: TokenCredentialsBase) { - this.restClient = new RestClient(credentials); - } - - public async sendRequest(requestPrepareOptions: RequestPrepareOptions): Promise { - if (requestPrepareOptions.headers) { - requestPrepareOptions.headers['X-TFS-Session'] = telemetryHelper.getJourneyId(); - } - else { - requestPrepareOptions.headers = { 'X-TFS-Session': telemetryHelper.getJourneyId() }; - } - - return this.restClient.sendRequest(requestPrepareOptions); - } - - public async listOrganizations(forceRefresh?: boolean): Promise { - if (this.organizations && !forceRefresh) { - return this.organizations; - } - - const { authenticatedUser } = await this.getUserData(); - if (authenticatedUser === undefined) { - return []; - } - - const response = await this.sendRequest<{ value: Organization[] }>({ - url: "https://app.vssps.visualstudio.com/_apis/accounts", - headers: { - "Content-Type": "application/json" - }, - method: "GET", - queryParameters: { - "memberId": authenticatedUser.id, - "api-version": "7.0", - }, - }); - - this.organizations = response.value.sort((org1, org2) => { - const account1 = org1.accountName.toLowerCase(); - const account2 = org2.accountName.toLowerCase(); - if (account1 < account2) { - return -1; - } else if (account1 > account2) { - return 1; - } - return 0; - }); - - return this.organizations; - } - - private async getUserData(): Promise { - try { - return this.getConnectionData(); - } catch { - await this.createUserProfile(); - return this.getConnectionData(); - } - } - - private getConnectionData(): Promise { - return this.sendRequest({ - url: "https://app.vssps.visualstudio.com/_apis/connectiondata", - headers: { - "Content-Type": "application/json" - }, - method: "GET", - }); - } - - // TODO: Need to verify this signature - private createUserProfile(): Promise { - return this.sendRequest({ - url: "https://app.vssps.visualstudio.com/_apis/_AzureProfile/CreateProfile", - headers: { - "Content-Type": "application/json" - }, - method: "POST", - }); - } -} diff --git a/src/configure/clients/devOps/serviceConnectionClient.ts b/src/configure/clients/devOps/serviceConnectionClient.ts deleted file mode 100644 index 9bec2c8..0000000 --- a/src/configure/clients/devOps/serviceConnectionClient.ts +++ /dev/null @@ -1,141 +0,0 @@ -import * as azdev from 'azure-devops-node-api'; -import { AadApplication } from '../../model/models'; - -// Definitive interface at https://github.com/microsoft/azure-devops-node-api/blob/master/api/interfaces/ServiceEndpointInterfaces.ts, -// but it isn't exported :(. -interface ServiceConnection { - allPipelines: { - authorized: boolean; - } - id: string; - isReady: boolean; - type: string; - operationStatus: { - state: string; - statusMessage: string; - }; -} - -export class ServiceConnectionClient { - constructor(private connection: azdev.WebApi, private project: string) { - } - - public async createGitHubServiceConnection(endpointName: string, gitHubPat: string): Promise { - const url = `${this.connection.serverUrl}/${this.project}/_apis/serviceendpoint/endpoints`; - - const response = await this.connection.rest.create(url, { - "administratorsGroup": null, - "authorization": { - "parameters": { - "accessToken": gitHubPat - }, - "scheme": "PersonalAccessToken" - }, - "description": "", - "groupScopeId": null, - "name": endpointName, - "operationStatus": null, - "readersGroup": null, - "type": "github", - "url": "http://github.com" - }, { - acceptHeader: "application/json;api-version=5.1-preview.2;excludeUrls=true", - additionalHeaders: { - "Content-Type": "application/json", - }, - }); - - if (response.result) { - return response.result; - } else { - throw new Error(`Failed to create GitHub service connection: ${response.statusCode}`); - } - } - - public async createAzureServiceConnection(endpointName: string, tenantId: string, subscriptionId: string, scope: string, aadApp: AadApplication): Promise { - const url = `${this.connection.serverUrl}/${this.project}/_apis/serviceendpoint/endpoints`; - - const response = await this.connection.rest.create(url, { - "administratorsGroup": null, - "authorization": { - "parameters": { - "authenticationType": "spnKey", - "scope": scope, - "serviceprincipalid": aadApp.appId, - "serviceprincipalkey": aadApp.secret, - "tenantid": tenantId - }, - "scheme": "ServicePrincipal" - }, - "data": { - "creationMode": "Manual", - "subscriptionId": subscriptionId, - "subscriptionName": subscriptionId - }, - "description": "", - "groupScopeId": null, - "name": endpointName, - "operationStatus": null, - "readersGroup": null, - "type": "azurerm", - "url": "https://management.azure.com/" - }, { - acceptHeader: "application/json;api-version=5.1-preview.2;excludeUrls=true", - additionalHeaders: { - "Content-Type": "application/json", - }, - }); - - if (response.result) { - return response.result; - } else { - throw new Error(`Failed to create Azure service connection: ${response.statusCode}`); - } - } - - public async getEndpointStatus(endpointId: string): Promise { - const url = `${this.connection.serverUrl}/${this.project}/_apis/serviceendpoint/endpoints/${endpointId}`; - - const response = await this.connection.rest.get(url, { - acceptHeader: "application/json;api-version=5.1-preview.2;excludeUrls=true", - additionalHeaders: { - "Content-Type": "application/json", - }, - }); - - if (response.result) { - return response.result; - } else { - throw new Error(`Failed to get service connection status: ${response.statusCode}`); - } - } - - // TODO: Authorize individual pipelines instead of all pipelines. - public async authorizeEndpointForAllPipelines(endpointId: string): Promise { - const url = `${this.connection.serverUrl}/${this.project}/_apis/pipelines/pipelinePermissions/endpoint/${endpointId}`; - - const response = await this.connection.rest.update(url, { - "allPipelines": { - "authorized": true, - "authorizedBy": null, - "authorizedOn": null - }, - "pipelines": null, - "resource": { - "id": endpointId, - "type": "endpoint" - } - }, { - acceptHeader: "application/json;api-version=5.1-preview.1;excludeUrls=true;enumsAsNumbers=true;msDateFormat=true;noArrayWrap=true", - additionalHeaders: { - "Content-Type": "application/json", - }, - }); - - if (response.result) { - return response.result; - } else { - throw new Error(`Failed to authorize service connection: ${response.statusCode}`); - } - } -} diff --git a/src/configure/clients/restClient.ts b/src/configure/clients/restClient.ts deleted file mode 100644 index 1de4d3f..0000000 --- a/src/configure/clients/restClient.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ServiceClient, RequestPrepareOptions } from "@azure/ms-rest-js"; - -export class RestClient extends ServiceClient { - public sendRequest(options: RequestPrepareOptions): Promise { - return new Promise((resolve, reject) => { - super.sendRequest(options) - .then(response => { - if (response.status >= 300) { - reject(response.parsedBody as Error); - } - resolve(response.parsedBody as TResult); - }) - .catch(error => { - reject(error as Error); - }); - }); - } -} diff --git a/src/configure/configure.ts b/src/configure/configure.ts deleted file mode 100644 index 2ecd956..0000000 --- a/src/configure/configure.ts +++ /dev/null @@ -1,791 +0,0 @@ -import { v4 as uuid } from 'uuid'; -import { AppServiceClient } from './clients/azure/appServiceClient'; -import { OrganizationsClient } from './clients/devOps/organizationsClient'; -import * as AzureDevOpsHelper from './helper/devOps/azureDevOpsHelper'; -import * as Messages from '../messages'; -import { ServiceConnectionHelper } from './helper/devOps/serviceConnectionHelper'; -import { SourceOptions, RepositoryProvider, QuickPickItemWithData, GitRepositoryDetails, PipelineTemplate, AzureDevOpsDetails, ValidatedBuild, ValidatedProject, WebAppKind, TargetResourceType, ValidatedSite } from './model/models'; -import * as constants from './resources/constants'; -import * as TracePoints from './resources/tracePoints'; -import { getAzureAccountExtensionApi, getGitExtensionApi } from '../extensionApis'; -import { telemetryHelper } from '../helpers/telemetryHelper'; -import * as TelemetryKeys from '../helpers/telemetryKeys'; -import * as utils from 'util'; -import * as vscode from 'vscode'; -import { URI, Utils } from 'vscode-uri'; -import * as templateHelper from './helper/templateHelper'; -import { getAvailableFileName } from './helper/commonHelper'; -import { showInputBox, showQuickPick } from './helper/controlProvider'; -import { Build } from 'azure-devops-node-api/interfaces/BuildInterfaces'; -import { AzureAccount, AzureSession } from '../typings/azure-account.api'; -import { Repository } from '../typings/git'; -import { AzureSiteDetails } from './model/models'; -import { GraphHelper } from './helper/graphHelper'; -import { TeamProject } from 'azure-devops-node-api/interfaces/CoreInterfaces'; -import { WebApi, getBearerHandler } from 'azure-devops-node-api'; -import * as GitHubHelper from './helper/gitHubHelper'; -import { WebSiteManagementModels } from '@azure/arm-appservice'; - -const Layer: string = 'configure'; - -export async function configurePipeline(): Promise { - const azureAccount = await getAzureAccountExtensionApi(); - if (!(await azureAccount.waitForLogin())) { - telemetryHelper.setTelemetry(TelemetryKeys.AzureLoginRequired, 'true'); - - const signIn = await vscode.window.showInformationMessage(Messages.azureLoginRequired, Messages.signInLabel); - if (signIn?.toLowerCase() === Messages.signInLabel.toLowerCase()) { - await vscode.commands.executeCommand("azure-account.login"); - } else { - void vscode.window.showWarningMessage(Messages.azureLoginRequired); - return; - } - } - - const gitExtension = await getGitExtensionApi(); - const workspaceUri = await getWorkspace(); - if (workspaceUri === undefined) { - return; - } - - const repo = gitExtension.getRepository(workspaceUri); - if (repo === null) { - void vscode.window.showWarningMessage(Messages.notAGitRepository); - return; - } - - // Refresh the repo status so that we have accurate info. - await repo.status(); - - const configurer = new PipelineConfigurer(workspaceUri, repo, azureAccount); - await configurer.configure(); -} - -async function getWorkspace(): Promise { - const workspaceFolders = vscode.workspace.workspaceFolders; - if (workspaceFolders !== undefined) { - telemetryHelper.setTelemetry(TelemetryKeys.SourceRepoLocation, SourceOptions.CurrentWorkspace); - - if (workspaceFolders.length === 1) { - telemetryHelper.setTelemetry(TelemetryKeys.MultipleWorkspaceFolders, 'false'); - return workspaceFolders[0].uri; - } else { - telemetryHelper.setTelemetry(TelemetryKeys.MultipleWorkspaceFolders, 'true'); - - const workspaceFolderOptions: QuickPickItemWithData[] = - workspaceFolders.map(folder => ({ label: folder.name, data: folder })); - const selectedWorkspaceFolder = await showQuickPick( - constants.SelectFromMultipleWorkSpace, - workspaceFolderOptions, - { placeHolder: Messages.selectWorkspaceFolder }); - if (selectedWorkspaceFolder === undefined) { - return undefined; - } - - return selectedWorkspaceFolder.data.uri; - } - } else { - telemetryHelper.setTelemetry(TelemetryKeys.SourceRepoLocation, SourceOptions.BrowseLocalMachine); - const selectedFolders = await vscode.window.showOpenDialog({ - openLabel: Messages.selectFolderLabel, - canSelectFiles: false, - canSelectFolders: true, - canSelectMany: false, - }); - - if (selectedFolders === undefined) { - return undefined; - } - - return selectedFolders[0]; - } -} - -class PipelineConfigurer { - private azureDevOpsClient: WebApi | undefined; - private uniqueResourceNameSuffix: string; - - public constructor( - private workspaceUri: URI, - private repo: Repository, - private azureAccount: AzureAccount) { - this.uniqueResourceNameSuffix = uuid().substring(0, 5); - } - - public async configure(): Promise { - telemetryHelper.setCurrentStep('GetAllRequiredInputs'); - const repoDetails = await this.getGitDetailsFromRepository(); - if (repoDetails === undefined) { - return; - } - - const template = await this.getSelectedPipeline(); - if (template === undefined) { - return; - } - - const adoDetails = await this.getAzureDevOpsDetails(repoDetails); - if (adoDetails === undefined) { - return; - } - - let azureSiteDetails: AzureSiteDetails | undefined; - if (template.target.type !== TargetResourceType.None) { - azureSiteDetails = await this.getAzureResourceDetails(adoDetails.session, template.target.kind); - if (azureSiteDetails === undefined) { - return; - } - } - - telemetryHelper.setCurrentStep('CreatePreRequisites'); - const serviceConnectionHelper = new ServiceConnectionHelper(adoDetails.adoClient, adoDetails.project.name); - - let repositoryProperties: Record | undefined; - if (repoDetails.repositoryProvider === RepositoryProvider.Github) { - const gitHubServiceConnection = await this.createGitHubServiceConnection( - serviceConnectionHelper, - repoDetails, - this.uniqueResourceNameSuffix); - if (gitHubServiceConnection === undefined) { - return; - } - - repositoryProperties = { - apiUrl: `https://api.github.com/repos/${repoDetails.ownerName}/${repoDetails.repositoryName}`, - branchesUrl: `https://api.github.com/repos/${repoDetails.ownerName}/${repoDetails.repositoryName}/branches`, - cloneUrl: repoDetails.remoteUrl, - connectedServiceId: gitHubServiceConnection, - defaultBranch: repoDetails.branch, - fullName: `${repoDetails.ownerName}/${repoDetails.repositoryName}`, - refsUrl: `https://api.github.com/repos/${repoDetails.ownerName}/${repoDetails.repositoryName}/git/refs` - }; - } - - let azureServiceConnection: string | undefined; - if (azureSiteDetails !== undefined) { - azureServiceConnection = await this.createAzureServiceConnection( - serviceConnectionHelper, - adoDetails, - azureSiteDetails, - this.uniqueResourceNameSuffix); - if (azureServiceConnection === undefined) { - return; - } - } - - telemetryHelper.setCurrentStep('CheckInPipeline'); - const pipelineFileName = await this.createPipelineFile( - template, - repoDetails.branch, - azureSiteDetails, - azureServiceConnection); - if (pipelineFileName === undefined) { - return; - } - - const commit = await this.checkInPipelineFileToRepository(pipelineFileName, repoDetails); - if (commit === undefined) { - return; - } - - telemetryHelper.setCurrentStep('CreateAndRunPipeline'); - const queuedPipeline = await this.createAndRunPipeline( - repoDetails, - adoDetails, - template, - azureSiteDetails, - repositoryProperties, - pipelineFileName, - commit); - if (queuedPipeline === undefined) { - return; - } - - telemetryHelper.setCurrentStep('PostPipelineCreation'); - if (azureSiteDetails !== undefined) { - // This step should be determined by the - // - resource target provider type (azure app service, function app, aks) - // - pipeline provider (azure pipeline vs github) - await this.updateScmType(queuedPipeline, adoDetails, azureSiteDetails); - } - - telemetryHelper.setCurrentStep('DisplayCreatedPipeline'); - void vscode.window.showInformationMessage(Messages.pipelineSetupSuccessfully, Messages.browsePipeline) - .then(action => { - if (action === Messages.browsePipeline) { - telemetryHelper.setTelemetry(TelemetryKeys.BrowsePipelineClicked, 'true'); - // _links is weakly typed and it's not worth the effort to verify. - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access - void vscode.env.openExternal(URI.parse(queuedPipeline._links.web.href)); - } - }); - } - - private async getGitDetailsFromRepository(): Promise { - const { HEAD } = this.repo.state; - if (!HEAD) { - void vscode.window.showWarningMessage(Messages.branchHeadMissing); - return undefined; - } - - const { name } = HEAD; - let { remote } = HEAD; - if (!name) { - void vscode.window.showWarningMessage(Messages.branchNameMissing); - return undefined; - } - - if (!remote) { - // Remote tracking branch is not set, see if we have any remotes we can use. - const remotes = this.repo.state.remotes; - if (remotes.length === 0) { - void vscode.window.showWarningMessage(Messages.branchRemoteMissing); - return undefined; - } else if (remotes.length === 1) { - remote = remotes[0].name; - } else { - // Show an option to user to select remote to be configured - const selectedRemote = await showQuickPick( - constants.SelectRemoteForRepo, - remotes.map(remote => ({ label: remote.name })), - { placeHolder: Messages.selectRemoteForBranch }); - if (selectedRemote === undefined) { - return undefined; - } - - remote = selectedRemote.label; - } - } - - let repoDetails: GitRepositoryDetails; - let remoteUrl = this.repo.state.remotes.find(remoteObj => remoteObj.name === remote)?.fetchUrl; - if (remoteUrl !== undefined) { - if (AzureDevOpsHelper.isAzureReposUrl(remoteUrl)) { - remoteUrl = AzureDevOpsHelper.getFormattedRemoteUrl(remoteUrl); - const { - organizationName, - projectName, - repositoryName - } = AzureDevOpsHelper.getRepositoryDetailsFromRemoteUrl(remoteUrl); - repoDetails = { - repositoryProvider: RepositoryProvider.AzureRepos, - organizationName, - projectName, - repositoryName, - remoteName: remote, - remoteUrl, - branch: name, - }; - } else if (GitHubHelper.isGitHubUrl(remoteUrl)) { - remoteUrl = GitHubHelper.getFormattedRemoteUrl(remoteUrl); - const { ownerName, repositoryName } = GitHubHelper.getRepositoryDetailsFromRemoteUrl(remoteUrl); - repoDetails = { - repositoryProvider: RepositoryProvider.Github, - ownerName, - repositoryName, - remoteName: remote, - remoteUrl, - branch: name, - }; - } else { - void vscode.window.showWarningMessage(Messages.cannotIdentifyRepositoryDetails); - return undefined; - } - } else { - void vscode.window.showWarningMessage(Messages.remoteRepositoryNotConfigured); - return undefined; - } - - telemetryHelper.setTelemetry(TelemetryKeys.RepoProvider, repoDetails.repositoryProvider); - - return repoDetails; - } - - private async getSelectedPipeline(): Promise { - const appropriateTemplates: PipelineTemplate[] = await vscode.window.withProgress( - { location: vscode.ProgressLocation.Notification, title: Messages.analyzingRepo }, - () => templateHelper.analyzeRepoAndListAppropriatePipeline(this.workspaceUri) - ); - - // TODO: Get applicable pipelines for the repo type and azure target type if target already selected - const template = await showQuickPick( - constants.SelectPipelineTemplate, - appropriateTemplates.map((template) => { return { label: template.label, data: template }; }), - { placeHolder: Messages.selectPipelineTemplate }, - TelemetryKeys.PipelineTempateListCount); - - if (template === undefined) { - return undefined; - } - - telemetryHelper.setTelemetry(TelemetryKeys.ChosenTemplate, template.data.label); - return template.data; - } - - private async getAzureDevOpsDetails(repoDetails: GitRepositoryDetails): Promise { - if (repoDetails.repositoryProvider === RepositoryProvider.AzureRepos) { - for (const session of this.azureAccount.filters.map(({ session }) => session)) { - const organizationsClient = new OrganizationsClient(session.credentials2); - const organizations = await organizationsClient.listOrganizations(); - if (organizations.find(org => - org.accountName.toLowerCase() === repoDetails.organizationName.toLowerCase())) { - const adoClient = await this.getAzureDevOpsClient(repoDetails.organizationName, session); - const coreApi = await adoClient.getCoreApi(); - const project = await coreApi.getProject(repoDetails.projectName); - if (isValidProject(project)) { - return { - session, - adoClient, - organizationName: repoDetails.organizationName, - project, - }; - } - } - } - - void vscode.window.showWarningMessage("You are not signed in to the Azure DevOps organization that contains this repository."); - return undefined; - } else { - // Lazily construct list of organizations so that we can immediately show the quick pick, - // then fill in the choices as they come in. - const getOrganizationsAndSessions = async (): Promise[]> => { - return [ - ...(await Promise.all(this.azureAccount.filters.map(async ({ session }) => { - const organizationsClient = new OrganizationsClient(session.credentials2); - const organizations = await organizationsClient.listOrganizations(); - return organizations.map(organization => ({ - label: organization.accountName, - data: session, - })); - }))).flat(), - { - // This is safe because ADO orgs can't have spaces in them. - label: "Create new Azure DevOps organization...", - data: undefined, - } - ]; - }; - - const result = await showQuickPick( - 'organization', - getOrganizationsAndSessions(), { - placeHolder: "Select the Azure DevOps organization to create this pipeline in", - }, TelemetryKeys.OrganizationListCount); - if (result === undefined) { - return undefined; - } - - const { label: organizationName, data: session } = result; - if (session === undefined) { - // Special flag telling us to create a new organization. - await vscode.env.openExternal(vscode.Uri.parse("https://dev.azure.com/")); - return undefined; - } - - const adoClient = await this.getAzureDevOpsClient(organizationName, session); - - // Ditto for the projects. - const getProjects = async (): Promise[]> => { - const coreApi = await adoClient.getCoreApi(); - const projects = await coreApi.getProjects(); - return [ - ...projects - .filter(isValidProject) - .map(project => { return { label: project.name, data: project }; }), - { - // This is safe because ADO projects can't end with periods. - label: "Create new project...", - data: undefined, - } - ]; - }; - - const selectedProject = await showQuickPick( - constants.SelectProject, - getProjects(), - { placeHolder: Messages.selectProject }, - TelemetryKeys.ProjectListCount); - if (selectedProject === undefined) { - return undefined; - } - - const project = selectedProject.data; - if (project === undefined) { - // Special flag telling us to create a new project. - await vscode.env.openExternal(vscode.Uri.parse(`https://dev.azure.com/${organizationName}`)); - return undefined; - } - - return { - session, - adoClient, - organizationName, - project, - }; - } - } - - private async getAzureResourceDetails( - session: AzureSession, - kind: WebAppKind): Promise { - // show available subscriptions and get the chosen one - const subscriptionList = this.azureAccount.filters - .filter(filter => - // session is actually an AzureSessionInternal which makes a naive === check fail. - filter.session.environment === session.environment && - filter.session.tenantId === session.tenantId && - filter.session.userId === session.userId) - .map(subscriptionObject => { - return { - label: subscriptionObject.subscription.displayName ?? "Unknown subscription", - data: subscriptionObject, - description: subscriptionObject.subscription.subscriptionId ?? undefined - }; - }); - - const selectedSubscription = await showQuickPick( - constants.SelectSubscription, - subscriptionList, - { placeHolder: Messages.selectSubscription }); - if (selectedSubscription === undefined) { - return undefined; - } - - const { subscriptionId } = selectedSubscription.data.subscription; - if (subscriptionId === undefined) { - void vscode.window.showErrorMessage("Unable to get ID for subscription, please file a bug at https://github.com/microsoft/azure-pipelines-vscode/issues/new"); - return undefined; - } - - // show available resources and get the chosen one - const appServiceClient = new AppServiceClient(session.credentials2, subscriptionId); - - // TODO: Refactor kind so we don't need three kind.includes - - const sites = await appServiceClient.getAppServices(kind); - const items: QuickPickItemWithData[] = sites - .filter(isValidSite) - .map(site => { return { label: site.name, data: site }; }); - const appType = kind.includes("functionapp") ? "Function App" : "Web App"; - - items.push({ - // This is safe because apps can't have spaces in them. - label: `Create new ${appType.toLowerCase()}...`, - data: undefined, - }); - - const selectedResource = await showQuickPick( - kind.includes("functionapp") ? "selectFunctionApp" : "selectWebApp", - items, - { placeHolder: `Select ${appType}` }, - TelemetryKeys.WebAppListCount); - if (selectedResource === undefined) { - return undefined; - } - - const { data: site } = selectedResource; - if (site === undefined) { - // Special flag telling us to create a new app. - // URL format is documented at - // https://github.com/Azure/portaldocs/blob/main/portal-sdk/generated/portalfx-links.md#create-blades - const packageId = kind.includes("functionapp") ? "Microsoft.FunctionApp" : "Microsoft.WebSite"; - await vscode.env.openExternal(vscode.Uri.parse(`https://portal.azure.com/#create/${packageId}`)); - return undefined; - } - - return { - appServiceClient, - site, - subscriptionId, - }; - } - - private async createGitHubServiceConnection( - serviceConnectionHelper: ServiceConnectionHelper, - repoDetails: GitRepositoryDetails, - uniqueResourceNameSuffix: string, - ): Promise { - const token = await telemetryHelper.executeFunctionWithTimeTelemetry( - async () => showInputBox( - constants.GitHubPat, { - placeHolder: Messages.enterGitHubPat, - prompt: Messages.githubPatHelpMessage, - validateInput: input => input.length === 0 ? Messages.gitHubPatErrorMessage : null - } - ), TelemetryKeys.GitHubPatDuration - ); - - if (token === undefined) { - return undefined; - } - - return vscode.window.withProgress( - { - location: vscode.ProgressLocation.Notification, - title: Messages.creatingGitHubServiceConnection - }, - async () => { - const serviceConnectionName = `${repoDetails.repositoryName}-github-${uniqueResourceNameSuffix}`; - try { - return serviceConnectionHelper.createGitHubServiceConnection(serviceConnectionName, token); - } catch (error) { - telemetryHelper.logError(Layer, TracePoints.GitHubServiceConnectionError, error as Error); - throw error; - } - }); - } - - private async createAzureServiceConnection( - serviceConnectionHelper: ServiceConnectionHelper, - adoDetails: AzureDevOpsDetails, - azureSiteDetails: AzureSiteDetails, - uniqueResourceNameSuffix: string, - ): Promise { - // TODO: should SPN created be scoped to resource group of target azure resource. - return vscode.window.withProgress( - { - location: vscode.ProgressLocation.Notification, - title: utils.format(Messages.creatingAzureServiceConnection, azureSiteDetails.subscriptionId) - }, - async () => { - const scope = azureSiteDetails.site.id; - try { - const aadAppName = GraphHelper.generateAadApplicationName( - adoDetails.organizationName, - adoDetails.project.name); - const aadApp = await GraphHelper.createSpnAndAssignRole(adoDetails.session, aadAppName, scope); - const serviceConnectionName = `${azureSiteDetails.site.name}-${uniqueResourceNameSuffix}`; - return serviceConnectionHelper.createAzureServiceConnection( - serviceConnectionName, - adoDetails.session.tenantId, - azureSiteDetails.subscriptionId, - scope, - aadApp); - } - catch (error) { - telemetryHelper.logError(Layer, TracePoints.AzureServiceConnectionCreateFailure, error as Error); - throw error; - } - }); - } - - private async createPipelineFile( - template: PipelineTemplate, - branch: string, - azureSiteDetails: AzureSiteDetails | undefined, - azureServiceConnection: string | undefined, - ): Promise { - try { - const pipelineFileName = await getAvailableFileName("azure-pipelines.yml", this.workspaceUri); - const fileUri = Utils.joinPath(this.workspaceUri, pipelineFileName); - const content = await templateHelper.renderContent( - template.path, - branch, - azureSiteDetails?.site.name, - azureServiceConnection); - await vscode.workspace.fs.writeFile(fileUri, Buffer.from(content)); - await vscode.window.showTextDocument(fileUri); - return pipelineFileName; - } catch (error) { - telemetryHelper.logError(Layer, TracePoints.AddingContentToPipelineFileFailed, error as Error); - throw error; - } - } - - private async checkInPipelineFileToRepository( - pipelineFileName: string, - repoDetails: GitRepositoryDetails, - ): Promise { - try { - const commitOrDiscard = await vscode.window.showInformationMessage( - utils.format( - Messages.modifyAndCommitFile, - Messages.commitAndPush, - repoDetails.branch, - repoDetails.remoteName), - Messages.commitAndPush, - Messages.discardPipeline); - if (commitOrDiscard?.toLowerCase() === Messages.commitAndPush.toLowerCase()) { - return vscode.window.withProgress({ - location: vscode.ProgressLocation.Notification, - title: Messages.pushingPipelineFile - }, async () => { - try { - // TODO: Only commit the YAML file. Need to file a feature request on VS Code for this. - await this.repo.add([Utils.joinPath(this.workspaceUri, pipelineFileName).fsPath]); - await this.repo.commit(Messages.addYmlFile); - await this.repo.push(repoDetails.remoteName); - - const commit = this.repo.state.HEAD?.commit; - if (commit === undefined) { - void vscode.window.showErrorMessage("Unable to get commit after pushing pipeline, please file a bug at https://github.com/microsoft/azure-pipelines-vscode/issues/new"); - return undefined; - } - - return commit; - } catch (error) { - telemetryHelper.logError(Layer, TracePoints.CheckInPipelineFailure, error as Error); - void vscode.window.showErrorMessage( - utils.format(Messages.commitFailedErrorMessage, (error as Error).message)); - return undefined; - } - }); - } else { - telemetryHelper.setTelemetry(TelemetryKeys.PipelineDiscarded, 'true'); - return undefined; - } - } catch (error) { - telemetryHelper.logError(Layer, TracePoints.PipelineFileCheckInFailed, error as Error); - throw error; - } - } - - private async createAndRunPipeline( - repoDetails: GitRepositoryDetails, - adoDetails: AzureDevOpsDetails, - template: PipelineTemplate, - azureSiteDetails: AzureSiteDetails | undefined, - repositoryProperties: Record | undefined, - pipelineFileName: string, - commit: string, - ): Promise { - return vscode.window.withProgress({ - location: vscode.ProgressLocation.Notification, - title: Messages.configuringPipelineAndDeployment - }, async () => { - try { - const taskAgentApi = await adoDetails.adoClient.getTaskAgentApi(); - const queues = await taskAgentApi.getAgentQueuesByNames( - [constants.HostedVS2017QueueName], - adoDetails.project.name); - if (queues.length === 0) { - void vscode.window.showErrorMessage( - utils.format(Messages.noAgentQueueFound, constants.HostedVS2017QueueName)); - return undefined; - } - - const pipelineName = `${(azureSiteDetails?.site.name ?? template.label)}-${this.uniqueResourceNameSuffix}`; - const definitionPayload = AzureDevOpsHelper.getBuildDefinitionPayload( - pipelineName, - queues[0], - repoDetails, - adoDetails, - repositoryProperties, - pipelineFileName - ); - const buildApi = await adoDetails.adoClient.getBuildApi(); - const definition = await buildApi.createDefinition(definitionPayload, adoDetails.project.name); - const build = await buildApi.queueBuild({ - definition, - project: adoDetails.project, - sourceBranch: repoDetails.branch, - sourceVersion: commit - }, adoDetails.project.name); - - if (!isValidBuild(build)) { - return undefined; - } - - return build; - } - catch (error) { - telemetryHelper.logError(Layer, TracePoints.CreateAndQueuePipelineFailed, error as Error); - throw error; - } - }); - } - - private async updateScmType( - queuedPipeline: ValidatedBuild, - adoDetails: AzureDevOpsDetails, - azureSiteDetails: AzureSiteDetails, - ): Promise { - await vscode.window.withProgress({ - location: vscode.ProgressLocation.Notification, - title: Messages.runningPostDeploymentActions - }, async () => { - try { - // update SCM type - await azureSiteDetails.appServiceClient.updateScmType(azureSiteDetails.site); - - const buildDefinitionUrl = AzureDevOpsHelper.getOldFormatBuildDefinitionUrl( - adoDetails.organizationName, - adoDetails.project.id, - queuedPipeline.definition.id); - const buildUrl = AzureDevOpsHelper.getOldFormatBuildUrl( - adoDetails.organizationName, - adoDetails.project.id, - queuedPipeline.id); - - const locationsApi = await adoDetails.adoClient.getLocationsApi(); - const { instanceId } = await locationsApi.getConnectionData(); - if (instanceId === undefined) { - void vscode.window.showErrorMessage("Unable to determine the organization ID, please file a bug at https://github.com/microsoft/azure-pipelines-vscode/issues/new"); - return; - } - - // update metadata of app service to store information about the pipeline deploying to web app. - const metadata = await azureSiteDetails.appServiceClient.getAppServiceMetadata(azureSiteDetails.site); - metadata.properties = { - ...metadata.properties, - VSTSRM_ProjectId: adoDetails.project.id, - VSTSRM_AccountId: instanceId, - VSTSRM_BuildDefinitionId: queuedPipeline.definition.id.toString(), - VSTSRM_BuildDefinitionWebAccessUrl: buildDefinitionUrl, - VSTSRM_ConfiguredCDEndPoint: '', - VSTSRM_ReleaseDefinitionId: '', - }; - - await azureSiteDetails.appServiceClient.updateAppServiceMetadata(azureSiteDetails.site, metadata); - - // send a deployment log with information about the setup pipeline and links. - await azureSiteDetails.appServiceClient.publishDeploymentToAppService( - azureSiteDetails.site, - buildDefinitionUrl, - buildDefinitionUrl, - buildUrl); - } catch (error) { - telemetryHelper.logError(Layer, TracePoints.PostDeploymentActionFailed, error as Error); - throw error; - } - }); - } - - private async getAzureDevOpsClient(organization: string, session: AzureSession): Promise { - if (this.azureDevOpsClient) { - return this.azureDevOpsClient; - } - - const { accessToken } = await session.credentials2.getToken(); - const authHandler = getBearerHandler(accessToken); - this.azureDevOpsClient = new WebApi(`https://dev.azure.com/${organization}`, authHandler); - return this.azureDevOpsClient; - } -} - -function isValidProject(project: TeamProject): project is ValidatedProject { - if (project.name === undefined || project.id === undefined) { - void vscode.window.showErrorMessage("Unable to get name or ID for project, please file a bug at https://github.com/microsoft/azure-pipelines-vscode/issues/new"); - return false; - } - - return true; -} - -function isValidSite(resource: WebSiteManagementModels.Site): resource is ValidatedSite { - if (resource.name === undefined || resource.id === undefined) { - void vscode.window.showErrorMessage("Unable to get name or ID for resource, please file a bug at https://github.com/microsoft/azure-pipelines-vscode/issues/new"); - return false; - } - - return true; -} - -function isValidBuild(build: Build): build is ValidatedBuild { - if (build.definition === undefined || build.definition.id === undefined || build.id === undefined) { - void vscode.window.showErrorMessage("Unable to get definition or ID for build, please file a bug at https://github.com/microsoft/azure-pipelines-vscode/issues/new"); - return false; - } - - return true; -} diff --git a/src/configure/helper/commonHelper.ts b/src/configure/helper/commonHelper.ts deleted file mode 100644 index c350b5a..0000000 --- a/src/configure/helper/commonHelper.ts +++ /dev/null @@ -1,67 +0,0 @@ -import * as vscode from 'vscode'; -import { URI } from 'vscode-uri'; -import * as util from 'util'; -import * as Messages from '../../messages'; -import * as logger from '../../logger'; - -export async function sleepForMilliSeconds(timeInMs: number): Promise { - return new Promise((resolve) => { - setTimeout(() => { - resolve(); - }, timeInMs); - }); -} - -export function generateRandomPassword(length: number = 20): string { - const characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#%^*()-+"; - const charTypeSize = [26, 26, 10, 10]; - const charTypeStartIndex = [0, 26, 52, 62]; - let password = ""; - for (let x = 0; x < length; x++) { - const i = Math.floor(Math.random() * charTypeSize[x % 4]); - password += characters.charAt(i + charTypeStartIndex[x % 4]); - } - return password; -} - -export async function executeFunctionWithRetry( - func: () => Promise, - retryCount: number = 20, - retryIntervalTimeInSec: number = 2, - errorMessage?: string): Promise { - let internalError = null; - for (; retryCount > 0; retryCount--) { - try { - return func(); - } catch (error) { - internalError = error; - logger.log(JSON.stringify(error)); - await sleepForMilliSeconds(retryIntervalTimeInSec * 1000); - } - } - - throw new Error(errorMessage ? - errorMessage.concat(util.format(Messages.retryFailedMessage, retryCount, JSON.stringify(internalError))) : - util.format(Messages.retryFailedMessage, retryCount, JSON.stringify(internalError))); -} - -export async function getAvailableFileName(fileName: string, repoPath: URI): Promise { - const files = (await vscode.workspace.fs.readDirectory(repoPath)).map(entries => entries[0]); - if (!files.includes(fileName)) { - return fileName; - } - - for (let i = 1; i < 100; i++) { - const incrementalFileName = getIncrementalFileName(fileName, i); - if (!files.includes(incrementalFileName)) { - return incrementalFileName; - } - } - - throw new Error(Messages.noAvailableFileNames); -} - -function getIncrementalFileName(fileName: string, count: number): string { - const periodIndex = fileName.indexOf('.'); - return fileName.substring(0, periodIndex).concat(` (${count})`, fileName.substring(periodIndex)); -} diff --git a/src/configure/helper/devOps/azureDevOpsHelper.ts b/src/configure/helper/devOps/azureDevOpsHelper.ts deleted file mode 100644 index 46e336b..0000000 --- a/src/configure/helper/devOps/azureDevOpsHelper.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { BuildDefinition, ContinuousIntegrationTrigger, DefinitionQuality, DefinitionTriggerType, DefinitionType, YamlProcess } from 'azure-devops-node-api/interfaces/BuildInterfaces'; -import { TaskAgentQueue } from 'azure-devops-node-api/interfaces/TaskAgentInterfaces'; - -import { RepositoryProvider, GitRepositoryDetails, AzureDevOpsDetails } from '../../model/models'; -import * as Messages from '../../../messages'; - -// https://dev.azure.com/ OR https://org@dev.azure.com/ -const AzureReposUrl = 'dev.azure.com/'; - -// git@ssh.dev.azure.com:v3/ -const SSHAzureReposUrl = 'ssh.dev.azure.com:v3/'; - -// https://org.visualstudio.com/ -const VSOUrl = '.visualstudio.com/'; - -// org@vs-ssh.visualstudio.com:v3/ -const SSHVsoReposUrl = 'vs-ssh.visualstudio.com:v3/'; - -export function isAzureReposUrl(remoteUrl: string): boolean { - return remoteUrl.includes(AzureReposUrl) || - remoteUrl.includes(VSOUrl) || - remoteUrl.includes(SSHAzureReposUrl) || - remoteUrl.includes(SSHVsoReposUrl); -} - -// TODO: Use ADO instead. -export function getFormattedRemoteUrl(remoteUrl: string): string { - // Convert SSH based url to https based url as pipeline service doesn't accept SSH based URL - if (remoteUrl.includes(SSHAzureReposUrl) || remoteUrl.includes(SSHVsoReposUrl)) { - const details = getRepositoryDetailsFromRemoteUrl(remoteUrl); - return `https://${details.organizationName}${VSOUrl}${details.projectName}/_git/${details.repositoryName}`; - } - - return remoteUrl; -} - -export function getRepositoryDetailsFromRemoteUrl(remoteUrl: string): { organizationName: string, projectName: string, repositoryName: string } { - if (remoteUrl.includes(AzureReposUrl)) { - const part = remoteUrl.substring(remoteUrl.indexOf(AzureReposUrl) + AzureReposUrl.length); - const parts = part.split('/'); - if (parts.length !== 4) { - throw new Error(Messages.failedToDetermineAzureRepoDetails); - } - - return { - organizationName: parts[0].trim(), - projectName: parts[1].trim(), - repositoryName: parts[3].trim() - }; - } else if (remoteUrl.includes(VSOUrl)) { - const part = remoteUrl.substring(remoteUrl.indexOf(VSOUrl) + VSOUrl.length); - const organizationName = remoteUrl.substring(remoteUrl.indexOf('https://') + 'https://'.length, remoteUrl.indexOf('.visualstudio.com')); - const parts = part.split('/'); - - if (parts.length === 4 && parts[0].toLowerCase() === 'defaultcollection') { - // Handle scenario where part is 'DefaultCollection//_git/' - parts.shift(); - } - - if (parts.length !== 3) { - throw new Error(Messages.failedToDetermineAzureRepoDetails); - } - - return { - organizationName: organizationName, - projectName: parts[0].trim(), - repositoryName: parts[2].trim() - }; - } else if (remoteUrl.includes(SSHAzureReposUrl) || remoteUrl.includes(SSHVsoReposUrl)) { - const urlFormat = remoteUrl.includes(SSHAzureReposUrl) ? SSHAzureReposUrl : SSHVsoReposUrl; - const part = remoteUrl.substring(remoteUrl.indexOf(urlFormat) + urlFormat.length); - const parts = part.split('/'); - if (parts.length !== 3) { - throw new Error(Messages.failedToDetermineAzureRepoDetails); - } - - return { - organizationName: parts[0].trim(), - projectName: parts[1].trim(), - repositoryName: parts[2].trim() - }; - } else { - throw new Error(Messages.notAzureRepoUrl); - } -} - -export function getBuildDefinitionPayload( - pipelineName: string, - queue: TaskAgentQueue, - repoDetails: GitRepositoryDetails, - adoDetails: AzureDevOpsDetails, - repositoryProperties: Record | undefined, - pipelineFileName: string, -): BuildDefinition { - return { - name: pipelineName, - type: DefinitionType.Build, - quality: DefinitionQuality.Definition, - path: "\\", //Folder path of build definition. Root folder in this case - project: adoDetails.project, - process: { - type: 2, - yamlFileName: pipelineFileName, - } as YamlProcess, - queue: { - id: queue.id, - }, - triggers: [ - { - triggerType: DefinitionTriggerType.ContinuousIntegration, // Continuous integration trigger type - settingsSourceType: 2, // Use trigger source as specified in YAML - batchChanges: false, - } as ContinuousIntegrationTrigger, - ], - repository: { - id: repoDetails.repositoryProvider === RepositoryProvider.Github - ? `${repoDetails.ownerName}/${repoDetails.repositoryName}` - : undefined, - name: repoDetails.repositoryProvider === RepositoryProvider.Github - ? `${repoDetails.ownerName}/${repoDetails.repositoryName}` - : repoDetails.repositoryName, - type: repoDetails.repositoryProvider, - defaultBranch: repoDetails.branch, - url: repoDetails.remoteUrl, - properties: repositoryProperties, - }, - properties: { - source: 'ms-azure-devops.azure-pipelines', - }, - }; -} - -// TODO: These should be able to be changed to use ADO instead. -export function getOldFormatBuildDefinitionUrl(accountName: string, projectName: string, buildDefinitionId: number) { - return `https://${accountName}.visualstudio.com/${projectName}/_build?definitionId=${buildDefinitionId}&_a=summary`; -} - -export function getOldFormatBuildUrl(accountName: string, projectName: string, buildId: number) { - return `https://${accountName}.visualstudio.com/${projectName}/_build/results?buildId=${buildId}&view=results`; -} diff --git a/src/configure/helper/devOps/serviceConnectionHelper.ts b/src/configure/helper/devOps/serviceConnectionHelper.ts deleted file mode 100644 index 244076b..0000000 --- a/src/configure/helper/devOps/serviceConnectionHelper.ts +++ /dev/null @@ -1,58 +0,0 @@ -import * as azdev from 'azure-devops-node-api'; -import * as util from 'util'; - -import { sleepForMilliSeconds } from '../commonHelper'; -import { ServiceConnectionClient } from '../../clients/devOps/serviceConnectionClient'; -import { AadApplication } from '../../model/models'; -import * as Messages from '../../../messages'; - -export class ServiceConnectionHelper { - private serviceConnectionClient: ServiceConnectionClient; - - public constructor(connection: azdev.WebApi, project: string) { - this.serviceConnectionClient = new ServiceConnectionClient(connection, project); - } - - public async createGitHubServiceConnection(name: string, gitHubPat: string): Promise { - const connection = await this.serviceConnectionClient.createGitHubServiceConnection(name, gitHubPat); - const endpointId = connection.id; - await this.waitForEndpointToBeReady(endpointId); - const authorizationResponse = await this.serviceConnectionClient.authorizeEndpointForAllPipelines(endpointId); - if (!authorizationResponse.allPipelines.authorized) { - throw new Error(Messages.couldNotAuthorizeEndpoint); - } - - return endpointId; - } - - public async createAzureServiceConnection(name: string, tenantId: string, subscriptionId: string, scope: string, aadApp: AadApplication): Promise { - const connection = await this.serviceConnectionClient.createAzureServiceConnection(name, tenantId, subscriptionId, scope, aadApp); - const endpointId: string = connection.id; - await this.waitForEndpointToBeReady(endpointId); - const authorizationResponse = await this.serviceConnectionClient.authorizeEndpointForAllPipelines(endpointId); - if (!authorizationResponse.allPipelines.authorized) { - throw new Error(Messages.couldNotAuthorizeEndpoint); - } - - return endpointId; - } - - private async waitForEndpointToBeReady(endpointId: string): Promise { - for (let attempt = 0; attempt < 30; attempt++) { - const connection = await this.serviceConnectionClient.getEndpointStatus(endpointId); - - if (connection.isReady) { - return; - } - - const { operationStatus } = connection; - if (operationStatus.state.toLowerCase() === "failed") { - throw Error(util.format(Messages.unableToCreateServiceConnection, connection.type, operationStatus.state, operationStatus.statusMessage)); - } - - await sleepForMilliSeconds(2000); - } - - throw Error(util.format(Messages.timedOutCreatingServiceConnection)); - } -} diff --git a/src/configure/helper/gitHubHelper.ts b/src/configure/helper/gitHubHelper.ts deleted file mode 100644 index 9e99e0f..0000000 --- a/src/configure/helper/gitHubHelper.ts +++ /dev/null @@ -1,33 +0,0 @@ -// Note that this is not intended to be be completely accurate. -// This is the canonical URL that GitHub provides when cloning, -// and the only one that we'll support to keep the code simple. -const GitHubUrl = 'https://github.com/'; -const SSHGitHubUrl = 'git@github.com:'; - -export function isGitHubUrl(remoteUrl: string): boolean { - return remoteUrl.startsWith(GitHubUrl) || remoteUrl.startsWith(SSHGitHubUrl); -} - -export function getRepositoryDetailsFromRemoteUrl(remoteUrl: string): { ownerName: string, repositoryName: string } { - // https://github.com/microsoft/azure-pipelines-vscode.git - // => ['https:', '', 'github.com', 'microsoft', 'azure-pipelines-vscode.git'] - // => { ownerName: 'microsoft', repositoryName: 'azure-pipelines-vscode'} - // =============================================== - // git@github.com:microsoft/azure-pipelines-vscode - // => microsoft/zure-pipelines-vscode - // => ['microsoft', 'azure-pipelines-vscode'] - // => { ownerName: 'microsoft', repositoryName: 'azure-pipelines-vscode'} - const parts = remoteUrl.replace(SSHGitHubUrl, '').split('/'); - return { - ownerName: parts[parts.length - 2], - repositoryName: parts[parts.length - 1].replace(/\.git$/, '') - }; -} - -export function getFormattedRemoteUrl(remoteUrl: string): string { - if (remoteUrl.startsWith(SSHGitHubUrl)) { - return `https://github.com/${remoteUrl.substring(SSHGitHubUrl.length)}`; - } - - return remoteUrl; -} diff --git a/src/configure/helper/graphHelper.ts b/src/configure/helper/graphHelper.ts deleted file mode 100644 index 79bb07d..0000000 --- a/src/configure/helper/graphHelper.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { v4 as uuid } from 'uuid'; -import { AadApplication } from '../model/models'; -import { generateRandomPassword, executeFunctionWithRetry } from './commonHelper'; -import * as Messages from '../../messages'; -import { RestClient } from '../clients/restClient'; -import { TokenCredentials } from '@azure/ms-rest-js'; -import { TokenCredentialsBase } from '@azure/ms-rest-nodeauth'; -import * as util from 'util'; -import { AzureSession } from '../../typings/azure-account.api'; - -// TODO: Replace this class with @microsoft/microsoft-graph-client and @azure/arm-authorization -// client.api("/applications").post() -// client.api("/servicePrincipals").post() -// new AuthorizationManagementClient().roleAssignments.create() -// Disable ESLint rules because there won't be any investment into this file; see above. -/* eslint-disable */ -export class GraphHelper { - - private static contributorRoleId = "b24988ac-6180-42a0-ab88-20f7382dd24c"; - private static retryTimeIntervalInSec = 2; - private static retryCount = 20; - - public static async createSpnAndAssignRole(session: AzureSession, aadAppName: string, scope: string): Promise { - const accessToken = await this.getGraphToken(session); - const tokenCredentials = new TokenCredentials(accessToken); - const graphClient = new RestClient(tokenCredentials); - const tenantId = session.tenantId; - let aadApp: AadApplication; - - return this.createAadApp(graphClient, aadAppName, tenantId) - .then((aadApplication) => { - aadApp = aadApplication; - return this.createSpn(graphClient, aadApp.appId, tenantId); - }) - .then((spn) => { - aadApp.objectId = spn.objectId; - return this.createRoleAssignment(session.credentials2, scope, aadApp.objectId); - }) - .then(() => { - return aadApp; - }) - .catch((error) => { - let errorMessage = error && error.message; - if (!errorMessage && error["odata.error"]) { - errorMessage = error["odata.error"]["message"]; - if (typeof errorMessage === "object") { - errorMessage = errorMessage.value; - } - } - throw new Error(errorMessage); - }); - } - - public static generateAadApplicationName(accountName: string, projectName: string): string { - let spnLengthAllowed = 92; - const guid = uuid(); - projectName = projectName.replace(/[^a-zA-Z0-9_-]/g, ""); - accountName = accountName.replace(/[^a-zA-Z0-9_-]/g, ""); - const spnName = accountName + "-" + projectName + "-" + guid; - if (spnName.length <= spnLengthAllowed) { - return spnName; - } - - // 2 is subtracted for delimiter '-' - spnLengthAllowed = spnLengthAllowed - guid.length - 2; - if (accountName.length > spnLengthAllowed / 2 && projectName.length > spnLengthAllowed / 2) { - accountName = accountName.substr(0, spnLengthAllowed / 2); - projectName = projectName.substr(0, spnLengthAllowed - accountName.length); - } - else if (accountName.length > spnLengthAllowed / 2 && accountName.length + projectName.length > spnLengthAllowed) { - accountName = accountName.substr(0, spnLengthAllowed - projectName.length); - } - else if (projectName.length > spnLengthAllowed / 2 && accountName.length + projectName.length > spnLengthAllowed) { - projectName = projectName.substr(0, spnLengthAllowed - accountName.length); - } - - return accountName + "-" + projectName + "-" + guid; - } - - private static async getGraphToken(session: AzureSession): Promise { - const { activeDirectoryGraphResourceId } = session.environment; - if (activeDirectoryGraphResourceId === undefined) { - throw new Error(util.format(Messages.acquireAccessTokenFailed, "Active Directory Graph resource ID is undefined.")); - } - - return new Promise((resolve, reject) => { - const credentials = session.credentials2; - credentials.authContext.acquireToken(activeDirectoryGraphResourceId, session.userId, credentials.clientId, function (err, tokenResponse) { - if (err) { - reject(new Error(util.format(Messages.acquireAccessTokenFailed, err.message))); - } else if (tokenResponse.error) { - reject(new Error(util.format(Messages.acquireAccessTokenFailed, tokenResponse.error))); - } else { - // This little casting workaround here allows us to not have to import adal-node - // just for the typings. Really it's on adal-node for making the type - // TokenResponse | ErrorResponse, even though TokenResponse has the same - // error properties as ErrorResponse. - resolve((tokenResponse as any).accessToken); - } - }); - }); - } - - private static async createAadApp(graphClient: RestClient, name: string, tenantId: string): Promise { - const secret = generateRandomPassword(20); - const startDate = new Date(Date.now()); - - return graphClient.sendRequest({ - url: `https://graph.windows.net/${tenantId}/applications`, - queryParameters: { - "api-version": "1.6" - }, - method: "POST", - body: { - "availableToOtherTenants": false, - "displayName": name, - "homepage": "https://" + name, - "passwordCredentials": [ - { - "startDate": startDate, - "endDate": new Date(startDate.getFullYear() + 1, startDate.getMonth()), - "value": secret - } - ] - } - }) - .then((data) => { - return { - appId: data.appId, - secret: secret - }; - }); - } - - private static async createSpn(graphClient: RestClient, appId: string, tenantId: string): Promise { - const createSpnPromise = () => { - return graphClient.sendRequest({ - url: `https://graph.windows.net/${tenantId}/servicePrincipals`, - queryParameters: { - "api-version": "1.6" - }, - method: "POST", - body: { - "appId": appId, - "accountEnabled": "true" - } - }); - }; - - return executeFunctionWithRetry( - createSpnPromise, - GraphHelper.retryCount, - GraphHelper.retryTimeIntervalInSec, - Messages.azureServicePrincipalFailedMessage); - } - - private static async createRoleAssignment(credentials: TokenCredentialsBase, scope: string, objectId: string): Promise { - const restClient = new RestClient(credentials); - const createRoleAssignmentPromise = () => { - return restClient.sendRequest({ - url: `https://management.azure.com/${scope}/providers/Microsoft.Authorization/roleAssignments/${uuid()}`, - queryParameters: { - "api-version": "2021-04-01-preview" // So we have access to the "principalType" property - }, - method: "PUT", - body: { - "properties": { - "roleDefinitionId": `${scope}/providers/Microsoft.Authorization/roleDefinitions/${this.contributorRoleId}`, - "principalId": objectId, - "principalType": "ServicePrincipal", // Makes the assignment work for newly-created service principals - } - } - }); - }; - - return executeFunctionWithRetry( - createRoleAssignmentPromise, - GraphHelper.retryCount, - GraphHelper.retryTimeIntervalInSec, - Messages.roleAssignmentFailedMessage); - } -} diff --git a/src/configure/helper/templateHelper.ts b/src/configure/helper/templateHelper.ts deleted file mode 100644 index 0eb3901..0000000 --- a/src/configure/helper/templateHelper.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { PipelineTemplate, TargetResourceType, WebAppKind } from '../model/models'; -import * as fs from 'fs/promises'; -import Mustache from 'mustache'; -import * as path from 'path'; -import * as vscode from 'vscode'; -import { URI } from 'vscode-uri'; - -export async function analyzeRepoAndListAppropriatePipeline(repoUri: URI): Promise { - // TO-DO: To populate the possible templates on the basis of azure target resource. - let templateList = simpleWebAppTemplates; - const analysisResult = await analyzeRepo(repoUri); - - if (analysisResult.isNodeApplication) { - // add all node application templates - templateList = nodeTemplates.concat(templateList); - } - - if (analysisResult.isPythonApplication) { - templateList = pythonTemplates.concat(templateList); - } - - if (analysisResult.isFunctionApplication) { - templateList = functionTemplates.concat(templateList); - } - - if (analysisResult.isDotnetApplication) { - templateList = dotnetTemplates.concat(templateList); - } - - // add all possible templates as we could not detect the appropriate onesı - return templateList; -} - -export async function renderContent(templateFilePath: string, branch: string, resource: string | undefined, azureServiceConnection: string | undefined): Promise { - const data = await fs.readFile(templateFilePath, { encoding: "utf8" }); - return Mustache.render(data, { - branch, - resource, - azureServiceConnection, - }); -} - -async function analyzeRepo(repoUri: URI): Promise<{ isNodeApplication: boolean, isFunctionApplication: boolean, isPythonApplication: boolean, isDotnetApplication: boolean }> { - let contents: [string, vscode.FileType][]; - try { - contents = await vscode.workspace.fs.readDirectory(repoUri); - } catch { - return { - isNodeApplication: true, - isFunctionApplication: true, - isPythonApplication: true, - isDotnetApplication: true, - }; - } - - const files = contents.filter(file => file[1] !== vscode.FileType.Directory).map(file => file[0]); - - return { - isNodeApplication: isNodeRepo(files), - isFunctionApplication: isFunctionApp(files), - isPythonApplication: isPythonRepo(files), - isDotnetApplication: isDotnetApplication(files), - // isContainerApplication: isDockerRepo(files) - }; - -} - -function isNodeRepo(files: string[]): boolean { - const nodeFilesRegex = /\.ts$|\.js$|package\.json$|node_modules/; - return files.some((file) => nodeFilesRegex.test(file.toLowerCase())); -} - -function isFunctionApp(files: string[]): boolean { - return files.some((file) => file.toLowerCase().endsWith("host.json")); -} - -function isPythonRepo(files: string[]): boolean { - return files.some((file) => path.extname(file).toLowerCase() === '.py'); -} - -function isDotnetApplication(files: string[]): boolean { - return files.some((file) => ['.sln', '.csproj', '.fsproj'].includes(path.extname(file).toLowerCase())); -} - -const nodeTemplates: Array = [ - { - label: 'Node.js with npm to Windows Web App', - path: path.join(__dirname, 'configure/templates/nodejsWindowsWebApp.yml'), - language: 'node', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.WindowsApp, - }, - }, - { - label: 'Node.js with Angular to Windows Web App', - path: path.join(__dirname, 'configure/templates/nodejsWindowsWebAppAngular.yml'), - language: 'node', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.WindowsApp, - }, - }, - { - label: 'Node.js with Gulp to Windows Web App', - path: path.join(__dirname, 'configure/templates/nodejsWindowsWebAppGulp.yml'), - language: 'node', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.WindowsApp, - }, - }, - { - label: 'Node.js with Grunt to Windows Web App', - path: path.join(__dirname, 'configure/templates/nodejsWindowsWebAppGrunt.yml'), - language: 'node', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.WindowsApp, - }, - }, - { - label: 'Node.js with Webpack to Windows Web App', - path: path.join(__dirname, 'configure/templates/nodejsWindowsWebAppWebpack.yml'), - language: 'node', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.WindowsApp, - }, - } -]; - -const pythonTemplates: Array = [ - { - label: 'Python to Linux Web App on Azure', - path: path.join(__dirname, 'configure/templates/pythonLinuxWebApp.yml'), - language: 'python', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.LinuxApp, - }, - }, - { - label: 'Build and Test Python Django App', - path: path.join(__dirname, 'configure/templates/pythonDjango.yml'), - language: 'python', - target: { - type: TargetResourceType.None, - }, - } -]; - -const dotnetTemplates: Array = [ - { - label: '.NET Web App to Windows on Azure', - path: path.join(__dirname, 'configure/templates/dotnetWindowsWebApp.yml'), - language: 'dotnet', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.WindowsApp, - }, - }, - { - label: '.NET Web App to Linux on Azure', - path: path.join(__dirname, 'configure/templates/dotnetLinuxWebApp.yml'), - language: 'dotnet', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.LinuxApp, - }, - } -] - -const simpleWebAppTemplates: Array = [ - { - label: 'Simple application to Windows Web App', - path: path.join(__dirname, 'configure/templates/simpleWebApp.yml'), - language: 'none', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.WindowsApp, - }, - } -]; - -const functionTemplates: Array = [ - { - label: 'Python Function App to Linux Azure Function', - path: path.join(__dirname, 'configure/templates/pythonLinuxFunctionApp.yml'), - language: 'python', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.FunctionAppLinux, - }, - }, - { - label: 'Node.js Function App to Linux Azure Function', - path: path.join(__dirname, 'configure/templates/nodejsLinuxFunctionApp.yml'), - language: 'node', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.FunctionAppLinux, - }, - }, - { - label: '.NET Function App to Windows Azure Function', - path: path.join(__dirname, 'configure/templates/dotnetWindowsFunctionApp.yml'), - language: 'dotnet', - target: { - type: TargetResourceType.WebApp, - kind: WebAppKind.FunctionApp, - }, - }, -] diff --git a/src/configure/helper/userCancelledError.ts b/src/configure/helper/userCancelledError.ts deleted file mode 100644 index f1c6971..0000000 --- a/src/configure/helper/userCancelledError.ts +++ /dev/null @@ -1,8 +0,0 @@ -// https://github.com/microsoft/vscode-azuretools/blob/5999c2ad4423e86f22d2c648027242d8816a50e4/ui/src/errors.ts -// minus localization - -export class UserCancelledError extends Error { - constructor() { - super('Operation cancelled.'); - } -} diff --git a/src/configure/model/models.ts b/src/configure/model/models.ts deleted file mode 100644 index 7e92a81..0000000 --- a/src/configure/model/models.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { QuickPickItem } from 'vscode'; -import { TeamProject } from 'azure-devops-node-api/interfaces/CoreInterfaces'; -import { WebApi } from 'azure-devops-node-api'; -import { AppServiceClient } from '../clients/azure/appServiceClient'; -import { Build, BuildDefinition } from 'azure-devops-node-api/interfaces/BuildInterfaces'; -import { WebSiteManagementModels } from '@azure/arm-appservice'; -import { AzureSession } from '../../typings/azure-account.api'; - -export interface Organization { - accountId: string; - accountName: string; - accountUri: string; - properties: Record; -} - -/** - * Identical to @see {TeamProject} except with name & id verified. - */ -export interface ValidatedProject extends TeamProject { - name: string; - id: string; -} - -/** - * Identical to @see {WebSiteManagementModels.Site} except with name, id, & resourceGroup verified. - */ -export interface ValidatedSite extends WebSiteManagementModels.Site { - name: string; - id: string; - resourceGroup: string; -} - -/** - * Identical to @see {Build} except with definition & id verified. - */ -export interface ValidatedBuild extends Build { - definition: Required; - id: number; -} - -export type OrganizationAvailability = { - isAvailable: true; - name: string; - unavailabilityReason: null; -} | { - isAvailable: false; - name: string; - unavailabilityReason: string; -}; - -export interface AzureSiteDetails { - appServiceClient: AppServiceClient; - subscriptionId: string; - site: ValidatedSite; -} - -export type GitRepositoryDetails = { - repositoryName: string; - remoteName: string; - remoteUrl: string; - branch: string; -} & ({ - repositoryProvider: RepositoryProvider.AzureRepos; - organizationName: string; - projectName: string; -} | { - repositoryProvider: RepositoryProvider.Github; - ownerName: string; -}); - -export interface AzureDevOpsDetails { - session: AzureSession; - adoClient: WebApi; - organizationName: string; - project: ValidatedProject; -} - -export interface PipelineTemplate { - path: string; - label: string; - language: string; - target: TargetResource; -} - -export enum SourceOptions { - CurrentWorkspace = 'Current workspace', - BrowseLocalMachine = 'Browse local machine', - GithubRepository = 'Github repository' -} - -export enum RepositoryProvider { - Github = 'github', - AzureRepos = 'tfsgit' -} - -export type TargetResource = { - type: TargetResourceType.None; -} | { - type: TargetResourceType.WebApp; - kind: WebAppKind; -}; - -export enum TargetResourceType { - None = 'none', - WebApp = 'Microsoft.Web/sites' -} - -export enum WebAppKind { - WindowsApp = 'app', - FunctionApp = 'functionapp', - FunctionAppLinux = 'functionapp,linux', - LinuxApp = 'app,linux', - LinuxContainerApp = 'app,linux,container' -} - -export interface QuickPickItemWithData extends QuickPickItem { - data: T; -} - -export interface AadApplication { - appId: string; - secret: string; - objectId: string; -} diff --git a/src/configure/resources/constants.ts b/src/configure/resources/constants.ts deleted file mode 100644 index 4856cb6..0000000 --- a/src/configure/resources/constants.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const HostedVS2017QueueName: string = "Hosted VS2017"; -export const SelectProject = 'selectProject'; -export const SelectPipelineTemplate = 'selectPipelineTemplate'; -export const SelectSubscription = 'selectSubscription'; -export const GitHubPat = 'gitHubPat'; -export const SelectFromMultipleWorkSpace = 'selectFromMultipleWorkSpace'; -export const SelectRemoteForRepo = 'selectRemoteForRepo'; diff --git a/src/configure/resources/tracePoints.ts b/src/configure/resources/tracePoints.ts deleted file mode 100644 index 177e7d1..0000000 --- a/src/configure/resources/tracePoints.ts +++ /dev/null @@ -1,8 +0,0 @@ -// Failure trace points -export const AddingContentToPipelineFileFailed = 'AddingContentToPipelineFileFailed'; -export const AzureServiceConnectionCreateFailure = 'AzureServiceConnectionCreateFailure'; -export const CheckInPipelineFailure = 'checkInPipelineFailure'; -export const CreateAndQueuePipelineFailed = 'createAndBuildPipelineFailed'; -export const GitHubServiceConnectionError = 'gitHubServiceConnectionError'; -export const PipelineFileCheckInFailed = 'PipelineFileCheckInFailed'; -export const PostDeploymentActionFailed = 'PostDeploymentActionFailed'; diff --git a/src/configure/templates/dotnetLinuxWebApp.yml b/src/configure/templates/dotnetLinuxWebApp.yml deleted file mode 100644 index 6bb64f9..0000000 --- a/src/configure/templates/dotnetLinuxWebApp.yml +++ /dev/null @@ -1,95 +0,0 @@ -# .NET Web App to Linux on Azure -# Build a .NET Web App and deploy it to Azure as a Linux Web App. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/dotnet-core - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection created during pipeline creation - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web App name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'ubuntu-latest' - - # Build Configuration - buildConfiguration: 'Release' - - # Build Projects - buildProjects: "**/*.csproj" - - # Test Projects - testProjects: "**/*[Tt]est*/*.csproj" - -stages: -- stage: Build - displayName: Build stage - - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - task: DotNetCoreCLI@2 - displayName: Restore - inputs: - command: 'restore' - publishWebProjects: true - projects: $(buildProjects) - - - task: DotNetCoreCLI@2 - displayName: Build - inputs: - command: 'build' - projects: $(buildProjects) - arguments: --configuration $(buildConfiguration) - - - task: DotNetCoreCLI@2 - displayName: Test - inputs: - command: 'test' - projects: $(testProjects) - publishWebProjects: true - arguments: --configuration $(buildConfiguration) - - - task: DotNetCoreCLI@2 - displayName: Publish - inputs: - command: 'publish' - publishWebProjects: true - arguments: --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory) - zipAfterPublish: true - - - publish: $(Build.ArtifactStagingDirectory) - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - - jobs: - - deployment: Deploy - displayName: Deploy - environment: $(webAppName) - pool: - vmImage: $(vmImageName) - strategy: - runOnce: - deploy: - steps: - - task: AzureRMWebAppDeployment@4 - displayName: "Deploy Azure Web App" - inputs: - ConnectionType: "AzureRM" - ConnectedServiceName: $(azureSubscription) - WebAppName: $(webAppName) - WebAppKind: webAppLinux - Package: $(Pipeline.Workspace)/**/*.zip - DeploymentType: "webDeploy" diff --git a/src/configure/templates/dotnetWindowsFunctionApp.yml b/src/configure/templates/dotnetWindowsFunctionApp.yml deleted file mode 100644 index 03ae9dd..0000000 --- a/src/configure/templates/dotnetWindowsFunctionApp.yml +++ /dev/null @@ -1,95 +0,0 @@ -# .NET Function App to Windows on Azure -# Build a .NET function app and deploy it to Azure as a Windows function App. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/dotnet-core - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection created during pipeline creation - azureSubscription: '{{{ azureServiceConnection }}}' - - # Function app name - functionAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - - # Build Configuration - buildConfiguration: 'Release' - - # Build Projects - buildProjects: "**/*.csproj" - - # Test Projects - testProjects: "**/*[Tt]est*/*.csproj" - -stages: -- stage: Build - displayName: Build stage - - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - task: DotNetCoreCLI@2 - displayName: Restore - inputs: - command: 'restore' - publishWebProjects: true - projects: $(buildProjects) - - - task: DotNetCoreCLI@2 - displayName: Build - inputs: - command: 'build' - projects: $(buildProjects) - arguments: --configuration $(buildConfiguration) - - - task: DotNetCoreCLI@2 - displayName: Test - inputs: - command: 'test' - projects: $(testProjects) - publishWebProjects: true - arguments: --configuration $(buildConfiguration) - - - task: DotNetCoreCLI@2 - displayName: Publish - inputs: - command: 'publish' - publishWebProjects: true - arguments: --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory) - zipAfterPublish: true - - - publish: $(Build.ArtifactStagingDirectory) - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - - jobs: - - deployment: Deploy - displayName: Deploy - environment: $(functionAppName) - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - - steps: - - task: AzureFunctionApp@1 - displayName: 'Azure functions app deploy' - inputs: - azureSubscription: '$(azureSubscription)' - appType: functionApp - appName: $(functionAppName) - package: '$(Pipeline.Workspace)/**/*.zip' diff --git a/src/configure/templates/dotnetWindowsWebApp.yml b/src/configure/templates/dotnetWindowsWebApp.yml deleted file mode 100644 index ae237f9..0000000 --- a/src/configure/templates/dotnetWindowsWebApp.yml +++ /dev/null @@ -1,95 +0,0 @@ -# .NET Web App to Windows on Azure -# Build a .NET Web App and deploy it to Azure as a Windows Web App. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/dotnet-core - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection created during pipeline creation - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web App name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - - # Build Configuration - buildConfiguration: 'Release' - - # Build Projects - buildProjects: "**/*.csproj" - - # Test Projects - testProjects: "**/*[Tt]est*/*.csproj" - -stages: -- stage: Build - displayName: Build stage - - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - task: DotNetCoreCLI@2 - displayName: Restore - inputs: - command: 'restore' - publishWebProjects: true - projects: $(buildProjects) - - - task: DotNetCoreCLI@2 - displayName: Build - inputs: - command: 'build' - projects: $(buildProjects) - arguments: --configuration $(buildConfiguration) - - - task: DotNetCoreCLI@2 - displayName: Test - inputs: - command: 'test' - projects: $(testProjects) - publishWebProjects: true - arguments: --configuration $(buildConfiguration) - - - task: DotNetCoreCLI@2 - displayName: Publish - inputs: - command: 'publish' - publishWebProjects: true - arguments: --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory) - zipAfterPublish: true - - - publish: $(Build.ArtifactStagingDirectory) - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - - jobs: - - deployment: Deploy - displayName: Deploy - environment: $(webAppName) - pool: - vmImage: $(vmImageName) - strategy: - runOnce: - deploy: - steps: - - task: AzureRMWebAppDeployment@4 - displayName: "Deploy Azure Web App" - inputs: - ConnectionType: "AzureRM" - ConnectedServiceName: $(azureSubscription) - WebAppName: $(webAppName) - WebAppKind: webApp - Package: $(Pipeline.Workspace)/**/*.zip - DeploymentType: "webDeploy" diff --git a/src/configure/templates/nodejsLinuxFunctionApp.yml b/src/configure/templates/nodejsLinuxFunctionApp.yml deleted file mode 100644 index c6e09f8..0000000 --- a/src/configure/templates/nodejsLinuxFunctionApp.yml +++ /dev/null @@ -1,78 +0,0 @@ -# Node.js Function App to Linux on Azure -# Build a Node.js function app and deploy it to Azure as a Windows function app. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - functionAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'ubuntu-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - task: NodeTool@0 - inputs: - versionSpec: '10.x' - displayName: 'Install Node.js' - - - script: | - if [ -f extensions.csproj ] - then - dotnet build extensions.csproj --runtime ubuntu.16.04-x64 --output ./bin - fi - displayName: 'Build extensions' - - script: | - npm install - npm run build --if-present - npm run test --if-present - displayName: 'Prepare binaries' - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - jobs: - - deployment: Deploy - displayName: Deploy - environment: $(functionAppName) - pool: - vmImage: $(vmImageName) - strategy: - runOnce: - deploy: - steps: - - task: AzureFunctionApp@1 - displayName: 'Azure Functions App Deploy: {{ functionAppName }}' - inputs: - azureSubscription: '$(azureSubscription)' - appType: functionAppLinux - appName: $(functionAppName) - package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip' diff --git a/src/configure/templates/nodejsWindowsWebApp.yml b/src/configure/templates/nodejsWindowsWebApp.yml deleted file mode 100644 index b85247b..0000000 --- a/src/configure/templates/nodejsWindowsWebApp.yml +++ /dev/null @@ -1,66 +0,0 @@ -# Node.js App on Windows Web App -# Build a Node.js app and deploy it to Azure as a Windows web app. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - script: | - npm install - npm build - displayName: 'npm install and build' - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - jobs: - - deployment: Deploy - environment: 'development' - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - steps: - - task: AzureWebApp@1 - displayName: 'Azure Web App Deploy' - inputs: - azureSubscription: $(azureSubscription) - appType: webApp - appName: $(webAppName) - package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip diff --git a/src/configure/templates/nodejsWindowsWebAppAngular.yml b/src/configure/templates/nodejsWindowsWebAppAngular.yml deleted file mode 100644 index 4cabaec..0000000 --- a/src/configure/templates/nodejsWindowsWebAppAngular.yml +++ /dev/null @@ -1,68 +0,0 @@ -# Node.js with Angular on Windows Web App -# Build a Node.js project that uses Angular and deploy it to Azure as a Windows web app. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - script: | - npm install -g @angular/cli - npm install - ng build --prod - displayName: 'npm install and build' - workingDirectory: $(workingDirectory) - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: $(workingDirectory) - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - jobs: - - deployment: Deploy - environment: 'development' - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - steps: - - task: AzureWebApp@1 - displayName: 'Azure Web App Deploy' - inputs: - azureSubscription: $(azureSubscription) - appType: webApp - appName: $(webAppName) - package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip diff --git a/src/configure/templates/nodejsWindowsWebAppGrunt.yml b/src/configure/templates/nodejsWindowsWebAppGrunt.yml deleted file mode 100644 index 171e5fd..0000000 --- a/src/configure/templates/nodejsWindowsWebAppGrunt.yml +++ /dev/null @@ -1,66 +0,0 @@ -# Node.js with Grunt on Windows Web App -# Build a Node.js project using the Grunt task runner and deploy it to Azure as a Windows web app. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - script: | - npm install - grunt --gruntfile Gruntfile.js - displayName: 'npm install and run grunt' - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - jobs: - - deployment: Deploy - environment: 'development' - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - steps: - - task: AzureWebApp@1 - displayName: 'Azure Web App Deploy' - inputs: - azureSubscription: $(azureSubscription) - appType: webApp - appName: $(webAppName) - package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip diff --git a/src/configure/templates/nodejsWindowsWebAppGulp.yml b/src/configure/templates/nodejsWindowsWebAppGulp.yml deleted file mode 100644 index 43d21ab..0000000 --- a/src/configure/templates/nodejsWindowsWebAppGulp.yml +++ /dev/null @@ -1,66 +0,0 @@ -# Node.js with gulp on Windows Web App -# Build a Node.js project using the gulp task runner and deploy it to Azure as a Windows web app. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - script: | - npm install - gulp default --gulpfile gulpfile.js - displayName: 'npm install and run gulp' - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - jobs: - - deployment: Deploy - environment: 'development' - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - steps: - - task: AzureWebApp@1 - displayName: 'Azure Web App Deploy' - inputs: - azureSubscription: $(azureSubscription) - appType: webApp - appName: $(webAppName) - package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip diff --git a/src/configure/templates/nodejsWindowsWebAppWebpack.yml b/src/configure/templates/nodejsWindowsWebAppWebpack.yml deleted file mode 100644 index 22c0914..0000000 --- a/src/configure/templates/nodejsWindowsWebAppWebpack.yml +++ /dev/null @@ -1,67 +0,0 @@ -# Node.js with webpack on Windows Web App -# Build a Node.js project using the webpack CLI and deploy it to Azure as a Windows web app. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - script: | - npm install -g webpack webpack-cli --save-dev - npm install - npx webpack --config webpack.config.js - displayName: 'npm install, run webpack' - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - jobs: - - deployment: Deploy - environment: 'development' - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - steps: - - task: AzureWebApp@1 - displayName: 'Azure Web App Deploy' - inputs: - azureSubscription: $(azureSubscription) - appType: webApp - appName: $(webAppName) - package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip diff --git a/src/configure/templates/pythonDjango.yml b/src/configure/templates/pythonDjango.yml deleted file mode 100644 index 9a533ed..0000000 --- a/src/configure/templates/pythonDjango.yml +++ /dev/null @@ -1,43 +0,0 @@ -# Python Django -# Test a Django project on multiple versions of Python. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/python - -trigger: -- {{{ branch }}} - -pool: - vmImage: 'ubuntu-latest' - -steps: -- task: PythonScript@0 - displayName: 'Export project path' - inputs: - scriptSource: 'inline' - script: | - """Search all subdirectories for `manage.py`.""" - from glob import iglob - from os import path - manage_py = next(iglob(path.join('**', 'manage.py'), recursive=True), None) - if not manage_py: - raise SystemExit('Could not find a Django project') - project_location = path.dirname(path.abspath(manage_py)) - print('Found Django project in', project_location) - print('##vso[task.setvariable variable=projectRoot]{}'.format(project_location)) - -- script: | - python -m pip install --upgrade pip setuptools wheel - pip install -r requirements.txt - pip install unittest-xml-reporting - displayName: 'Install prerequisites' - -- script: | - pushd '$(projectRoot)' - python manage.py test --testrunner xmlrunner.extra.djangotestrunner.XMLTestRunner --no-input - displayName: 'Run tests' - -- task: PublishTestResults@2 - inputs: - testResultsFiles: "**/TEST-*.xml" - testRunTitle: 'Python $(PYTHON_VERSION)' - condition: succeededOrFailed() diff --git a/src/configure/templates/pythonLinuxFunctionApp.yml b/src/configure/templates/pythonLinuxFunctionApp.yml deleted file mode 100644 index fc4b73e..0000000 --- a/src/configure/templates/pythonLinuxFunctionApp.yml +++ /dev/null @@ -1,76 +0,0 @@ -# Python Function App to Linux on Azure -# Build a Python function app and deploy it to Azure as a Linux function app. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/python - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - functionAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'ubuntu-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: Build - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - bash: | - if [ -f extensions.csproj ] - then - dotnet build extensions.csproj --output ./bin - fi - displayName: 'Build extensions' - - - bash: | - python -m venv worker_venv - source worker_venv/bin/activate - pip install -r requirements.txt - displayName: 'Install application dependencies' - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - - jobs: - - deployment: Deploy - displayName: Deploy - environment: $(functionAppName) - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - steps: - - task: AzureFunctionApp@1 - displayName: 'Azure functions app deploy' - inputs: - azureSubscription: '$(azureSubscription)' - appType: functionAppLinux - appName: $(functionAppName) - package: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip' diff --git a/src/configure/templates/pythonLinuxWebApp.yml b/src/configure/templates/pythonLinuxWebApp.yml deleted file mode 100644 index 2267bf8..0000000 --- a/src/configure/templates/pythonLinuxWebApp.yml +++ /dev/null @@ -1,70 +0,0 @@ -# Python to Linux Web App on Azure -# Build a Python project and deploy it to Azure as a Linux Web App. -# Add steps that analyze code, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/python - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection created during pipeline creation - azureServiceConnectionId: '{{{ azureServiceConnection }}}' - - # Web app name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'ubuntu-latest' - - # Environment name - environmentName: '{{{ resource }}}' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: BuildJob - pool: - vmImage: $(vmImageName) - - steps: - - script: | - python -m venv antenv - source antenv/bin/activate - python -m pip install --upgrade pip - pip install setup - pip install -r requirements.txt - displayName: "Install requirements" - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - displayName: 'Upload package' - artifact: drop - -- stage: Deploy - displayName: 'Deploy Web App' - dependsOn: Build - condition: succeeded() - jobs: - - deployment: DeploymentJob - pool: - vmImage: $(vmImageName) - environment: $(environmentName) - strategy: - runOnce: - deploy: - steps: - - task: AzureWebApp@1 - displayName: 'Deploy Azure Web App : {{ webAppName }}' - inputs: - azureSubscription: $(azureServiceConnectionId) - appName: $(webAppName) - package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip diff --git a/src/configure/templates/simpleWebApp.yml b/src/configure/templates/simpleWebApp.yml deleted file mode 100644 index 940a379..0000000 --- a/src/configure/templates/simpleWebApp.yml +++ /dev/null @@ -1,60 +0,0 @@ -# Simple App on Windows Web App -# Package and deploy a simple web application and deploy it to Azure as Windows web app. - -trigger: -- {{{ branch }}} - -variables: - # Azure Resource Manager connection - azureSubscription: '{{{ azureServiceConnection }}}' - - # Web app name - webAppName: '{{{ resource }}}' - - # Agent VM image name - vmImageName: 'windows-latest' - -stages: -- stage: Build - displayName: Build stage - jobs: - - job: BuildJob - displayName: Build - pool: - vmImage: $(vmImageName) - - steps: - - - task: ArchiveFiles@2 - displayName: 'Archive files' - inputs: - rootFolderOrFile: '.' - includeRootFolder: false - archiveType: zip - archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - replaceExistingArchive: true - - - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - artifact: drop - -- stage: Deploy - displayName: Deploy stage - dependsOn: Build - condition: succeeded() - jobs: - - deployment: Deploy - environment: 'development' - pool: - vmImage: $(vmImageName) - - strategy: - runOnce: - deploy: - steps: - - task: AzureWebApp@1 - displayName: 'Azure Web App Deploy' - inputs: - azureSubscription: $(azureSubscription) - appType: webApp - appName: $(webAppName) - package: $(Pipeline.Workspace)/drop/$(Build.BuildId).zip diff --git a/src/extension.ts b/src/extension.ts index 687473c..dbf663e 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -11,7 +11,6 @@ import * as logger from './logger'; import { getSchemaAssociation, locateSchemaFile, onDidSelectOrganization, resetDoNotAskState, SchemaAssociationNotification } from './schema-association-service'; import { schemaContributor, CUSTOM_SCHEMA_REQUEST, CUSTOM_CONTENT_REQUEST } from './schema-contributor'; import { telemetryHelper } from './helpers/telemetryHelper'; -import { getAzureAccountExtensionApi } from './extensionApis'; /** * The unique string that identifies the Azure Pipelines languge. @@ -27,15 +26,9 @@ const DOCUMENT_SELECTOR = [ ] export async function activate(context: vscode.ExtensionContext) { - const configurePipelineEnabled = vscode.workspace.getConfiguration(LANGUAGE_IDENTIFIER).get('configure', true); telemetryHelper.setTelemetry('isActivationEvent', 'true'); - telemetryHelper.setTelemetry('configurePipelineEnabled', `${configurePipelineEnabled}`); await telemetryHelper.callWithTelemetryAndErrorHandling('azurePipelines.activate', async () => { await activateYmlContributor(context); - if (configurePipelineEnabled) { - const { activateConfigurePipeline } = await import('./configure/activate'); - activateConfigurePipeline(); - } }); context.subscriptions.push(telemetryHelper); @@ -103,9 +96,8 @@ async function activateYmlContributor(context: vscode.ExtensionContext) { // Re-request the schema when sessions change since auto-detection is dependent on // being able to query ADO organizations, check if 1ESPT schema can be used using session credentials. - const azureAccountApi = await getAzureAccountExtensionApi(); - context.subscriptions.push(azureAccountApi.onSessionsChanged(async () => { - if (azureAccountApi.status === 'LoggedIn' || azureAccountApi.status === 'LoggedOut') { + context.subscriptions.push(vscode.authentication.onDidChangeSessions(async session => { + if (session.provider.id === 'microsoft') { await loadSchema(context, client); } })); diff --git a/src/extensionApis.ts b/src/extensionApis.ts index c4787f1..938379f 100644 --- a/src/extensionApis.ts +++ b/src/extensionApis.ts @@ -1,26 +1,7 @@ import * as vscode from 'vscode'; import * as Messages from './messages'; -import { AzureAccount } from './typings/azure-account.api'; import { API, GitExtension } from './typings/git'; -let azureAccountExtensionApi: AzureAccount | undefined; -export async function getAzureAccountExtensionApi(): Promise { - if (azureAccountExtensionApi === undefined) { - const azureAccountExtension = vscode.extensions.getExtension("ms-vscode.azure-account"); - if (!azureAccountExtension) { - throw new Error(Messages.azureAccountExtensionUnavailable); - } - - if (!azureAccountExtension.isActive) { - await azureAccountExtension.activate(); - } - - azureAccountExtensionApi = azureAccountExtension.exports; - } - - return azureAccountExtensionApi; -} - let gitExtensionApi: API | undefined; export async function getGitExtensionApi(): Promise { if (gitExtensionApi === undefined) { diff --git a/src/helpers/azureDevOpsHelper.ts b/src/helpers/azureDevOpsHelper.ts new file mode 100644 index 0000000..72400e6 --- /dev/null +++ b/src/helpers/azureDevOpsHelper.ts @@ -0,0 +1,70 @@ +import * as Messages from '../messages'; + +// https://dev.azure.com/ OR https://org@dev.azure.com/ +const AzureReposUrl = 'dev.azure.com/'; + +// git@ssh.dev.azure.com:v3/ +const SSHAzureReposUrl = 'ssh.dev.azure.com:v3/'; + +// https://org.visualstudio.com/ +const VSOUrl = '.visualstudio.com/'; + +// org@vs-ssh.visualstudio.com:v3/ +const SSHVsoReposUrl = 'vs-ssh.visualstudio.com:v3/'; + +export function isAzureReposUrl(remoteUrl: string): boolean { + return remoteUrl.includes(AzureReposUrl) || + remoteUrl.includes(VSOUrl) || + remoteUrl.includes(SSHAzureReposUrl) || + remoteUrl.includes(SSHVsoReposUrl); +} + +export function getRepositoryDetailsFromRemoteUrl(remoteUrl: string): { organizationName: string, projectName: string, repositoryName: string } { + if (remoteUrl.includes(AzureReposUrl)) { + const part = remoteUrl.substring(remoteUrl.indexOf(AzureReposUrl) + AzureReposUrl.length); + const parts = part.split('/'); + if (parts.length !== 4) { + throw new Error(Messages.failedToDetermineAzureRepoDetails); + } + + return { + organizationName: parts[0].trim(), + projectName: parts[1].trim(), + repositoryName: parts[3].trim() + }; + } else if (remoteUrl.includes(VSOUrl)) { + const part = remoteUrl.substring(remoteUrl.indexOf(VSOUrl) + VSOUrl.length); + const organizationName = remoteUrl.substring(remoteUrl.indexOf('https://') + 'https://'.length, remoteUrl.indexOf('.visualstudio.com')); + const parts = part.split('/'); + + if (parts.length === 4 && parts[0].toLowerCase() === 'defaultcollection') { + // Handle scenario where part is 'DefaultCollection//_git/' + parts.shift(); + } + + if (parts.length !== 3) { + throw new Error(Messages.failedToDetermineAzureRepoDetails); + } + + return { + organizationName: organizationName, + projectName: parts[0].trim(), + repositoryName: parts[2].trim() + }; + } else if (remoteUrl.includes(SSHAzureReposUrl) || remoteUrl.includes(SSHVsoReposUrl)) { + const urlFormat = remoteUrl.includes(SSHAzureReposUrl) ? SSHAzureReposUrl : SSHVsoReposUrl; + const part = remoteUrl.substring(remoteUrl.indexOf(urlFormat) + urlFormat.length); + const parts = part.split('/'); + if (parts.length !== 3) { + throw new Error(Messages.failedToDetermineAzureRepoDetails); + } + + return { + organizationName: parts[0].trim(), + projectName: parts[1].trim(), + repositoryName: parts[2].trim() + }; + } else { + throw new Error(Messages.notAzureRepoUrl); + } +} diff --git a/src/configure/helper/controlProvider.ts b/src/helpers/controlProvider.ts similarity index 88% rename from src/configure/helper/controlProvider.ts rename to src/helpers/controlProvider.ts index 9b13eb7..fa78bd7 100644 --- a/src/configure/helper/controlProvider.ts +++ b/src/helpers/controlProvider.ts @@ -1,6 +1,6 @@ import { InputBoxOptions, QuickPickItem, QuickPickOptions, window } from 'vscode'; -import { telemetryHelper } from '../../helpers/telemetryHelper'; -import * as TelemetryKeys from '../../helpers/telemetryKeys'; +import { telemetryHelper } from './telemetryHelper'; +import * as TelemetryKeys from './telemetryKeys'; export async function showQuickPick(listName: string, listItems: T[] | Thenable, options: QuickPickOptions, itemCountTelemetryKey?: string): Promise { try { diff --git a/src/helpers/parseError.ts b/src/helpers/parseError.ts deleted file mode 100644 index 4151715..0000000 --- a/src/helpers/parseError.ts +++ /dev/null @@ -1,247 +0,0 @@ -// Copied from https://github.com/microsoft/vscode-azuretools/blob/5999c2ad4423e86f22d2c648027242d8816a50e4/ui/src/parseError.ts -// with inline IParsedError interface and no localization - -// Disable linting precisely because this file is copied. -/* eslint-disable */ - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as htmlToText from 'html-to-text'; - -export interface IParsedError { - errorType: string; - message: string; - stack?: string; - isUserCancelledError: boolean; -} - -// tslint:disable:no-unsafe-any -// tslint:disable:no-any -export function parseError(error: any): IParsedError { - let errorType: string = ''; - let message: string = ''; - let stack: string | undefined; - - if (typeof (error) === 'object' && error !== null) { - if (error.constructor !== Object) { - errorType = error.constructor.name; - } - - stack = getCallstack(error); - errorType = getCode(error, errorType); - - // See https://github.com/Microsoft/vscode-azureappservice/issues/419 for an example error that requires these 'unpack's - error = unpackErrorFromField(error, 'value'); - error = unpackErrorFromField(error, '_value'); - error = unpackErrorFromField(error, 'error'); - error = unpackErrorFromField(error, 'error'); - if (Array.isArray(error.errors) && error.errors.length) { - error = error.errors[0]; - } - - errorType = getCode(error, errorType); - message = getMessage(error, message); - - if (!errorType || !message || /error.*deserializing.*response.*body/i.test(message)) { - error = unpackErrorFromField(error, 'response'); - error = unpackErrorFromField(error, 'body'); - - errorType = getCode(error, errorType); - message = getMessage(error, message); - } - - // Azure errors have a JSON object in the message - let parsedMessage: any = parseIfJson(error.message); - // For some reason, the message is sometimes serialized twice and we need to parse it again - parsedMessage = parseIfJson(parsedMessage); - // Extract out the "internal" error if it exists - if (parsedMessage && parsedMessage.error) { - parsedMessage = parsedMessage.error; - } - - errorType = getCode(parsedMessage, errorType); - message = getMessage(parsedMessage, message); - - message = message || convertCodeToError(errorType) || JSON.stringify(error); - } else if (error !== undefined && error !== null && error.toString && error.toString().trim() !== '') { - errorType = typeof (error); - message = error.toString(); - } - - message = unpackErrorsInMessage(message); - - [message, errorType] = parseIfFileSystemError(message, errorType); - - // tslint:disable-next-line:strict-boolean-expressions - errorType = errorType || typeof (error); - message = message || 'Unknown Error'; - - message = parseIfHtml(message); - - // Azure storage SDK errors are presented in XML - // https://github.com/Azure/azure-sdk-for-js/issues/6927 - message = parseIfXml(message); - - return { - errorType: errorType, - message: message, - stack: stack, - // NOTE: Intentionally not using 'error instanceof UserCancelledError' because that doesn't work if multiple versions of the UI package are used in one extension - // See https://github.com/Microsoft/vscode-azuretools/issues/51 for more info - isUserCancelledError: errorType === 'UserCancelledError' - }; -} - -function convertCodeToError(errorType: string | undefined): string | undefined { - if (errorType) { - const code: number = parseInt(errorType, 10); - if (!isNaN(code)) { - return `Failed with code "${code}".`; - } - } - - return undefined; -} - -function parseIfJson(o: any): any { - if (typeof o === 'string' && o.indexOf('{') >= 0) { - try { - return JSON.parse(o); - } catch (err) { - // ignore - } - } - - return o; -} - -function parseIfHtml(message: string): string { - if (/(.*)<\/Message>/si); - if (matches) { - return matches[1]; - } - - return message; -} - -function getMessage(o: any, defaultMessage: string): string { - return (o && (o.message || o.Message || o.detail || (typeof parseIfJson(o.body) === 'string' && o.body))) || defaultMessage; -} - -function getCode(o: any, defaultCode: string): string { - const code: any = o && (o.code || o.Code || o.errorCode || o.statusCode); - return code ? String(code) : defaultCode; -} - -function unpackErrorsInMessage(message: string): string { - // Handle messages like this from Azure (just handle first error for now) - // ["Errors":["The offer should have valid throughput]]", - if (message) { - const errorsInMessage: RegExpMatchArray | null = message.match(/"Errors":\[\s*"([^"]+)"/); - if (errorsInMessage !== null) { - const [, firstError] = errorsInMessage; - return firstError; - } - } - - return message; -} - -function unpackErrorFromField(error: any, prop: string): any { - // Handle objects from Azure SDK that contain the error information in a "body" field (serialized or not) - let field: any = error && error[prop]; - if (field) { - if (typeof field === 'string' && field.indexOf('{') >= 0) { - try { - field = JSON.parse(field); - } catch (err) { - // Ignore - } - } - - if (typeof field === 'object') { - return field; - } - } - - return error; -} - -/** - * Example line in the stack: - * at FileService.StorageServiceClient._processResponse (/path/ms-azuretools.vscode-azurestorage-0.6.0/node_modules/azure-storage/lib/common/services/storageserviceclient.js:751:50) - * - * Final minified line: - * FileService.StorageServiceClient._processResponse azure-storage/storageserviceclient.js:751:50 - */ -function getCallstack(error: { stack?: string }): string | undefined { - // tslint:disable-next-line: strict-boolean-expressions - const stack: string = error.stack || ''; - - const minifiedLines: (string | undefined)[] = stack - .split(/(\r\n|\n)/g) // split by line ending - .map(l => { - let result: string = ''; - // Get just the file name, line number and column number - // From above example: storageserviceclient.js:751:50 - const fileMatch: RegExpMatchArray | null = l.match(/[^\/\\\(\s]+\.(t|j)s:[0-9]+:[0-9]+/i); - - // Ignore any lines without a file match (e.g. "at Generator.next ()") - if (fileMatch) { - // Get the function name - // From above example: FileService.StorageServiceClient._processResponse - const functionMatch: RegExpMatchArray | null = l.match(/^[\s]*at ([^\(\\\/]+(?:\\|\/)?)+/i); - if (functionMatch) { - result += functionMatch[1]; - } - - const parts: string[] = []; - - // Get the name of the node module (and any sub modules) containing the file - // From above example: azure-storage - const moduleRegExp: RegExp = /node_modules(?:\\|\/)([^\\\/]+)/ig; - let moduleMatch: RegExpExecArray | null; - do { - moduleMatch = moduleRegExp.exec(l); - if (moduleMatch) { - parts.push(moduleMatch[1]); - } - } while (moduleMatch); - - parts.push(fileMatch[0]); - result += parts.join('/'); - } - - return result; - }) - .filter(l => !!l); - - return minifiedLines.length > 0 ? minifiedLines.join('\n') : undefined; -} - -/** - * See https://github.com/microsoft/vscode-cosmosdb/issues/1580 for an example error - */ -function parseIfFileSystemError(message: string, errorType: string): [string, string] { - const match: RegExpMatchArray | null = message.match(/\((([a-z]*) \(FileSystemError\).*)\)$/i); - if (match) { - message = match[1]; - errorType = match[2]; - } - return [message, errorType]; -} diff --git a/src/helpers/telemetryHelper.ts b/src/helpers/telemetryHelper.ts index ad29e41..86edf0f 100644 --- a/src/helpers/telemetryHelper.ts +++ b/src/helpers/telemetryHelper.ts @@ -1,16 +1,16 @@ import * as vscode from 'vscode'; +import * as crypto from 'crypto'; + import TelemetryReporter from '@vscode/extension-telemetry'; import * as TelemetryKeys from './telemetryKeys'; import * as logger from '../logger'; -import { parseError } from './parseError'; -import { v4 as uuid } from 'uuid'; const extensionName = 'ms-azure-devops.azure-pipelines'; /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ const packageJSON = vscode.extensions.getExtension(extensionName)?.packageJSON; // Guaranteed to exist -const extensionVersion: string = packageJSON.version; +export const extensionVersion: string = packageJSON.version; const aiKey: string = packageJSON.aiKey; /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ @@ -18,19 +18,11 @@ interface TelemetryProperties { [key: string]: string; } -enum Result { - Succeeded = 'Succeeded', - Failed = 'Failed', - Canceled = 'Canceled' -} - - class TelemetryHelper { - private journeyId: string = uuid(); + private journeyId: string = crypto.randomUUID(); private properties: TelemetryProperties = { [TelemetryKeys.JourneyId]: this.journeyId, - [TelemetryKeys.Result]: Result.Succeeded, }; private static reporter = new TelemetryReporter(extensionName, extensionVersion, aiKey); @@ -47,10 +39,6 @@ class TelemetryHelper { this.properties[key] = value; } - public setCurrentStep(stepName: string): void { - this.properties.cancelStep = stepName; - } - // Log an error. // No custom properties are logged alongside the error. // FIXME: This should really be sendTelemetryException but I'm maintaining @@ -74,7 +62,7 @@ class TelemetryHelper { public async executeFunctionWithTimeTelemetry(callback: () => Promise, telemetryKey: string): Promise { const startTime = Date.now(); try { - return await callback(); + return callback(); } finally { this.setTelemetry(telemetryKey, ((Date.now() - startTime) / 1000).toString()); @@ -84,41 +72,24 @@ class TelemetryHelper { // Wraps the given function in a telemetry event. // The telemetry event sent ater function execution will contain how long the function took as well as any custom properties // supplied through initialize() or setTelemetry(). - // If the function errors, the telemetry event will additionally contain metadata about the error that occurred. - // https://github.com/microsoft/vscode-azuretools/blob/5999c2ad4423e86f22d2c648027242d8816a50e4/ui/src/callWithTelemetryAndErrorHandling.ts public async callWithTelemetryAndErrorHandling(command: string, callback: () => Promise): Promise { try { - return await this.executeFunctionWithTimeTelemetry(callback, 'duration'); + return this.executeFunctionWithTimeTelemetry(callback, 'duration'); } catch (error) { - const parsedError = parseError(error); - if (parsedError.isUserCancelledError) { - this.setTelemetry(TelemetryKeys.Result, Result.Canceled); - } else { - this.setTelemetry(TelemetryKeys.Result, Result.Failed); - this.setTelemetry('error', parsedError.errorType); - this.setTelemetry('errorMessage', parsedError.message); - this.setTelemetry('stack', parsedError.stack ?? ''); + TelemetryHelper.reporter.sendTelemetryErrorEvent( + command, { + ...this.properties, + [TelemetryKeys.JourneyId]: this.journeyId, + }); - logger.log(parsedError.message); - if (parsedError.message.includes('\n')) { - void vscode.window.showErrorMessage('An error has occurred. Check the output window for more details.'); - } else { - void vscode.window.showErrorMessage(parsedError.message); - } - } - } finally { - if (this.properties.result === Result.Failed.toString()) { - TelemetryHelper.reporter.sendTelemetryErrorEvent( - command, { - ...this.properties, - [TelemetryKeys.JourneyId]: this.journeyId, - }, undefined, ['error', 'errorMesage', 'stack']); + const message = error instanceof Error ? error.message : String(error); + + logger.log(message, command); + + if (message.includes('\n')) { + void vscode.window.showErrorMessage('An error has occurred. Check the output window for more details.'); } else { - TelemetryHelper.reporter.sendTelemetryEvent( - command, { - ...this.properties, - [TelemetryKeys.JourneyId]: this.journeyId, - }); + void vscode.window.showErrorMessage(message); } } diff --git a/src/helpers/telemetryKeys.ts b/src/helpers/telemetryKeys.ts index b59ecfe..9349a61 100644 --- a/src/helpers/telemetryKeys.ts +++ b/src/helpers/telemetryKeys.ts @@ -1,17 +1,2 @@ export const CurrentUserInput = 'currentUserInput'; -export const RepoProvider = 'repoProvider'; -export const AzureLoginRequired = 'azureLoginRequired'; export const JourneyId = 'journeyId'; -export const Result = 'result'; -export const SourceRepoLocation = 'sourceRepoLocation'; -export const ChosenTemplate = 'chosenTemplate'; -export const PipelineDiscarded = 'pipelineDiscarded'; -export const BrowsePipelineClicked = 'browsePipelineClicked'; -export const MultipleWorkspaceFolders = 'multipleWorkspaceFolders'; -export const GitHubPatDuration = 'gitHubPatDuration'; - -// Count of drop down items -export const OrganizationListCount = 'OrganizationListCount'; -export const ProjectListCount = 'ProjectListCount'; -export const WebAppListCount = 'WebAppListCount'; -export const PipelineTempateListCount = 'pipelineTempateListCount'; diff --git a/src/messages.ts b/src/messages.ts index f0cfefd..6fbdb88 100644 --- a/src/messages.ts +++ b/src/messages.ts @@ -1,53 +1,14 @@ -export const acquireAccessTokenFailed: string = 'Acquiring access token failed. Error: %s.'; -export const addYmlFile: string = 'Add Azure Pipelines YAML definition.'; -export const analyzingRepo: string = 'Analyzing your repo'; -export const azureAccountExtensionUnavailable: string = 'Azure Account extension could not be fetched. Please ensure it\'s installed and activated.'; export const gitExtensionUnavailable: string = 'Git extension could not be fetched. Please ensure it\'s installed and activated.'; export const gitExtensionNotEnabled: string = 'Git extension is not enabled. Please change the `git.enabled` setting to true.'; -export const azureLoginRequired: string = 'Please sign in to your Azure account first.'; -export const branchHeadMissing: string = `The current repository doesn't have any commits. Please [create a commit](https://git-scm.com/docs/git-commit) first, and then try this again.`; -export const branchNameMissing: string = `The current repository isn't on a branch. Please [checkout a branch](https://git-scm.com/docs/git-checkout) first, and then try this again.`; -export const branchRemoteMissing: string = `The current branch doesn't have a tracking branch, and the selected repository has no remotes. We're unable to create a remote tracking branch. Please [set a remote tracking branch](https://git-scm.com/docs/git-branch#Documentation/git-branch.txt---track) first, and then try this again.`; -export const browsePipeline: string = 'Browse Pipeline'; -export const cannotIdentifyRepositoryDetails: string = 'Couldn\'t get repository details. Ensure your repo is hosted on [Azure Repos](https://docs.microsoft.com/azure/devops/repos/get-started) or [GitHub](https://guides.github.com/activities/hello-world/).'; -export const commitAndPush: string = 'Commit & push'; -export const commitFailedErrorMessage: string =`Commit failed due to error: %s`; -export const pushingPipelineFile: string = 'Pushing pipeline file...'; -export const configuringPipelineAndDeployment: string = 'Configuring pipeline and proceeding to deployment...'; -export const runningPostDeploymentActions: string = 'Running post-deployment actions...'; -export const couldNotAuthorizeEndpoint: string = 'Couldn\'t authorize endpoint for use in Azure Pipelines.'; -export const creatingAzureServiceConnection: string = 'Connecting Azure Pipelines with your subscription: %s'; -export const creatingGitHubServiceConnection: string = 'Creating GitHub service connection'; -export const discardPipeline: string = 'Discard pipeline'; -export const enterGitHubPat: string = 'Enter GitHub personal access token (PAT)'; export const failedToDetermineAzureRepoDetails: string = 'Failed to determine Azure Repo details from remote url. Please ensure that the remote points to a valid Azure Repos url.'; -export const gitHubPatErrorMessage: string = 'GitHub PAT cannot be empty.'; -export const githubPatHelpMessage: string = 'GitHub personal access token (PAT) with following permissions: full access to repository webhooks and services, read and write access to all repository data.'; -export const modifyAndCommitFile: string = 'Modify and save your YAML file. %s will commit this file, push the branch \'%s\' to remote \'%s\' and proceed with deployment.'; -export const noAgentQueueFound: string = 'No agent pool found named "%s".'; -export const noAvailableFileNames: string = 'No available filenames found.'; -export const notAGitRepository: string = 'Selected workspace is not a [Git](https://git-scm.com/docs/git) repository. Please select a Git repository.'; export const notAzureRepoUrl: string = 'The repo isn\'t hosted with Azure Repos.'; -export const pipelineSetupSuccessfully: string = 'Pipeline set up successfully!'; -export const remoteRepositoryNotConfigured: string = 'Remote repository is not configured. This extension is compatible with [Azure Repos](https://docs.microsoft.com/en-us/azure/devops/repos/get-started) or [GitHub](https://guides.github.com/activities/hello-world/).'; -export const selectFolderLabel: string = 'Select source folder for configuring pipeline'; export const selectOrganizationForEnhancedIntelliSense: string = 'Select Azure DevOps organization associated with the %s repository for enhanced Azure Pipelines IntelliSense.'; export const selectOrganizationLabel: string = 'Select organization'; export const selectOrganizationPlaceholder: string = 'Select Azure DevOps organization associated with the %s repository'; -export const selectPipelineTemplate: string = 'Select an Azure Pipelines template...'; -export const selectProject: string = 'Select an Azure DevOps project'; -export const selectRemoteForBranch: string = 'Select the remote repository where you want to track your current branch'; -export const selectSubscription: string = 'Select an Azure subscription'; -export const selectWorkspaceFolder: string = 'Select a folder from your workspace to deploy'; export const signInLabel: string = 'Sign In'; -export const unableToAccessOrganization: string = 'Unable to access the "%s" organization. Make sure you\'re signed into the right Azure account.'; -export const unableToCreateServiceConnection: string = `Unable to create %s service connection.\nOperation Status: %s\nMessage: %s\nService connection is not in ready state.`; -export const timedOutCreatingServiceConnection: string =`Timed out creating %s service connection.\nService connection is not in ready state.`; -export const retryFailedMessage: string =`Failed after retrying: %s times. Internal Error: %s`; -export const azureServicePrincipalFailedMessage: string =`Failed while creating Azure service principal.`; -export const roleAssignmentFailedMessage: string =`Failed while role assignement.`; -export const waitForAzureSignIn: string = `Waiting for Azure sign-in...`; -export const signInForEnhancedIntelliSense = 'Sign in to Azure for enhanced Azure Pipelines IntelliSense'; +export const signInWithADifferentAccountLabel: string = 'Sign in with a different account'; +export const unableToAccessOrganization: string = 'Unable to access the "%s" organization. Make sure you\'re signed into the right Microsoft account.'; +export const signInForEnhancedIntelliSense = 'Sign in to Microsoft for enhanced Azure Pipelines IntelliSense'; export const userEligibleForEnahanced1ESPTIntellisense = 'Enable 1ESPT Schema in Azure Pipelines Extension settings for enhanced Intellisense'; export const notUsing1ESPTSchemaAsUserNotSignedInMessage = '1ESPT Schema is not used for Intellisense as you are not signed in with a `@microsoft.com` account'; export const enable1ESPTSchema = 'Enable'; diff --git a/src/schema-association-service-1espt.ts b/src/schema-association-service-1espt.ts index 3e2ece0..c0a8028 100644 --- a/src/schema-association-service-1espt.ts +++ b/src/schema-association-service-1espt.ts @@ -7,14 +7,14 @@ import * as vscode from 'vscode'; import { URI, Utils } from 'vscode-uri'; import * as azdev from 'azure-devops-node-api'; import * as logger from './logger'; -import { AzureSession } from './typings/azure-account.api'; import * as Messages from './messages'; +import { getAzureDevOpsSessions } from './schema-association-service'; const milliseconds24hours = 86400000; -export async function get1ESPTSchemaUri(azureDevOpsClient: azdev.WebApi, organizationName: string, session: AzureSession, context: vscode.ExtensionContext, repoId1espt: string): Promise { +export async function get1ESPTSchemaUri(azureDevOpsClient: azdev.WebApi, organizationName: string, session: vscode.AuthenticationSession, context: vscode.ExtensionContext, repoId1espt: string): Promise { try { - if (session.userId.endsWith("@microsoft.com")) { + if (session.account.label.endsWith("@microsoft.com")) { const gitApi = await azureDevOpsClient.getGitApi(); // Using getItem from GitApi: getItem(repositoryId: string, path: string, project?: string, scopePath?: string, recursionLevel?: GitInterfaces.VersionControlRecursionType, includeContentMetadata?: boolean, latestProcessedChange?: boolean, download?: boolean, versionDescriptor?: GitInterfaces.GitVersionDescriptor, includeContent?: boolean, resolveLfs?: boolean, sanitize?: boolean): Promise; const schemaFile = await gitApi.getItem(repoId1espt, "schema/1espt-base-schema.json", "1ESPipelineTemplates", undefined, undefined, true, true, true, undefined, true, true); @@ -35,7 +35,7 @@ export async function get1ESPTSchemaUri(azureDevOpsClient: azdev.WebApi, organiz } } catch (error) { - logger.log(`Error : ${String(error)} while fetching 1ESPT schema for org: ${organizationName} : `, 'SchemaDetection'); + logger.log(`Error: ${error instanceof Error ? error.message : String(error)} while fetching 1ESPT schema for org: ${organizationName} : `, 'SchemaDetection'); } return undefined; } @@ -52,7 +52,7 @@ export async function get1ESPTSchemaUri(azureDevOpsClient: azdev.WebApi, organiz * @param lastUpdated1ESPTSchema * @returns */ -export async function getCached1ESPTSchema(context: vscode.ExtensionContext, organizationName: string, session: AzureSession, lastUpdated1ESPTSchema: Map): Promise { +export async function getCached1ESPTSchema(context: vscode.ExtensionContext, organizationName: string, session: vscode.AuthenticationSession, lastUpdated1ESPTSchema: Map): Promise { const lastUpdatedDate = lastUpdated1ESPTSchema.get(organizationName); if (!lastUpdatedDate) { return undefined; @@ -61,7 +61,7 @@ export async function getCached1ESPTSchema(context: vscode.ExtensionContext, org const schemaUri1ESPT = Utils.joinPath(context.globalStorageUri, '1ESPTSchema', `${organizationName}-1espt-schema.json`); try { - if (session.userId.endsWith("@microsoft.com")) { + if (session.account.label.endsWith("@microsoft.com")) { if ((new Date().getTime() - lastUpdatedDate.getTime()) < milliseconds24hours) { try { await vscode.workspace.fs.stat(schemaUri1ESPT); @@ -77,20 +77,20 @@ export async function getCached1ESPTSchema(context: vscode.ExtensionContext, org } } else { - const signInAction = await vscode.window.showInformationMessage(Messages.notUsing1ESPTSchemaAsUserNotSignedInMessage, Messages.signInLabel); - if (signInAction == Messages.signInLabel) { - await vscode.window.withProgress({ - location: vscode.ProgressLocation.Notification, - title: Messages.waitForAzureSignIn, - }, async () => { - await vscode.commands.executeCommand("azure-account.login"); + void vscode.window.showInformationMessage(Messages.notUsing1ESPTSchemaAsUserNotSignedInMessage, Messages.signInWithADifferentAccountLabel) + .then(async action => { + if (action === Messages.signInWithADifferentAccountLabel) { + await getAzureDevOpsSessions(context, { + clearSessionPreference: true, + createIfNone: true, + }); + } }); - } logger.log(`Skipping cached 1ESPT schema for ${organizationName} as user is not signed in with Microsoft account`, `SchemaDetection`); } } catch (error) { - logger.log(`Error : ${String(error)} while fetching cached 1ESPT schema for org: ${organizationName}. It's possible that the schema does not exist.`, 'SchemaDetection'); + logger.log(`Error: ${error instanceof Error ? error.message : String(error)} while fetching cached 1ESPT schema for org: ${organizationName}. It's possible that the schema does not exist.`, 'SchemaDetection'); } return undefined; @@ -105,13 +105,9 @@ export async function getCached1ESPTSchema(context: vscode.ExtensionContext, org export async function get1ESPTRepoIdIfAvailable(azureDevOpsClient: azdev.WebApi, organizationName: string): Promise { try { const gitApi = await azureDevOpsClient.getGitApi(); - const repositories = await gitApi.getRepositories('1ESPipelineTemplates'); - if (repositories.length === 0) { - logger.log(`1ESPipelineTemplates ADO project not found for org ${organizationName}`, `SchemaDetection`); - return ""; // 1ESPT ADO project not found - } - - const repository = repositories.find(repo => repo.name === "1ESPipelineTemplates"); + const repository = await gitApi.getRepository('1ESPipelineTemplates', '1ESPipelineTemplates'); + // Types are wrong and getRepository cah return null. + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (repository?.id === undefined) { logger.log(`1ESPipelineTemplates repo not found for org ${organizationName}`, `SchemaDetection`); return ""; // 1ESPT repo not found @@ -120,7 +116,7 @@ export async function get1ESPTRepoIdIfAvailable(azureDevOpsClient: azdev.WebApi, return repository.id; } catch (error) { - logger.log(`Error : ${String(error)} while checking eligibility for enhanced Intellisense for 1ESPT schema for org: ${organizationName}.`, 'SchemaDetection'); + logger.log(`Error: ${error instanceof Error ? error.message : String(error)} while checking eligibility for enhanced Intellisense for 1ESPT schema for org: ${organizationName}.`, 'SchemaDetection'); return ""; } } @@ -130,6 +126,6 @@ export async function delete1ESPTSchemaFileIfPresent(context: vscode.ExtensionCo await vscode.workspace.fs.delete(Utils.joinPath(context.globalStorageUri, '1ESPTSchema'), { recursive: true }); } catch (error) { - logger.log(`Error: ${String(error)} while deleting 1ESPT schema. It's possible that the schema file does not exist`, 'SchemaDetection'); + logger.log(`Error: ${error instanceof Error ? error.message : String(error)} while deleting 1ESPT schema. It's possible that the schema file does not exist`, 'SchemaDetection'); } } diff --git a/src/schema-association-service.ts b/src/schema-association-service.ts index 67c5c56..ee1015f 100644 --- a/src/schema-association-service.ts +++ b/src/schema-association-service.ts @@ -9,14 +9,13 @@ import { Utils } from 'vscode-uri'; import * as languageclient from 'vscode-languageclient/node'; import * as azdev from 'azure-devops-node-api'; import { format } from 'util'; -import { getAzureAccountExtensionApi, getGitExtensionApi } from './extensionApis'; -import { OrganizationsClient } from './configure/clients/devOps/organizationsClient'; -import { getRepositoryDetailsFromRemoteUrl, isAzureReposUrl } from './configure/helper/devOps/azureDevOpsHelper'; -import { showQuickPick } from './configure/helper/controlProvider'; -import { QuickPickItemWithData } from './configure/model/models'; +import { getGitExtensionApi } from './extensionApis'; +import { OrganizationsClient } from './clients/devOps/organizationsClient'; +import { getRepositoryDetailsFromRemoteUrl, isAzureReposUrl } from './helpers/azureDevOpsHelper'; +import { showQuickPick } from './helpers/controlProvider'; +import { extensionVersion } from './helpers/telemetryHelper'; import * as logger from './logger'; import * as Messages from './messages'; -import { AzureSession } from './typings/azure-account.api'; import { get1ESPTSchemaUri, getCached1ESPTSchema, get1ESPTRepoIdIfAvailable, delete1ESPTSchemaFileIfPresent } from './schema-association-service-1espt'; const selectOrganizationEvent = new vscode.EventEmitter(); @@ -28,8 +27,24 @@ export const onDidSelectOrganization = selectOrganizationEvent.event; const seenOrganizations = new Set(); const lastUpdated1ESPTSchema = new Map(); -export const DO_NOT_ASK_SIGN_IN_KEY = "DO_NOT_ASK_SIGN_IN_KEY"; -export const DO_NOT_ASK_SELECT_ORG_KEY = "DO_NOT_ASK_SELECT_ORG_KEY"; +const DO_NOT_ASK_SIGN_IN_KEY = "DO_NOT_ASK_SIGN_IN_KEY"; +const DO_NOT_ASK_SELECT_ORG_KEY = "DO_NOT_ASK_SELECT_ORG_KEY"; + +const AZURE_MANAGEMENT_SCOPES = [ + // Get tenants + 'https://management.core.windows.net/.default', +]; + +const AZURE_DEVOPS_SCOPES = [ + // It would be better to use the fine-grained scopes, + // but we need to wait for VS Code to support them. + // https://github.com/microsoft/vscode/issues/201679 + '499b84ac-1321-427f-aa17-267ca6975798/.default', + // // Get YAML schema + // '499b84ac-1321-427f-aa17-267ca6975798/vso.agentpools', + // // Get ADO orgs + // '499b84ac-1321-427f-aa17-267ca6975798/vso.profile', +]; let repoId1espt: string | undefined = undefined; @@ -105,47 +120,9 @@ export function getSchemaAssociation(schemaFilePath: string): ISchemaAssociation async function autoDetectSchema( context: vscode.ExtensionContext, workspaceFolder: vscode.WorkspaceFolder): Promise { - const azureAccountApi = await getAzureAccountExtensionApi(); - - // We could care less about the subscriptions; all we need are the sessions. - // However, there's no waitForSessions API, and waitForLogin returns before - // the underlying account information is guaranteed to finish loading. - // The next-best option is then waitForSubscriptions which, by definition, - // can't return until the sessions are also available. - // This only returns false if there is no login. - if (!(await azureAccountApi.waitForSubscriptions())) { - const doNotAskAgainSignIn = context.globalState.get(DO_NOT_ASK_SIGN_IN_KEY); - if (doNotAskAgainSignIn) { - logger.log(`Not prompting for login - do not ask again was set`, 'SchemaDetection'); - return undefined; - } - - logger.log(`Waiting for login`, 'SchemaDetection'); - - try { - await delete1ESPTSchemaFileIfPresent(context); - logger.log("1ESPTSchema folder deleted as user is not signed in", 'SchemaDetection') - } - catch (error) { - logger.log(`Error ${String(error)} while trying to delete 1ESPTSchema folder. Either the folder does not exist or there is an actual error.`, 'SchemaDetection') - } - - // Don't await this message so that we can return the fallback schema instead of blocking. - // We'll detect the login in extension.ts and then re-request the schema. - void vscode.window.showInformationMessage(Messages.signInForEnhancedIntelliSense, Messages.signInLabel, Messages.doNotAskAgain) - .then(async action => { - if (action === Messages.signInLabel) { - await vscode.window.withProgress({ - location: vscode.ProgressLocation.Notification, - title: Messages.waitForAzureSignIn, - }, async () => { - await vscode.commands.executeCommand("azure-account.login"); - }); - } else if (action === Messages.doNotAskAgain) { - await context.globalState.update(DO_NOT_ASK_SIGN_IN_KEY, true); - } - }); - + const azureDevOpsSessions = await getAzureDevOpsSessions(context); + if (azureDevOpsSessions === undefined) { + logger.log(`Not logged in`, 'SchemaDetection'); return undefined; } @@ -177,20 +154,11 @@ async function autoDetectSchema( } let organizationName: string; - let session: AzureSession | undefined; if (remoteUrl !== undefined && isAzureReposUrl(remoteUrl)) { logger.log(`${workspaceFolder.name} is an Azure repo`, 'SchemaDetection'); - // If we're in an Azure repo, we can silently determine the organization name and session. + // If we're in an Azure repo, we can silently determine the organization name. organizationName = getRepositoryDetailsFromRemoteUrl(remoteUrl).organizationName; - for (const azureSession of azureAccountApi.sessions) { - const organizationsClient = new OrganizationsClient(azureSession.credentials2); - const organizations = await organizationsClient.listOrganizations(); - if (organizations.find(org => org.accountName.toLowerCase() === organizationName.toLowerCase())) { - session = azureSession; - break; - } - } } else { logger.log(`${workspaceFolder.name} has no remote URL or is not an Azure repo`, 'SchemaDetection'); @@ -201,77 +169,94 @@ async function autoDetectSchema( // If we already have cached information for this workspace folder, use it. const details = azurePipelinesDetails[workspaceFolder.name]; organizationName = details.organization; - session = azureAccountApi.sessions.find(session => session.tenantId === details.tenant); logger.log( - `Using cached information for ${workspaceFolder.name}: ${organizationName}, ${session?.tenantId}`, + `Using cached organization for ${workspaceFolder.name}: ${organizationName}`, 'SchemaDetection'); } else { - const doNotAskAgainSelectOrg = context.globalState.get(DO_NOT_ASK_SELECT_ORG_KEY); - if (doNotAskAgainSelectOrg) { - logger.log(`Not prompting for organization - do not ask again was set`, 'SchemaDetection'); - return; - } + logger.log(`Retrieving organizations for ${workspaceFolder.name}`, 'SchemaDetection'); - logger.log(`Prompting for organization for ${workspaceFolder.name}`, 'SchemaDetection'); + const organizations = (await Promise.all(azureDevOpsSessions.map(async session => { + const organizationsClient = new OrganizationsClient(session.accessToken); + const organizations = await organizationsClient.listOrganizations(); + return organizations.map(({ accountName }) => accountName); + }))).flat(); - // Otherwise, we need to manually prompt. - // We do this by asking them to select an organization via an information message, - // then displaying the quick pick of all the organizations they have access to. - // We *do not* await this message so that we can use the fallback schema while waiting. - // We'll detect when they choose the organization in extension.ts and then re-request the schema. - void vscode.window.showInformationMessage( - format(Messages.selectOrganizationForEnhancedIntelliSense, workspaceFolder.name), - Messages.selectOrganizationLabel, Messages.doNotAskAgain) - .then(async action => { - if (action === Messages.selectOrganizationLabel) { - // Lazily construct list of organizations so that we can immediately show the quick pick, - // then fill in the choices as they come in. - const getOrganizationsAndSessions = async (): Promise[]> => { - return (await Promise.all(azureAccountApi.sessions.map(async session => { - const organizationsClient = new OrganizationsClient(session.credentials2); - const organizations = await organizationsClient.listOrganizations(); - return organizations.map(organization => ({ - label: organization.accountName, - data: session, - })); - }))).flat(); - }; + // If there's only one organization, we can just use that. + if (organizations.length === 1) { + organizationName = organizations[0]; + logger.log(`Using only available organization ${organizationName} for ${workspaceFolder.name}`, 'SchemaDetection'); + } else { + const doNotAskAgainSelectOrg = context.globalState.get(DO_NOT_ASK_SELECT_ORG_KEY); + if (doNotAskAgainSelectOrg) { + logger.log(`Not prompting for organization - do not ask again was set`, 'SchemaDetection'); + return undefined; + } - const selectedOrganizationAndSession = await showQuickPick( - 'organization', - getOrganizationsAndSessions(), { - placeHolder: format(Messages.selectOrganizationPlaceholder, workspaceFolder.name), - }); + logger.log(`${organizations.length} organizations found - prompting for ${workspaceFolder.name}`, 'SchemaDetection'); - if (selectedOrganizationAndSession === undefined) { - return; - } + // Otherwise, we need to manually prompt. + // We do this by asking them to select an organization via an information message, + // then displaying the quick pick of all the organizations they have access to. + // We *do not* await this message so that we can use the fallback schema while waiting. + // We'll detect when they choose the organization in extension.ts and then re-request the schema. + void vscode.window.showInformationMessage( + format(Messages.selectOrganizationForEnhancedIntelliSense, workspaceFolder.name), + Messages.selectOrganizationLabel, Messages.doNotAskAgain) + .then(async action => { + if (action === Messages.selectOrganizationLabel) { + const selectedOrganization = await showQuickPick( + 'organization', + organizations.map(organization => ({ label: organization })), { + placeHolder: format(Messages.selectOrganizationPlaceholder, workspaceFolder.name), + }); - organizationName = selectedOrganizationAndSession.label; - session = selectedOrganizationAndSession.data; - - await context.workspaceState.update('azurePipelinesDetails', { - ...azurePipelinesDetails, - [workspaceFolder.name]: { - organization: organizationName, - tenant: session.tenantId, + if (selectedOrganization === undefined) { + logger.log(`No organization picked for ${workspaceFolder.name}`, 'SchemaDetection'); + return; } - }); - selectOrganizationEvent.fire(workspaceFolder); - } else if (action === Messages.doNotAskAgain) { - await context.globalState.update(DO_NOT_ASK_SELECT_ORG_KEY, true); - } - }); - return undefined; + organizationName = selectedOrganization.label; + + await context.workspaceState.update('azurePipelinesDetails', { + ...azurePipelinesDetails, + [workspaceFolder.name]: { + organization: organizationName, + } + }); + + selectOrganizationEvent.fire(workspaceFolder); + } else if (action === Messages.doNotAskAgain) { + await context.globalState.update(DO_NOT_ASK_SELECT_ORG_KEY, true); + } + }); + return undefined; + } + } + } + + let azureDevOpsSession: vscode.AuthenticationSession | undefined; + for (const session of azureDevOpsSessions) { + const organizationsClient = new OrganizationsClient(session.accessToken); + const organizations = await organizationsClient.listOrganizations(); + if (organizations.map(({ accountName }) => accountName).includes(organizationName)) { + azureDevOpsSession = session; + break; } } // Not logged into an account that has access. - if (session === undefined) { - logger.log(`No organization found for ${workspaceFolder.name}`, 'SchemaDetection'); - void vscode.window.showErrorMessage(format(Messages.unableToAccessOrganization, organizationName)); + if (azureDevOpsSession === undefined) { + logger.log(`No account found for ${organizationName}`, 'SchemaDetection'); + void vscode.window.showErrorMessage(format(Messages.unableToAccessOrganization, organizationName), Messages.signInWithADifferentAccountLabel) + .then(async action => { + if (action === Messages.signInWithADifferentAccountLabel) { + await getAzureDevOpsSessions(context, { + clearSessionPreference: true, + createIfNone: true, + }); + } + }); await delete1ESPTSchemaFileIfPresent(context); return undefined; } @@ -279,15 +264,14 @@ async function autoDetectSchema( // Create the global storage folder to guarantee that it exists. await vscode.workspace.fs.createDirectory(context.globalStorageUri); - logger.log(`Retrieving schema for ${workspaceFolder.name}`, 'SchemaDetection'); + logger.log(`Retrieving ${organizationName} schema for ${workspaceFolder.name}`, 'SchemaDetection'); // Try to fetch schema in the following order: // 1. Cached 1ESPT schema // 2. 1ESPT schema if user is signed in with microsoft account and has enabled 1ESPT schema // 3. Cached Organization specific schema // 4. Organization specific schema - const token = await session.credentials2.getToken(); - const authHandler = azdev.getBearerHandler(token.accessToken); + const authHandler = azdev.getBearerHandler(azureDevOpsSession.accessToken); const azureDevOpsClient = new azdev.WebApi(`https://dev.azure.com/${organizationName}`, authHandler); // Cache the response - this is why this method returns empty strings instead of undefined. @@ -298,13 +282,13 @@ async function autoDetectSchema( if (repoId1espt.length > 0) { // user has enabled 1ESPT schema if (vscode.workspace.getConfiguration('azure-pipelines', workspaceFolder).get('1ESPipelineTemplatesSchemaFile', false)) { - const cachedSchemaUri1ESPT = await getCached1ESPTSchema(context, organizationName, session, lastUpdated1ESPTSchema); + const cachedSchemaUri1ESPT = await getCached1ESPTSchema(context, organizationName, azureDevOpsSession, lastUpdated1ESPTSchema); if (cachedSchemaUri1ESPT) { return cachedSchemaUri1ESPT; } else { // if user is signed in with microsoft account and has enabled 1ESPipeline Template Schema, then give preference to 1ESPT schema - const schemaUri1ESPT = await get1ESPTSchemaUri(azureDevOpsClient, organizationName, session, context, repoId1espt); + const schemaUri1ESPT = await get1ESPTSchemaUri(azureDevOpsClient, organizationName, azureDevOpsSession, context, repoId1espt); if (schemaUri1ESPT) { lastUpdated1ESPTSchema.set(organizationName, new Date()); return schemaUri1ESPT; @@ -337,7 +321,7 @@ async function autoDetectSchema( // hit the network to request an updated schema for an organization once per session. const schemaUri = Utils.joinPath(context.globalStorageUri, `${organizationName}-schema.json`); if (seenOrganizations.has(organizationName)) { - logger.log(`Returning cached schema for ${workspaceFolder.name}`, 'SchemaDetection'); + logger.log(`Returning cached ${organizationName} schema for ${workspaceFolder.name}`, 'SchemaDetection'); return schemaUri; } @@ -350,6 +334,81 @@ async function autoDetectSchema( return schemaUri; } +export async function getAzureDevOpsSessions(context: vscode.ExtensionContext, options?: vscode.AuthenticationGetSessionOptions): Promise { + // First, request an ARM token. + const managementSession = await vscode.authentication.getSession('microsoft', AZURE_MANAGEMENT_SCOPES, options); + if (managementSession === undefined) { + const doNotAskAgainSignIn = context.globalState.get(DO_NOT_ASK_SIGN_IN_KEY); + if (doNotAskAgainSignIn) { + logger.log(`Not prompting for login - do not ask again was set`, 'SchemaDetection'); + return undefined; + } + + logger.log(`Waiting for login`, 'SchemaDetection'); + + try { + await delete1ESPTSchemaFileIfPresent(context); + logger.log("1ESPTSchema folder deleted as user is not signed in", 'SchemaDetection') + } + catch (error) { + logger.log(`Error ${String(error)} while trying to delete 1ESPTSchema folder. Either the folder does not exist or there is an actual error.`, 'SchemaDetection') + } + + // Don't await this message so that we can return the fallback schema instead of blocking. + // We'll detect the login in extension.ts and then re-request the schema. + void vscode.window.showInformationMessage(Messages.signInForEnhancedIntelliSense, Messages.signInLabel, Messages.doNotAskAgain) + .then(async action => { + if (action === Messages.signInLabel) { + await vscode.authentication.getSession('microsoft', AZURE_MANAGEMENT_SCOPES, { createIfNone: true }); + } else if (action === Messages.doNotAskAgain) { + await context.globalState.update(DO_NOT_ASK_SIGN_IN_KEY, true); + } + }); + + return undefined; + } + + const azureDevOpsSessions: vscode.AuthenticationSession[] = []; + + // The ARM token allows us to get a list of tenants, which we then request ADO tokens for. + let nextLink: string | undefined = 'https://management.azure.com/tenants?api-version=2022-01-01'; + while (nextLink !== undefined) { + const response = await fetch(nextLink, { + headers: { + Authorization: `Bearer ${managementSession.accessToken}`, + 'User-Agent': `azure-pipelines-vscode ${extensionVersion}`, + }, + }); + const data = await response.json() as { value: { tenantId: string }[], nextLink?: string }; + nextLink = data.nextLink; + + for (const tenant of data.value) { + const session = await vscode.authentication.getSession('microsoft', [...AZURE_DEVOPS_SCOPES, `VSCODE_TENANT:${tenant.tenantId}`], { silent: true }); + if (session !== undefined) { + azureDevOpsSessions.push(session); + } + } + } + + // Implementation detail (yuck): The microsoft provider sets this to MSAL's homeAccountId, + // which is further defined as .. + // Also included is a live.com check for the non-MSAL case, which can be removed once MSAL is the only option. + // We can use this to determine if the session is for an MSA or not. + if (managementSession.account.id.includes('live.com') || + (managementSession.account.id.includes('.') + // MSA tenant & first-party tenant which MSAs can request tokens for. + && ['9188040d-6c67-4c5b-b112-36a304b66dad', 'f8cdef31-a31e-4b4a-93e4-5f571e91255a'] + .includes(managementSession.account.id.split('.')[1]))) { + // MSAs have their own organizations that aren't associated with a tenant. + const msaSession = await vscode.authentication.getSession('microsoft', AZURE_DEVOPS_SCOPES, { silent: true }); + if (msaSession !== undefined) { + azureDevOpsSessions.push(msaSession); + } + } + + return azureDevOpsSessions; +} + // Mapping of glob pattern -> schemas interface ISchemaAssociations { [pattern: string]: string[]; diff --git a/src/test/index.ts b/src/test/index.ts deleted file mode 100644 index 4196d3b..0000000 --- a/src/test/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import * as path from 'path'; -import Mocha from 'mocha'; -import glob from 'glob'; - -export function run(): Promise { - // Create the mocha test - const mocha = new Mocha({ - ui: 'tdd', - color: true, - }); - mocha.timeout(100000); - - const testsRoot = __dirname; - - return new Promise((c, e) => { - glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - e(err); - return; - } - - // Add files to the test suite - files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); - - try { - // Run the mocha test - mocha.run(failures => { - if (failures > 0) { - e(new Error(`${failures} tests failed.`)); - } else { - c(); - } - }); - } catch (err) { - console.error(err); - e(err as Error); - } - }); - }); -} diff --git a/src/test/runTest.ts b/src/test/runTest.ts deleted file mode 100644 index e57eb50..0000000 --- a/src/test/runTest.ts +++ /dev/null @@ -1,51 +0,0 @@ -import * as cp from 'child_process'; -import * as path from 'path'; - -import { - downloadAndUnzipVSCode, - resolveCliPathFromVSCodeExecutablePath, - runTests -} from '@vscode/test-electron'; - -async function main() { - try { - // The folder containing the Extension Manifest package.json - // Passed to `--extensionDevelopmentPath` - const extensionDevelopmentPath = path.resolve(__dirname, '../../'); - - // The path to the extension test runner script - // Passed to --extensionTestsPath - const extensionTestsPath = path.resolve(__dirname, './index'); - - // If the first argument is a path to a file/folder/workspace, - // the launched VS Code instance will open it. - // workspace isn't copied to out because it's all YAML files. - const launchArgs = [path.resolve(__dirname, '../../src/test/workspace')]; - - const vscodeExecutablePath = await downloadAndUnzipVSCode(); - const cliPath = resolveCliPathFromVSCodeExecutablePath(vscodeExecutablePath); - - // 0.11.0 has a bug where it blocks extension loading on first launch: - // https://github.com/microsoft/vscode-azure-account/pull/603. - // Since we always launch for the first time in CI, that turns out - // to be problematic. - cp.spawnSync(cliPath, ['--install-extension', 'ms-vscode.azure-account@0.10.1'], { - encoding: 'utf-8', - stdio: 'inherit' - }); - - // Download VS Code, unzip it and run the integration test - await runTests({ - vscodeExecutablePath, - extensionDevelopmentPath, - extensionTestsPath, - launchArgs - }); - } catch (err) { - console.error(err); - console.error('Failed to run tests'); - process.exit(1); - } -} - -void main(); diff --git a/src/test/suite/configure/azureDevOpsHelper.test.ts b/src/test/suite/configure/azureDevOpsHelper.test.ts deleted file mode 100644 index 5c71d54..0000000 --- a/src/test/suite/configure/azureDevOpsHelper.test.ts +++ /dev/null @@ -1,158 +0,0 @@ -import * as assert from 'assert'; -import { isAzureReposUrl, getFormattedRemoteUrl, getRepositoryDetailsFromRemoteUrl, getOldFormatBuildDefinitionUrl, getOldFormatBuildUrl } from '../../../configure/helper/devOps/azureDevOpsHelper'; - -suite('Azure DevOps Helper', () => { - suite('isAzureReposUrl', () => { - test('Returns true for HTTPS ADO URLs', () => { - assert.ok(isAzureReposUrl('https://dev.azure.com/ms/example/_git/repo')); - }); - - test('Returns true for HTTPS ADO URLs with leading organization', () => { - assert.ok(isAzureReposUrl('https://ms@dev.azure.com/ms/example/_git/repo')); - }); - - test('Returns true for SSH ADO URLs', () => { - assert.ok(isAzureReposUrl('git@ssh.dev.azure.com:v3/ms/example/repo')); - }); - - test('Returns true for legacy HTTPS VSTS URLs', () => { - assert.ok(isAzureReposUrl('https://ms.visualstudio.com/example/_git/repo')); - }); - - test('Returns true for legacy HTTPS VSTS URLs with DefaultCollection', () => { - assert.ok(isAzureReposUrl('https://ms.visualstudio.com/DefaultCollection/example/_git/repo')); - }); - - test('Returns true for legacy SSH VSTS URLs', () => { - assert.ok(isAzureReposUrl('ms@vs-ssh.visualstudio.com:v3/ms/example/repo')); - }); - - test('Returns false for non-ADO HTTPS URLs', () => { - assert.strictEqual( - isAzureReposUrl('https://dev.azure.coms/ms/example/_git/repo'), - false); - }); - - test('Returns false for non-ADO SSH URLs', () => { - assert.strictEqual( - isAzureReposUrl('git@dev.azure.com:v3/ms/example/repo'), - false); - }); - - test('Returns false for non-VSTS HTTPS URLs', () => { - assert.strictEqual( - isAzureReposUrl('https://ms.visualstudio.coms/example/_git/repo'), - false); - }); - - test('Returns false for non-VSTS SSH URLs', () => { - assert.strictEqual( - isAzureReposUrl('ms@ssh.visualstudio.com:v3/ms/example/repo'), - false); - }); - }); - - suite('getRepositoryIdFromUrl', () => { - test('Returns details from an HTTPS ADO URL', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('https://dev.azure.com/ms/example/_git/repo'), - { - organizationName: 'ms', - projectName: 'example', - repositoryName: 'repo', - }); - }); - - test('Returns details from an HTTPS ADO URL with leading organization', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('https://ms@dev.azure.com/ms/example/_git/repo'), - { - organizationName: 'ms', - projectName: 'example', - repositoryName: 'repo', - }); - }); - - test('Returns details from a SSH ADO URL', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('git@ssh.dev.azure.com:v3/ms/example/repo'), - { - organizationName: 'ms', - projectName: 'example', - repositoryName: 'repo', - }); - }); - - test('Returns details from a legacy HTTPS VSTS URL', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('https://ms.visualstudio.com/example/_git/repo'), - { - organizationName: 'ms', - projectName: 'example', - repositoryName: 'repo', - }); - }); - - test('Returns details from a legacy HTTPS VSTS URL with DefaultCollection', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('https://ms.visualstudio.com/DefaultCollection/example/_git/repo'), - { - organizationName: 'ms', - projectName: 'example', - repositoryName: 'repo', - }); - }); - - test('Returns details from a legacy SSH VSTS URL', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('ms@vs-ssh.visualstudio.com:v3/ms/example/repo'), - { - organizationName: 'ms', - projectName: 'example', - repositoryName: 'repo', - }); - }); - }); - - suite('getFormattedRemoteUrl', () => { - test('Returns HTTPS ADO URLs as-is', () => { - assert.strictEqual( - getFormattedRemoteUrl('https://dev.azure.com/ms/example/_git/repo'), - 'https://dev.azure.com/ms/example/_git/repo'); - }); - - test('Returns HTTPS ADO URLs with leading organization as-is', () => { - assert.strictEqual( - getFormattedRemoteUrl('https://ms@dev.azure.com/ms/example/_git/repo'), - 'https://ms@dev.azure.com/ms/example/_git/repo'); - }); - - test('Returns an HTTPS VSTS URL from a SSH ADO URL', () => { - assert.strictEqual( - getFormattedRemoteUrl('git@ssh.dev.azure.com:v3/ms/example/repo'), - 'https://ms.visualstudio.com/example/_git/repo'); - }); - - test('Returns an HTTPS VSTS URL from a SSH VSTS URL', () => { - assert.strictEqual( - getFormattedRemoteUrl('ms@vs-ssh.visualstudio.com:v3/ms/example/repo'), - 'https://ms.visualstudio.com/example/_git/repo'); - }); - }); - - suite('getOldFormatBuildDefinitionUrl', () => { - test('Returns a legacy HTTPS VSTS build definition URL', () => { - assert.strictEqual( - getOldFormatBuildDefinitionUrl('ms', 'example', 42), - 'https://ms.visualstudio.com/example/_build?definitionId=42&_a=summary'); - }); - }); - - suite('getOldFormatBuildUrl', () => { - test('Returns a legacy HTTPS VSTS build URL', () => { - assert.strictEqual( - getOldFormatBuildUrl('ms', 'example', 42), - 'https://ms.visualstudio.com/example/_build/results?buildId=42&view=results'); - }); - }); -}); diff --git a/src/test/suite/configure/gitHubHelper.test.ts b/src/test/suite/configure/gitHubHelper.test.ts deleted file mode 100644 index fe6bf16..0000000 --- a/src/test/suite/configure/gitHubHelper.test.ts +++ /dev/null @@ -1,64 +0,0 @@ -import * as assert from 'assert'; -import { isGitHubUrl, getFormattedRemoteUrl, getRepositoryDetailsFromRemoteUrl } from '../../../configure/helper/gitHubHelper'; - -suite('GitHub Helper', () => { - suite('isGitHubUrl', () => { - test('Returns true for HTTPS GitHub URLs', () => { - assert.ok(isGitHubUrl('https://github.com/microsoft/azure-pipelines-vscode')); - }); - - test('Returns true for HTTPS GitHub URLs with trailing .git', () => { - assert.ok(isGitHubUrl('https://github.com/microsoft/azure-pipelines-vscode.git')); - }); - - test('Returns true for SSH GitHub URLs', () => { - assert.ok(isGitHubUrl('git@github.com:microsoft/azure-pipelines-vscode.git')); - }); - - test('Returns false for non-GitHub HTTPS URLs', () => { - assert.strictEqual( - isGitHubUrl('https://github.coms/microsoft/azure-pipelines-vscode'), - false); - }); - - test('Returns false for non-GitHub SSH URLs', () => { - assert.strictEqual( - isGitHubUrl('sgit@github.com:microsoft/azure-pipelines-vscode.git'), - false); - }); - }); - - suite('getRepositoryDetailsFromRemoteUrl', () => { - test('Returns owner and repo from an HTTPS URL', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('https://github.com/microsoft/azure-pipelines-vscode'), - { ownerName: 'microsoft', repositoryName: 'azure-pipelines-vscode' }); - }); - - test('Returns owner from an HTTPS URL with trailing .git', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('https://github.com/microsoft/azure-pipelines-vscode.git'), - { ownerName: 'microsoft', repositoryName: 'azure-pipelines-vscode' }); - }); - - test('Returns owner from a SSH URL', () => { - assert.deepStrictEqual( - getRepositoryDetailsFromRemoteUrl('git@github.com:microsoft/azure-pipelines-vscode.git'), - { ownerName: 'microsoft', repositoryName: 'azure-pipelines-vscode' }); - }); - }); - - suite('getFormattedRemoteUrl', () => { - test('Returns HTTPS URLs as-is', () => { - assert.strictEqual( - getFormattedRemoteUrl('https://github.com/microsoft/azure-pipelines-vscode.git'), - 'https://github.com/microsoft/azure-pipelines-vscode.git'); - }); - - test('Returns an HTTPS URL from a SSH URL', () => { - assert.strictEqual( - getFormattedRemoteUrl('git@github.com:microsoft/azure-pipelines-vscode.git'), - 'https://github.com/microsoft/azure-pipelines-vscode.git'); - }); - }); -}); diff --git a/src/typings/azure-account.api.d.ts b/src/typings/azure-account.api.d.ts deleted file mode 100644 index 7c5eadd..0000000 --- a/src/typings/azure-account.api.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -// https://github.com/microsoft/vscode-azure-account/blob/v0.9.11/src/azure-account.api.d.ts -// This is the version right before they started versioning their API. - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { Event, Terminal, Progress, CancellationToken } from 'vscode'; -import { ServiceClientCredentials } from 'ms-rest'; -import { ReadStream } from 'fs'; -import { TokenCredentialsBase } from '@azure/ms-rest-nodeauth'; -import { Environment } from '@azure/ms-rest-azure-env'; -import { SubscriptionModels } from '@azure/arm-subscriptions'; - -export type AzureLoginStatus = 'Initializing' | 'LoggingIn' | 'LoggedIn' | 'LoggedOut'; - -export interface AzureAccount { - readonly status: AzureLoginStatus; - readonly onStatusChanged: Event; - readonly waitForLogin: () => Promise; - readonly sessions: AzureSession[]; - readonly onSessionsChanged: Event; - readonly subscriptions: AzureSubscription[]; - readonly onSubscriptionsChanged: Event; - readonly waitForSubscriptions: () => Promise; - readonly filters: AzureResourceFilter[]; - readonly onFiltersChanged: Event; - readonly waitForFilters: () => Promise; - createCloudShell(os: 'Linux' | 'Windows'): CloudShell; -} - -export interface AzureSession { - readonly environment: Environment; - readonly userId: string; - readonly tenantId: string; - - /** - * The credentials object for azure-sdk-for-node modules https://github.com/azure/azure-sdk-for-node - */ - readonly credentials: ServiceClientCredentials; - - /** - * The credentials object for azure-sdk-for-js modules https://github.com/azure/azure-sdk-for-js - */ - readonly credentials2: TokenCredentialsBase; -} - -export interface AzureSubscription { - readonly session: AzureSession; - readonly subscription: SubscriptionModels.Subscription; -} - -export type AzureResourceFilter = AzureSubscription; - -export type CloudShellStatus = 'Connecting' | 'Connected' | 'Disconnected'; - -export interface UploadOptions { - contentLength?: number; - progress?: Progress<{ message?: string; increment?: number }>; - token?: CancellationToken; -} - -export interface CloudShell { - readonly status: CloudShellStatus; - readonly onStatusChanged: Event; - readonly waitForConnection: () => Promise; - readonly terminal: Promise; - readonly session: Promise; - readonly uploadFile: (filename: string, stream: ReadStream, options?: UploadOptions) => Promise; -} diff --git a/tsconfig.json b/tsconfig.json index 24bf822..d4ecd6d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,5 @@ { "compilerOptions": { - /* List of library files to be included in the compilation. */ - "lib": [ "es2019" ], - /* Specify module code generation. */ "module": "ES2022", @@ -42,9 +39,7 @@ "strict": true, /* Specify ECMAScript target version. */ - "target": "es2019", - - "skipLibCheck": true // https://github.com/Azure/ms-rest-js/issues/367 + "target": "ES2022", }, "include": [ "src" diff --git a/webpack.config.js b/webpack.config.js index b09d256..5f4ab25 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -3,7 +3,6 @@ 'use strict'; const path = require('path'); -const CopyPlugin = require('copy-webpack-plugin'); /** @type {import('webpack').Configuration} */ const config = { @@ -40,18 +39,5 @@ const config = { } ] }, - plugins: [ - new CopyPlugin({ - patterns: [ - { from: 'src/configure/templates', to: 'configure/templates' }, - ], - }), - ], - // Disable optimization until vscode-azure-account supports @azure/core-auth - // and we move off of @azure/ms-rest-nodeauth. - // https://github.com/Azure/ms-rest-nodeauth/issues/83 - optimization: { - minimize: false, - }, }; module.exports = config;

ZnI-E?)Dku&|7+ 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