diff --git a/.config/guardian/.gdnbaselines b/.config/guardian/.gdnbaselines index 75f3a5cfe..ad1c9aa80 100644 --- a/.config/guardian/.gdnbaselines +++ b/.config/guardian/.gdnbaselines @@ -1,29 +1,29 @@ { + "hydrated": true, "properties": { - "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/baselines" + "helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/baselines", + "hydrationStatus": "This file contains identifying data. It is **NOT** safe to check into your repo. To dehydrate this file, run `guardian dehydrate --help` and follow the guidance." }, "version": "1.0.0", "baselines": { "default": { "name": "default", - "createdDate": "2024-03-18 18:32:58Z", - "lastUpdatedDate": "2024-03-18 18:32:58Z" + "createdDate": "2024-09-09 19:35:36Z", + "lastUpdatedDate": "2024-09-09 19:35:36Z" } }, "results": { - "d6ffb0614846153cf3cc5936d0444ed9eda6fe6854febb4c8ea59243c120b223": { - "signature": "d6ffb0614846153cf3cc5936d0444ed9eda6fe6854febb4c8ea59243c120b223", + "26445e3e484940d2d58c2ffc32ab3895fca4b1589d66e2f2dee2fa01f2c479fb": { + "signature": "26445e3e484940d2d58c2ffc32ab3895fca4b1589d66e2f2dee2fa01f2c479fb", "alternativeSignatures": [], - "target": "omnisharptest/omnisharpUnitTests/testAssets/private.pem", + "target": "test/omnisharp/omnisharpUnitTests/testAssets/private.pem", "line": 1, "memberOf": [ "default" ], "tool": "credscan", "ruleId": "CSCAN-GENERAL0020", - "createdDate": "2024-06-27 21:30:23Z", - "expirationDate": "2024-12-14 21:44:58Z", - "justification": "This error is baselined with an expiration date of 180 days from 2024-06-27 21:44:58Z" + "createdDate": "2024-09-09 19:35:36Z" } } -} \ No newline at end of file +} diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..aa8e417ef --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,9 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.192.0/containers/dotnet/.devcontainer/base.Dockerfile + +FROM mcr.microsoft.com/dotnet/sdk:8.0 + +# Set up machine requirements to build the repo +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get -y install --no-install-recommends curl git gnupg \ + && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ + && apt-get install -y nodejs diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..58971cf2d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,56 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.140.1/containers/dotnetcore +{ + "name": "vscode-csharp", + "build": { + "dockerfile": "Dockerfile", + // Set the context to the workspace folder to allow us to copy files from it. + "context": ".." + }, + "customizations": { + "vscode": { + "settings": { + "files.associations": { + "*.csproj": "msbuild", + "*.fsproj": "msbuild", + "*.globalconfig": "ini", + "*.manifest": "xml", + "*.nuspec": "xml", + "*.pkgdef": "ini", + "*.projitems": "msbuild", + "*.props": "msbuild", + "*.resx": "xml", + "*.rsp": "Powershell", + "*.ruleset": "xml", + "*.settings": "xml", + "*.shproj": "msbuild", + "*.slnf": "json", + "*.targets": "msbuild", + "*.vbproj": "msbuild", + "*.vsixmanifest": "xml", + "*.vstemplate": "xml", + "*.xlf": "xml", + "*.yml": "azure-pipelines" + }, + // ms-vscode.powershell settings + "powershell.promptToUpdatePowerShell": false, + "powershell.integratedConsole.showOnStartup": false, + "powershell.startAutomatically": false, + // ms-azure-devops.azure-pipelines settings + "azure-pipelines.customSchemaFile": ".vscode/dnceng-schema.json" + }, + "extensions": [ + "ms-dotnettools.csharp", + "ms-dotnettools.csdevkit", + "EditorConfig.EditorConfig", + "ms-vscode.powershell", + "tintoy.msbuild-project-tools", + "ms-azure-devops.azure-pipelines", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "orta.vscode-jest" + ] + } + }, + "postCreateCommand": "npm ci && npx gulp installDependencies" +} diff --git a/.devcontainer/devinit.json b/.devcontainer/devinit.json new file mode 100644 index 000000000..b88bf48be --- /dev/null +++ b/.devcontainer/devinit.json @@ -0,0 +1,7 @@ +{ + "run": [ + { + "tool": "require-dotnetcoresdk" + } + ] + } \ No newline at end of file diff --git a/.gitignore b/.gitignore index 96666a4b0..a0b5317fc 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ out .razortelemetry/ .razorDevKit/ .vscode-test/ +msbuild/signing/signJs/*.log +msbuild/signing/signVsix/*.log dist/ *.razor.json diff --git a/.vscode/dneng-schema.json b/.vscode/dneng-schema.json new file mode 100644 index 000000000..cc0f88ba4 --- /dev/null +++ b/.vscode/dneng-schema.json @@ -0,0 +1 @@ +{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://github.com/Microsoft/azure-pipelines-vscode/blob/main/service-schema.json","$comment":"v1.183.0","title":"Pipeline schema","description":"A pipeline definition","oneOf":[{"$ref":"#/definitions/pipeline"},{"type":"string","pattern":"^$"}],"definitions":{"string":{"type":"string"},"sequence":{"type":"array","items":{"$ref":"#/definitions/any"}},"mapping":{"type":"object","additionalProperties":true},"any":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/definitions/any"}},{"type":"object","additionalProperties":true}]},"pipeline":{"anyOf":[{"type":"object","properties":{"stages":{"description":"Stages are groups of jobs that can run without human intervention","$ref":"#/definitions/stages"},"pool":{"description":"Pool where jobs in this pipeline will run unless otherwise specified","$ref":"#/definitions/pool"},"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"required":["stages"]},{"type":"object","properties":{"extends":{"description":"Extends a template","$ref":"#/definitions/extends"},"pool":{"description":"Pool where jobs in this pipeline will run unless otherwise specified","$ref":"#/definitions/pool"},"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"required":["extends"]},{"type":"object","properties":{"jobs":{"description":"Jobs represent units of work which can be assigned to a single agent or server","$ref":"#/definitions/jobs"},"pool":{"description":"Pool where jobs in this pipeline will run unless otherwise specified","$ref":"#/definitions/pool"},"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"required":["jobs"]},{"type":"object","properties":{"phases":{"description":"Phases which make up the pipeline","deprecationMessage":"This option is deprecated, use `jobs` instead","doNotSuggest":true,"$ref":"#/definitions/phases"},"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"required":["phases"]},{"type":"object","properties":{"strategy":{"description":"Execution strategy for this job","$ref":"#/definitions/jobStrategy"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/jobContinueOnError"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/pool"},"container":{"description":"Container resource name","$ref":"#/definitions/jobContainer"},"services":{"$ref":"#/definitions/jobServices"},"workspace":{"$ref":"#/definitions/jobWorkspace"},"steps":{"description":"A list of steps to run in this job","$ref":"#/definitions/steps"},"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"required":["steps"]},{"type":"object","properties":{"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/jobContinueOnError"},"queue":{"description":"Queue where this phase will run","deprecationMessage":"This option is deprecated, use pool instead","doNotSuggest":true,"$ref":"#/definitions/phaseQueueTarget"},"steps":{"description":"A list of steps to run in this phase","$ref":"#/definitions/steps"},"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"deprecationMessage":"This option is deprecated, use `job` (inside `jobs`) instead","required":["steps"]},{"type":"object","properties":{"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/jobContinueOnError"},"server":{"description":"True if this is an agent-less phase (runs on server)","deprecationMessage":"This option is deprecated, use pool:server instead","doNotSuggest":true,"$ref":"#/definitions/phaseServerTarget"},"steps":{"description":"A list of steps to run in this phase","$ref":"#/definitions/steps"},"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"deprecationMessage":"This option is deprecated, use `job` (inside `jobs`) instead","required":["steps"]}]},"pipelineBase":{"type":"object","properties":{"name":{"description":"Pipeline name","$ref":"#/definitions/string_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"schedules":{"$ref":"#/definitions/schedules"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/resources"},"variables":{"description":"Variables for this pipeline","$ref":"#/definitions/variables"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false},"pipelineTrigger":{"type":"object","properties":{"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/trigger"},"name":{"description":"Pipeline name","$ref":"#/definitions/any_allowExpressions"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/any_allowExpressions"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/any_allowExpressions"},"schedules":{"$ref":"#/definitions/any_allowExpressions"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/any_allowExpressions"},"variables":{"description":"Variables for the entire pipeline","$ref":"#/definitions/any_allowExpressions"},"stages":{"$ref":"#/definitions/any_allowExpressions"},"jobs":{"description":"Jobs which make up the pipeline","$ref":"#/definitions/any_allowExpressions"},"extends":{"description":"Extends a template","$ref":"#/definitions/any_allowExpressions"},"phases":{"description":"Phases which make up the pipeline","deprecationMessage":"This option is deprecated, use `jobs` instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"strategy":{"description":"Execution strategy for the job","$ref":"#/definitions/any_allowExpressions"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/any_allowExpressions"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/any_allowExpressions"},"container":{"description":"Container resource name","$ref":"#/definitions/any_allowExpressions"},"services":{"$ref":"#/definitions/any_allowExpressions"},"workspace":{"$ref":"#/definitions/any_allowExpressions"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/any_allowExpressions"},"queue":{"description":"Queue where this phase will run","deprecationMessage":"This option is deprecated, use pool instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"server":{"description":"True if this is an agent-less phase (runs on server)","deprecationMessage":"This option is deprecated, use pool:server instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false},"pipelineParameters":{"type":"object","properties":{"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/pipelineTemplateParameters"},"name":{"description":"Pipeline name","$ref":"#/definitions/any_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/any_allowExpressions"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/any_allowExpressions"},"schedules":{"$ref":"#/definitions/any_allowExpressions"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/any_allowExpressions"},"variables":{"description":"Variables for the entire pipeline","$ref":"#/definitions/any_allowExpressions"},"stages":{"$ref":"#/definitions/any_allowExpressions"},"jobs":{"description":"Jobs which make up the pipeline","$ref":"#/definitions/any_allowExpressions"},"extends":{"description":"Extends a template","$ref":"#/definitions/any_allowExpressions"},"phases":{"description":"Phases which make up the pipeline","deprecationMessage":"This option is deprecated, use `jobs` instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"strategy":{"description":"Execution strategy for the job","$ref":"#/definitions/any_allowExpressions"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/any_allowExpressions"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/any_allowExpressions"},"container":{"description":"Container resource name","$ref":"#/definitions/any_allowExpressions"},"services":{"$ref":"#/definitions/any_allowExpressions"},"workspace":{"$ref":"#/definitions/any_allowExpressions"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/any_allowExpressions"},"queue":{"description":"Queue where this phase will run","deprecationMessage":"This option is deprecated, use pool instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"server":{"description":"True if this is an agent-less phase (runs on server)","deprecationMessage":"This option is deprecated, use pool:server instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false},"pipelinePR":{"type":"object","properties":{"pr":{"description":"Pull request triggers","$ref":"#/definitions/pr"},"name":{"description":"Pipeline name","$ref":"#/definitions/any_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/any_allowExpressions"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/any_allowExpressions"},"schedules":{"$ref":"#/definitions/any_allowExpressions"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/any_allowExpressions"},"variables":{"description":"Variables for the entire pipeline","$ref":"#/definitions/any_allowExpressions"},"stages":{"$ref":"#/definitions/any_allowExpressions"},"jobs":{"description":"Jobs which make up the pipeline","$ref":"#/definitions/any_allowExpressions"},"extends":{"description":"Extends a template","$ref":"#/definitions/any_allowExpressions"},"phases":{"description":"Phases which make up the pipeline","deprecationMessage":"This option is deprecated, use `jobs` instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"strategy":{"description":"Execution strategy for the job","$ref":"#/definitions/any_allowExpressions"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/any_allowExpressions"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/any_allowExpressions"},"container":{"description":"Container resource name","$ref":"#/definitions/any_allowExpressions"},"services":{"$ref":"#/definitions/any_allowExpressions"},"workspace":{"$ref":"#/definitions/any_allowExpressions"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/any_allowExpressions"},"queue":{"description":"Queue where this phase will run","deprecationMessage":"This option is deprecated, use pool instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"server":{"description":"True if this is an agent-less phase (runs on server)","deprecationMessage":"This option is deprecated, use pool:server instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false},"pipelineSchedules":{"type":"object","properties":{"schedules":{"$ref":"#/definitions/schedules"},"name":{"description":"Pipeline name","$ref":"#/definitions/any_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/any_allowExpressions"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/any_allowExpressions"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/any_allowExpressions"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/any_allowExpressions"},"variables":{"description":"Variables for the entire pipeline","$ref":"#/definitions/any_allowExpressions"},"stages":{"$ref":"#/definitions/any_allowExpressions"},"jobs":{"description":"Jobs which make up the pipeline","$ref":"#/definitions/any_allowExpressions"},"extends":{"description":"Extends a template","$ref":"#/definitions/any_allowExpressions"},"phases":{"description":"Phases which make up the pipeline","deprecationMessage":"This option is deprecated, use `jobs` instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"strategy":{"description":"Execution strategy for the job","$ref":"#/definitions/any_allowExpressions"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/any_allowExpressions"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/any_allowExpressions"},"container":{"description":"Container resource name","$ref":"#/definitions/any_allowExpressions"},"services":{"$ref":"#/definitions/any_allowExpressions"},"workspace":{"$ref":"#/definitions/any_allowExpressions"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/any_allowExpressions"},"queue":{"description":"Queue where this phase will run","deprecationMessage":"This option is deprecated, use pool instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"server":{"description":"True if this is an agent-less phase (runs on server)","deprecationMessage":"This option is deprecated, use pool:server instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false},"pipelineAnyBase":{"type":"object","properties":{"name":{"description":"Pipeline name","$ref":"#/definitions/any_allowExpressions"},"trigger":{"description":"Continuous integration triggers","$ref":"#/definitions/any_allowExpressions"},"parameters":{"description":"Pipeline template parameters","$ref":"#/definitions/any_allowExpressions"},"pr":{"description":"Pull request triggers","$ref":"#/definitions/any_allowExpressions"},"schedules":{"$ref":"#/definitions/any_allowExpressions"},"resources":{"description":"Containers and repositories used in the build","$ref":"#/definitions/any_allowExpressions"},"variables":{"description":"Variables for the entire pipeline","$ref":"#/definitions/any_allowExpressions"},"stages":{"$ref":"#/definitions/any_allowExpressions"},"jobs":{"description":"Jobs which make up the pipeline","$ref":"#/definitions/any_allowExpressions"},"extends":{"description":"Extends a template","$ref":"#/definitions/any_allowExpressions"},"phases":{"description":"Phases which make up the pipeline","deprecationMessage":"This option is deprecated, use `jobs` instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"strategy":{"description":"Execution strategy for the job","$ref":"#/definitions/any_allowExpressions"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/any_allowExpressions"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/any_allowExpressions"},"container":{"description":"Container resource name","$ref":"#/definitions/any_allowExpressions"},"services":{"$ref":"#/definitions/any_allowExpressions"},"workspace":{"$ref":"#/definitions/any_allowExpressions"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/any_allowExpressions"},"queue":{"description":"Queue where this phase will run","deprecationMessage":"This option is deprecated, use pool instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"server":{"description":"True if this is an agent-less phase (runs on server)","deprecationMessage":"This option is deprecated, use pool:server instead","doNotSuggest":true,"$ref":"#/definitions/any_allowExpressions"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false},"pr":{"anyOf":[{"type":"string","pattern":"^none$"},{"type":"array","items":{"$ref":"#/definitions/branchFilter"}},{"type":"object","properties":{"autoCancel":{"description":"Whether to cancel running PR builds when a new commit lands in the branch","$ref":"#/definitions/boolean"},"branches":{"$ref":"#/definitions/includeExcludeFilters"},"paths":{"$ref":"#/definitions/includeExcludeFilters"},"drafts":{"description":"Whether to start a run when a draft PR is created","$ref":"#/definitions/boolean"}},"additionalProperties":false}]},"trigger":{"anyOf":[{"type":"string","pattern":"^none$"},{"type":"array","items":{"$ref":"#/definitions/branchFilter"}},{"type":"object","properties":{"batch":{"description":"Whether to batch changes per branch","$ref":"#/definitions/boolean"},"branches":{"$ref":"#/definitions/includeExcludeFilters"},"paths":{"$ref":"#/definitions/includeExcludeFilters"},"tags":{"$ref":"#/definitions/includeExcludeFilters"}},"additionalProperties":false}]},"includeExcludeFilters":{"type":"object","properties":{"include":{"$ref":"#/definitions/branchFilterArray"},"exclude":{"$ref":"#/definitions/branchFilterArray"}},"additionalProperties":false},"includeExcludeStringFilters":{"anyOf":[{"type":"array","items":{"$ref":"#/definitions/nonEmptyString"}},{"type":"object","properties":{"include":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"exclude":{"$ref":"#/definitions/sequenceOfNonEmptyString"}},"additionalProperties":false}]},"branchFilterArray":{"type":"array","items":{"$ref":"#/definitions/branchFilter"}},"branchFilter":{"type":"string","description":"branch name or prefix filter","pattern":"^[^\\/~\\^\\: \\[\\]\\\\]+(\\/[^\\/~\\^\\: \\[\\]\\\\]+)*$"},"templateParameters":{"anyOf":[{"type":"array","items":{"$ref":"#/definitions/templateParameter"}},{"type":"object","additionalProperties":true}]},"templateParameter":{"type":"object","properties":{"name":{"$ref":"#/definitions/nonEmptyString"},"displayName":{"description":"Human-readable name for the parameter","$ref":"#/definitions/string"},"type":{"$ref":"#/definitions/templateParameterType"},"default":{"$ref":"#/definitions/any"},"values":{"$ref":"#/definitions/sequenceOfNonEmptyString"}},"additionalProperties":false,"firstProperty":["name"]},"templateParameterType":{"anyOf":[{"type":"string","pattern":"^boolean$"},{"type":"string","pattern":"^container$"},{"type":"string","pattern":"^containerList$"},{"type":"string","pattern":"^deployment$"},{"type":"string","pattern":"^deploymentList$"},{"type":"string","pattern":"^job$"},{"type":"string","pattern":"^jobList$"},{"type":"string","pattern":"^legacyObject$"},{"type":"string","pattern":"^number$"},{"type":"string","pattern":"^object$"},{"type":"string","pattern":"^stage$"},{"type":"string","pattern":"^stageList$"},{"type":"string","pattern":"^step$"},{"type":"string","pattern":"^stepList$"},{"type":"string","pattern":"^string$"}]},"pipelineTemplateParameters":{"type":"array","items":{"$ref":"#/definitions/pipelineTemplateParameter"}},"pipelineTemplateParameter":{"type":"object","properties":{"name":{"$ref":"#/definitions/nonEmptyString"},"displayName":{"description":"Human-readable name for the parameter","$ref":"#/definitions/string"},"type":{"$ref":"#/definitions/pipelineTemplateParameterType"},"default":{"$ref":"#/definitions/any"},"values":{"$ref":"#/definitions/sequenceOfNonEmptyString"}},"additionalProperties":false,"firstProperty":["name"]},"pipelineTemplateParameterType":{"anyOf":[{"type":"string","pattern":"^boolean$"},{"type":"string","pattern":"^container$"},{"type":"string","pattern":"^containerList$"},{"type":"string","pattern":"^deployment$"},{"type":"string","pattern":"^deploymentList$"},{"type":"string","pattern":"^environment$"},{"type":"string","pattern":"^filePath$"},{"type":"string","pattern":"^job$"},{"type":"string","pattern":"^jobList$"},{"type":"string","pattern":"^number$"},{"type":"string","pattern":"^object$"},{"type":"string","pattern":"^pool$"},{"type":"string","pattern":"^secureFile$"},{"type":"string","pattern":"^serviceConnection$"},{"type":"string","pattern":"^stage$"},{"type":"string","pattern":"^stageList$"},{"type":"string","pattern":"^step$"},{"type":"string","pattern":"^stepList$"},{"type":"string","pattern":"^string$"}]},"schedules":{"type":"array","items":{"$ref":"#/definitions/schedule"}},"schedule":{"type":"object","properties":{"cron":{"$ref":"#/definitions/nonEmptyString"},"displayName":{"$ref":"#/definitions/string"},"branches":{"$ref":"#/definitions/includeExcludeFilters"},"batch":{"$ref":"#/definitions/boolean"},"always":{"$ref":"#/definitions/boolean"}},"additionalProperties":false,"firstProperty":["cron"]},"resources":{"anyOf":[{"type":"object","properties":{"builds":{"description":"List of external build resources","$ref":"#/definitions/buildResources"},"containers":{"description":"List of container images","$ref":"#/definitions/containerResources"},"pipelines":{"$ref":"#/definitions/pipelineResources"},"repositories":{"description":"List of external repositories","$ref":"#/definitions/repositoryResources"},"webhooks":{"description":"List of webhooks","$ref":"#/definitions/webhookResources"},"packages":{"description":"List of external packages","$ref":"#/definitions/packageResources"}},"additionalProperties":false},{"type":"array","items":{"$ref":"#/definitions/legacyResource"}}]},"buildResources":{"type":"array","items":{"$ref":"#/definitions/buildResource"}},"buildResource":{"type":"object","properties":{"build":{"description":"Alias or name of build artifact","$ref":"#/definitions/referenceName"},"type":{"description":"Name of the artifact type","$ref":"#/definitions/nonEmptyString"},"connection":{"description":"Name of the connection. This connection will be used for all the communication related to this artifact.","$ref":"#/definitions/nonEmptyString"},"source":{"description":"Name of the source definition/build/job","$ref":"#/definitions/nonEmptyString"},"version":{"$ref":"#/definitions/nonEmptyString"},"branch":{"$ref":"#/definitions/nonEmptyString"},"trigger":{"description":"When the artifact mentioned in this build resource completes a build, its allowed to trigger this pipeline.","$ref":"#/definitions/buildResourceTrigger"}},"additionalProperties":false,"firstProperty":["build"],"required":["build","type","connection","source"]},"buildResourceTrigger":{"anyOf":[{"type":"string","pattern":"^none$"},{"type":"string","pattern":"^true$"}]},"packageResources":{"type":"array","items":{"$ref":"#/definitions/packageResource"}},"packageResource":{"type":"object","properties":{"package":{"description":"Alias of package artifact","$ref":"#/definitions/referenceName"},"type":{"description":"Type of the package. Ex - NuGet, NPM etc.","$ref":"#/definitions/nonEmptyString"},"connection":{"description":"Name of the connection. This connection will be used for all the communication related to this artifact.","$ref":"#/definitions/nonEmptyString"},"name":{"description":"Name of the package","$ref":"#/definitions/nonEmptyString"},"version":{"$ref":"#/definitions/nonEmptyString"},"tag":{"$ref":"#/definitions/nonEmptyString"},"trigger":{"description":"Trigger a new pipeline run when a new version of this package is available.","$ref":"#/definitions/packageResourceTrigger"}},"additionalProperties":false,"firstProperty":["package"],"required":["package","type","connection","name"]},"packageResourceTrigger":{"anyOf":[{"type":"string","pattern":"^none$"},{"type":"string","pattern":"^true$"}]},"containerResources":{"type":"array","items":{"$ref":"#/definitions/containerResource"}},"containerResource":{"type":"object","properties":{"container":{"description":"ID for the container","$ref":"#/definitions/referenceName"},"type":{"$ref":"#/definitions/containerArtifactType"},"trigger":{"$ref":"#/definitions/containerResourceTrigger"},"endpoint":{"description":"ID of the service endpoint connecting to a private container registry","$ref":"#/definitions/string"},"env":{"description":"Variables to map into the container's environment","$ref":"#/definitions/mappingOfStringString"},"image":{"description":"Container image tag","$ref":"#/definitions/string","examples":["ubuntu:16.04","windows:1803"]},"mapDockerSocket":{"description":"Set this flag to false to force the agent not to setup the /var/run/docker.sock volume on container jobs","$ref":"#/definitions/boolean"},"options":{"description":"Options to pass into container host","$ref":"#/definitions/string"},"ports":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"volumes":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"mountReadOnly":{"$ref":"#/definitions/readOnlyMounts"}},"additionalProperties":true,"firstProperty":["container"],"required":["container","image"]},"containerArtifactType":{"anyOf":[{"type":"string","ignoreCase":"value","pattern":"^ACR$"},{"type":"string"}]},"containerResourceTrigger":{"anyOf":[{"type":"string","pattern":"^none$"},{"type":"string","pattern":"^true$"},{"type":"object","properties":{"enabled":{"$ref":"#/definitions/boolean"},"tags":{"$ref":"#/definitions/includeExcludeStringFilters"}},"additionalProperties":false}]},"pipelineResources":{"type":"array","items":{"$ref":"#/definitions/pipelineResource"}},"pipelineResource":{"type":"object","properties":{"pipeline":{"description":"ID of the pipeline resource","$ref":"#/definitions/referenceName"},"project":{"$ref":"#/definitions/nonEmptyString"},"source":{"$ref":"#/definitions/nonEmptyString"},"version":{"$ref":"#/definitions/nonEmptyString"},"branch":{"$ref":"#/definitions/nonEmptyString"},"tags":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"trigger":{"$ref":"#/definitions/pipelineResourceTrigger"}},"additionalProperties":false,"firstProperty":["pipeline"],"required":["pipeline"]},"pipelineResourceTrigger":{"anyOf":[{"type":"string","pattern":"^none$"},{"type":"string","pattern":"^true$"},{"type":"object","properties":{"enabled":{"$ref":"#/definitions/boolean"},"branches":{"$ref":"#/definitions/triggerBranchFilter"},"stages":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"tags":{"$ref":"#/definitions/sequenceOfNonEmptyString"}},"additionalProperties":false}]},"triggerBranchFilter":{"anyOf":[{"type":"object","properties":{"include":{"$ref":"#/definitions/branchFilterArray"},"exclude":{"$ref":"#/definitions/branchFilterArray"}},"additionalProperties":false},{"type":"array","items":{"$ref":"#/definitions/branchFilter"}}]},"repositoryResources":{"type":"array","items":{"$ref":"#/definitions/repositoryResource"}},"repositoryResource":{"type":"object","properties":{"repository":{"description":"ID of the external repository","$ref":"#/definitions/referenceName"},"endpoint":{"description":"ID of the service endpoint connecting to this repository","$ref":"#/definitions/nonEmptyString"},"trigger":{"$ref":"#/definitions/trigger"},"checkoutOptions":{"deprecationMessage":"This location is deprecated, `checkoutOptions` should be a peer of the `repository` keyword.","doNotSuggest":true,"$ref":"#/definitions/repositoryCheckoutOptions"}},"additionalProperties":true,"firstProperty":["repository"],"required":["repository"]},"repositoryCheckoutOptions":{"type":"object","properties":{"clean":{"description":"Scorch the repo before fetching?","enum":["true","false"],"$ref":"#/definitions/string"},"fetchDepth":{"description":"Depth of Git graph to fetch","$ref":"#/definitions/string"},"lfs":{"description":"Fetch and checkout Git LFS objects?","$ref":"#/definitions/string"},"submodules":{"description":"Fetch and checkout submodules?","$ref":"#/definitions/string"},"persistCredentials":{"description":"Keep credentials available for later use?","$ref":"#/definitions/string"}},"additionalProperties":false},"legacyResource":{"type":"object","properties":{"repo":{"$ref":"#/definitions/legacyRepoResourceAlias"},"clean":{"description":"Scorch the repo before fetching?","enum":["true","false"],"$ref":"#/definitions/string"},"fetchDepth":{"description":"Depth of Git graph to fetch","$ref":"#/definitions/string"},"lfs":{"description":"Fetch and checkout Git LFS objects?","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["repo"]},"legacyRepoResourceAlias":{"type":"string","pattern":"^self$"},"webhookResources":{"type":"array","items":{"$ref":"#/definitions/webhookResource"}},"webhookResource":{"type":"object","properties":{"webhook":{"description":"Name of the webhook","$ref":"#/definitions/referenceName"},"connection":{"description":"Name of the connection. In case of offline webhook this will be the type of Incoming Webhook otherwise it will be the type of the webhook extension.","$ref":"#/definitions/nonEmptyString"},"type":{"description":"Name of the webhook extension. leave this empty if its offline webhook.","$ref":"#/definitions/nonEmptyString"},"filters":{"description":"List of trigger filters.","$ref":"#/definitions/webhookFilters"}},"additionalProperties":false,"firstProperty":["webhook"],"required":["webhook","connection"]},"webhookFilters":{"type":"array","items":{"$ref":"#/definitions/webhookFilter"}},"webhookFilter":{"type":"object","properties":{"path":{"description":"json path to select data from event payload","$ref":"#/definitions/nonEmptyString"},"value":{"description":"Expected value for the filter to match","$ref":"#/definitions/nonEmptyString"}},"additionalProperties":false,"firstProperty":["path"],"required":["path","value"]},"variablesTemplate":{"type":"object","properties":{"parameters":{"$ref":"#/definitions/templateParameters"},"variables":{"$ref":"#/definitions/variables"}},"additionalProperties":false},"variables":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"array","items":{"$ref":"#/definitions/variable"}}]},"variable":{"anyOf":[{"type":"object","properties":{"name":{"$ref":"#/definitions/nonEmptyString"},"value":{"$ref":"#/definitions/string"},"readonly":{"$ref":"#/definitions/boolean"}},"additionalProperties":false,"firstProperty":["name"]},{"type":"object","properties":{"group":{"$ref":"#/definitions/nonEmptyString"}},"additionalProperties":false,"firstProperty":["group"]},{"type":"object","properties":{"template":{"$ref":"#/definitions/nonEmptyString"},"parameters":{"$ref":"#/definitions/mapping"}},"additionalProperties":false,"firstProperty":["template"]}]},"stagesTemplate":{"type":"object","properties":{"parameters":{"$ref":"#/definitions/templateParameters"},"stages":{"$ref":"#/definitions/stages"}},"additionalProperties":false},"stages":{"type":"array","items":{"$ref":"#/definitions/stage"}},"stage":{"anyOf":[{"type":"object","properties":{"stage":{"description":"ID of the stage","$ref":"#/definitions/string"},"displayName":{"description":"Human-readable name for the stage","$ref":"#/definitions/string"},"pool":{"description":"Pool where jobs in this stage will run unless otherwise specified","$ref":"#/definitions/pool"},"dependsOn":{"description":"Any stages which must complete before this one","$ref":"#/definitions/jobDependsOn"},"condition":{"description":"Evaluate this condition expression to determine whether to run this stage","$ref":"#/definitions/string"},"variables":{"description":"Stage-specific variables","$ref":"#/definitions/variables"},"jobs":{"description":"Jobs which make up the stage","$ref":"#/definitions/jobs"},"lockBehavior":{"description":"Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests","$ref":"#/definitions/lockBehavior"}},"additionalProperties":false,"firstProperty":["stage"]},{"type":"object","properties":{"template":{"description":"Reference to a template for this stage","$ref":"#/definitions/nonEmptyString"},"parameters":{"description":"Parameters used in a stage template","$ref":"#/definitions/mapping"}},"additionalProperties":false,"firstProperty":["template"]}]},"lockBehavior":{"anyOf":[{"type":"string","pattern":"^sequential$"},{"type":"string","pattern":"^runLatest$"}]},"extendsParameters":{"type":"array","items":{"$ref":"#/definitions/templateParameter"}},"extendsTemplate":{"anyOf":[{"type":"object","properties":{"stages":{"$ref":"#/definitions/stages"},"trigger":{"$ref":"#/definitions/trigger"},"resources":{"$ref":"#/definitions/resources"},"parameters":{"$ref":"#/definitions/extendsParameters"},"variables":{"$ref":"#/definitions/variables"}},"additionalProperties":false},{"type":"object","properties":{"jobs":{"$ref":"#/definitions/jobs"},"trigger":{"$ref":"#/definitions/trigger"},"resources":{"$ref":"#/definitions/resources"},"parameters":{"$ref":"#/definitions/extendsParameters"},"variables":{"$ref":"#/definitions/variables"}},"additionalProperties":false},{"type":"object","properties":{"steps":{"$ref":"#/definitions/steps"},"trigger":{"$ref":"#/definitions/trigger"},"resources":{"$ref":"#/definitions/resources"},"parameters":{"$ref":"#/definitions/extendsParameters"},"variables":{"$ref":"#/definitions/variables"}},"additionalProperties":false},{"type":"object","properties":{"trigger":{"$ref":"#/definitions/trigger"},"resources":{"$ref":"#/definitions/resources"},"parameters":{"$ref":"#/definitions/extendsParameters"},"extends":{"$ref":"#/definitions/extends"}},"additionalProperties":false}]},"extendsTemplateBase":{"type":"object","properties":{"trigger":{"$ref":"#/definitions/trigger"},"resources":{"$ref":"#/definitions/resources"},"parameters":{"$ref":"#/definitions/extendsParameters"},"variables":{"$ref":"#/definitions/variables"}},"additionalProperties":false},"parametersTemplate":{"anyOf":[{"type":"object","properties":{"parameters":{"description":"Step-specific parameters","$ref":"#/definitions/templateParameters"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"}},"additionalProperties":false,"required":["steps"]},{"type":"object","properties":{"parameters":{"description":"Parameters used in a job template","$ref":"#/definitions/templateParameters"},"jobs":{"description":"Jobs which make up the pipeline","$ref":"#/definitions/jobs"}},"additionalProperties":false},{"type":"object","properties":{"parameters":{"$ref":"#/definitions/templateParameters"},"stages":{"$ref":"#/definitions/stages"}},"additionalProperties":false},{"type":"object","properties":{"resources":{"$ref":"#/definitions/resources"},"parameters":{"$ref":"#/definitions/templateParameters"},"extends":{"description":"Extends a template","$ref":"#/definitions/extends"}},"additionalProperties":false,"required":["extends"]}]},"extends":{"type":"object","properties":{"template":{"$ref":"#/definitions/nonEmptyString"},"parameters":{"description":"Parameters used in the extend","$ref":"#/definitions/mapping"}},"additionalProperties":false},"jobsTemplate":{"anyOf":[{"type":"object","properties":{"parameters":{"description":"Parameters used in a job template","$ref":"#/definitions/templateParameters"},"jobs":{"description":"Jobs which make up the pipeline","$ref":"#/definitions/jobs"}},"additionalProperties":false},{"type":"object","properties":{"parameters":{"description":"Parameters used in a phase template","$ref":"#/definitions/templateParameters"},"phases":{"description":"Phases which make up the pipeline","deprecationMessage":"This option is deprecated, use `jobs` instead","doNotSuggest":true,"$ref":"#/definitions/phases"}},"additionalProperties":false}]},"jobs":{"type":"array","items":{"$ref":"#/definitions/job"}},"job":{"anyOf":[{"type":"object","properties":{"job":{"description":"ID of the job","$ref":"#/definitions/referenceName"},"displayName":{"description":"Human-readable name for the job","$ref":"#/definitions/string"},"dependsOn":{"description":"Any jobs which must complete before this one","$ref":"#/definitions/jobDependsOn"},"condition":{"description":"Evaluate this condition expression to determine whether to run this job","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/jobContinueOnError"},"timeoutInMinutes":{"description":"Time to wait for this job to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"cancelTimeoutInMinutes":{"description":"Time to wait for the job to cancel before forcibly terminating it","$ref":"#/definitions/nonEmptyString"},"variables":{"description":"Job-specific variables","$ref":"#/definitions/variables"},"strategy":{"description":"Execution strategy for this job","$ref":"#/definitions/jobStrategy"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/pool"},"container":{"description":"Container resource name","$ref":"#/definitions/jobContainer"},"services":{"$ref":"#/definitions/jobServices"},"workspace":{"$ref":"#/definitions/jobWorkspace"},"uses":{"description":"Any resources required by this job that are not already referenced","$ref":"#/definitions/explicitResources"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"}},"additionalProperties":false,"firstProperty":["job"]},{"type":"object","properties":{"deployment":{"$ref":"#/definitions/string"},"displayName":{"description":"Human-readable name for the deployment","$ref":"#/definitions/string"},"dependsOn":{"description":"Any jobs which must complete before this one","$ref":"#/definitions/jobDependsOn"},"condition":{"description":"Evaluate this condition expression to determine whether to run this deployment","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/jobContinueOnError"},"timeoutInMinutes":{"description":"Time to wait for this job to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"cancelTimeoutInMinutes":{"description":"Time to wait for the job to cancel before forcibly terminating it","$ref":"#/definitions/nonEmptyString"},"variables":{"description":"Deployment-specific variables","$ref":"#/definitions/variables"},"pool":{"description":"Pool where this job will run","$ref":"#/definitions/pool"},"environment":{"$ref":"#/definitions/deploymentEnvironment"},"strategy":{"description":"Execution strategy for this deployment","$ref":"#/definitions/deploymentStrategy"},"workspace":{"description":"What to clean up before the job runs","$ref":"#/definitions/jobWorkspace"},"uses":{"description":"Any resources required by this job that are not already referenced","$ref":"#/definitions/explicitResources"},"container":{"description":"Container resource name","$ref":"#/definitions/jobContainer"},"services":{"description":"Container resources to run as a service container","$ref":"#/definitions/jobServices"}},"additionalProperties":false,"firstProperty":["deployment"]},{"type":"object","properties":{"template":{"description":"Reference to a template for this deployment","$ref":"#/definitions/nonEmptyString"},"parameters":{"description":"Parameters used in a deployment template","$ref":"#/definitions/mapping"}},"additionalProperties":false,"firstProperty":["template"]}]},"explicitResources":{"type":"object","properties":{"repositories":{"description":"Repository references","$ref":"#/definitions/sequenceOfNonEmptyString"},"pools":{"description":"Pool references","$ref":"#/definitions/sequenceOfNonEmptyString"}},"additionalProperties":false},"pool":{"description":"Pool details","anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"description":"Name of a pool","$ref":"#/definitions/nonEmptyString"},"demands":{"description":"List of demands (for a private pool)","$ref":"#/definitions/poolDemands"}},"additionalProperties":true}]},"poolDemands":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/definitions/nonEmptyString"}}]},"jobContainer":{"anyOf":[{"type":"string"},{"type":"object","properties":{"alias":{"description":"The alias of the container resource","$ref":"#/definitions/string"}},"additionalProperties":false},{"type":"object","properties":{"endpoint":{"description":"ID of the service endpoint connecting to a private container registry","$ref":"#/definitions/string"},"env":{"description":"Variables to map into the container's environment","$ref":"#/definitions/mappingOfStringString"},"image":{"description":"Container image tag","$ref":"#/definitions/string","examples":["ubuntu:16.04","windows:1803"]},"mapDockerSocket":{"description":"Set this flag to false to force the agent not to setup the /var/run/docker.sock volume on container jobs","$ref":"#/definitions/boolean"},"options":{"description":"Options to pass into container host","$ref":"#/definitions/string"},"ports":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"volumes":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"mountReadOnly":{"$ref":"#/definitions/readOnlyMounts"}},"required":["image"]}]},"containerBase":{"type":"object","properties":{"endpoint":{"description":"ID of the service endpoint connecting to a private container registry","$ref":"#/definitions/string"},"env":{"description":"Variables to map into the container's environment","$ref":"#/definitions/mappingOfStringString"},"image":{"description":"Container image tag","$ref":"#/definitions/string","examples":["ubuntu:16.04","windows:1803"]},"mapDockerSocket":{"description":"Set this flag to false to force the agent not to setup the /var/run/docker.sock volume on container jobs","$ref":"#/definitions/boolean"},"options":{"description":"Options to pass into container host","$ref":"#/definitions/string"},"ports":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"volumes":{"$ref":"#/definitions/sequenceOfNonEmptyString"},"mountReadOnly":{"$ref":"#/definitions/readOnlyMounts"}},"additionalProperties":false,"required":["image"]},"readOnlyMounts":{"type":"object","properties":{"work":{"description":"Mount the work directory as readonly","$ref":"#/definitions/boolean"},"externals":{"description":"Mount the externals directory as readonly","$ref":"#/definitions/boolean"},"tools":{"description":"Mount the tools directory as readonly","$ref":"#/definitions/boolean"},"tasks":{"description":"Mount the tasks directory as readonly","$ref":"#/definitions/boolean"}},"additionalProperties":false},"jobServices":{"type":"object","additionalProperties":true},"jobWorkspace":{"type":"object","properties":{"clean":{"description":"Which parts of the workspace should be scorched before fetching","enum":["outputs","resources","all"],"$ref":"#/definitions/string"}},"additionalProperties":false},"jobStrategy":{"anyOf":[{"type":"object","properties":{"matrix":{"$ref":"#/definitions/jobMatrix"},"maxParallel":{"description":"Maximum number of jobs running in parallel","$ref":"#/definitions/nonEmptyString"}},"additionalProperties":false},{"type":"object","properties":{"parallel":{"description":"Run the job this many times","$ref":"#/definitions/nonEmptyString"}},"additionalProperties":false}]},"jobMatrix":{"anyOf":[{"type":"object","additionalProperties":true,"minProperties":1,"patternProperties":{"^[A-Za-z0-9_]+$":{"$ref":"#/definitions/matrixProperties"}}},{"type":"string"}]},"matrixProperties":{"type":"object","description":"Variable-value pair to pass in this matrix instance","additionalProperties":true},"deploymentEnvironment":{"description":"Environment details","anyOf":[{"type":"string"},{"type":"object","properties":{"name":{"description":"Name of environment","$ref":"#/definitions/nonEmptyString"},"resourceName":{"description":"Name of resource","$ref":"#/definitions/nonEmptyString"},"resourceId":{"description":"Id of resource","$ref":"#/definitions/nonEmptyString"},"resourceType":{"description":"Type of environment resource","$ref":"#/definitions/nonEmptyString"},"tags":{"description":"List of tag filters","$ref":"#/definitions/nonEmptyString"}},"additionalProperties":false}]},"deploymentStrategy":{"anyOf":[{"type":"object","properties":{"runOnce":{"description":"RunOnce Deployment strategy","$ref":"#/definitions/runOnceDeploymentStrategy"}},"additionalProperties":false},{"type":"object","properties":{"rolling":{"description":"Rolling Deployment strategy","$ref":"#/definitions/rollingDeploymentStrategy"}},"additionalProperties":false},{"type":"object","properties":{"canary":{"description":"Canary Deployment strategy","$ref":"#/definitions/canaryDeploymentStrategy"}},"additionalProperties":false}]},"preDeployHook":{"type":"object","properties":{"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"},"pool":{"description":"Pool where pre deploy steps will run","$ref":"#/definitions/pool"}},"additionalProperties":false},"deployHook":{"type":"object","properties":{"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"},"pool":{"description":"Pool where deploy steps will run","$ref":"#/definitions/pool"}},"additionalProperties":false},"routeTrafficHook":{"type":"object","properties":{"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"},"pool":{"description":"Pool where route traffic steps will run","$ref":"#/definitions/pool"}},"additionalProperties":false},"postRouteTrafficHook":{"type":"object","properties":{"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"},"pool":{"description":"Pool where post route traffic steps will run","$ref":"#/definitions/pool"}},"additionalProperties":false},"onSuccessOrFailureHook":{"type":"object","properties":{"failure":{"description":"Runs on failure of any step","$ref":"#/definitions/onFailureHook"},"success":{"description":"Runs on success of all of the steps","$ref":"#/definitions/onSuccessHook"}},"additionalProperties":false},"onFailureHook":{"type":"object","properties":{"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"},"pool":{"description":"Pool where post on failure steps will run","$ref":"#/definitions/pool"}},"additionalProperties":false},"onSuccessHook":{"type":"object","properties":{"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"},"pool":{"description":"Pool where on success steps will run","$ref":"#/definitions/pool"}},"additionalProperties":false},"runOnceDeploymentStrategy":{"type":"object","properties":{"preDeploy":{"description":"Pre deploy hook for runOnce deployment strategy","$ref":"#/definitions/preDeployHook"},"deploy":{"description":"Deploy hook for runOnce deployment strategy","$ref":"#/definitions/deployHook"},"routeTraffic":{"description":"Route traffic hook for runOnce deployment strategy","$ref":"#/definitions/routeTrafficHook"},"postRouteTraffic":{"description":"Post route traffic hook for runOnce deployment strategy","$ref":"#/definitions/postRouteTrafficHook"},"on":{"description":"On success or failure hook for runOnce deployment strategy","$ref":"#/definitions/onSuccessOrFailureHook"}},"additionalProperties":false},"rollingDeploymentStrategy":{"type":"object","properties":{"maxParallel":{"description":"Maximum number of jobs running in parallel","$ref":"#/definitions/nonEmptyString"},"preDeploy":{"description":"Pre deploy hook for rolling deployment strategy","$ref":"#/definitions/preDeployHook"},"deploy":{"description":"Deploy hook for rolling deployment strategy","$ref":"#/definitions/deployHook"},"routeTraffic":{"description":"Route traffic hook for rolling deployment strategy","$ref":"#/definitions/routeTrafficHook"},"postRouteTraffic":{"description":"Post route traffic hook for rolling deployment strategy","$ref":"#/definitions/postRouteTrafficHook"},"on":{"description":"On success or failure hook for rolling deployment strategy","$ref":"#/definitions/onSuccessOrFailureHook"}},"additionalProperties":false},"canaryDeploymentStrategy":{"type":"object","properties":{"increments":{"description":"Maximum batch size for deployment","$ref":"#/definitions/canaryDeploymentIncrements"},"preDeploy":{"description":"Pre deploy hook for canary deployment strategy","$ref":"#/definitions/preDeployHook"},"deploy":{"description":"Deploy hook for canary deployment strategy","$ref":"#/definitions/deployHook"},"routeTraffic":{"description":"Route traffic hook for canary deployment strategy","$ref":"#/definitions/routeTrafficHook"},"postRouteTraffic":{"description":"Post route traffic hook for canary deployment strategy","$ref":"#/definitions/postRouteTrafficHook"},"on":{"description":"On success or failure hook for canary deployment strategy","$ref":"#/definitions/onSuccessOrFailureHook"}},"additionalProperties":false},"canaryDeploymentIncrements":{"type":"array","items":{"$ref":"#/definitions/nonEmptyString"}},"phases":{"type":"array","deprecationMessage":"This option is deprecated, use `jobs` instead","items":{"$ref":"#/definitions/phase"}},"phase":{"deprecationMessage":"This option is deprecated, use `job` (inside `jobs`) instead","anyOf":[{"type":"object","properties":{"phase":{"description":"ID of the phase","$ref":"#/definitions/referenceName"},"dependsOn":{"description":"Any phases which must complete before this one","$ref":"#/definitions/jobDependsOn"},"displayName":{"description":"Human-readable name of the phase","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this phase","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/jobContinueOnError"},"queue":{"description":"Queue where this phase will run","deprecationMessage":"This option is deprecated, use pool instead","doNotSuggest":true,"$ref":"#/definitions/phaseQueueTarget"},"variables":{"description":"Phase-specific variables","$ref":"#/definitions/variables"},"steps":{"description":"A list of steps to run in this phase","$ref":"#/definitions/steps"}},"additionalProperties":false,"firstProperty":["phase"]},{"type":"object","properties":{"phase":{"description":"ID of the phase","$ref":"#/definitions/referenceName"},"dependsOn":{"description":"Any phases which must complete before this one","$ref":"#/definitions/jobDependsOn"},"displayName":{"description":"Human-readable name of the phase","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this phase","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/jobContinueOnError"},"server":{"description":"True if this is an agent-less phase (runs on server)","deprecationMessage":"This option is deprecated, use pool:server instead","doNotSuggest":true,"$ref":"#/definitions/phaseServerTarget"},"variables":{"description":"Phase-specific variables","$ref":"#/definitions/variables"},"steps":{"description":"A list of steps to run in this phase","$ref":"#/definitions/steps"}},"additionalProperties":false,"firstProperty":["phase"]},{"type":"object","properties":{"template":{"description":"Reference to a template for this phase","$ref":"#/definitions/nonEmptyString"},"parameters":{"description":"Parameters used in a phase template","$ref":"#/definitions/mapping"}},"additionalProperties":false,"firstProperty":["template"]}]},"phaseQueueTarget":{"description":"Queue details","deprecationMessage":"This option is deprecated, use `pool` under `jobs` instead","anyOf":[{"type":"string"},{"type":"object","properties":{"cancelTimeoutInMinutes":{"description":"Time to wait for the phase to cancel before forcibly terminating it","$ref":"#/definitions/nonEmptyString"},"container":{"description":"Container resource name","$ref":"#/definitions/nonEmptyString"},"demands":{"description":"List of demands (for a private queue)","$ref":"#/definitions/phaseTargetDemands"},"matrix":{"$ref":"#/definitions/phaseTargetMatrix"},"name":{"description":"Name of a queue","$ref":"#/definitions/string"},"parallel":{"description":"Maximum number of parallel agent executions","$ref":"#/definitions/nonEmptyString"},"timeoutInMinutes":{"description":"Time to wait before cancelling the phase","$ref":"#/definitions/nonEmptyString"},"workspace":{"$ref":"#/definitions/phaseTargetWorkspace"}},"additionalProperties":false}]},"phaseServerTarget":{"anyOf":[{"type":"string"},{"type":"object","properties":{"cancelTimeoutInMinutes":{"description":"Time to wait for the job to cancel before forcibly terminating it","$ref":"#/definitions/nonEmptyString"},"matrix":{"$ref":"#/definitions/phaseTargetMatrix"},"parallel":{"description":"Maximum number of parallel agent executions","$ref":"#/definitions/nonEmptyString"},"timeoutInMinutes":{"description":"Time to wait before cancelling the job","$ref":"#/definitions/nonEmptyString"}},"additionalProperties":false}]},"phaseTargetDemands":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/definitions/nonEmptyString"}}]},"phaseTargetWorkspace":{"type":"object","properties":{"clean":{"description":"Scorch the repo before fetching?","enum":["outputs","resources","all"],"$ref":"#/definitions/string"}},"additionalProperties":false},"phaseTargetMatrix":{"description":"List of permutations of variable values to run","anyOf":[{"type":"object","additionalProperties":true},{"type":"string"}],"minProperties":1,"patternProperties":{"^[A-Za-z0-9_]+$":{"$ref":"#/definitions/matrixProperties"}}},"stepsTemplate":{"type":"object","properties":{"parameters":{"description":"Step-specific parameters","$ref":"#/definitions/templateParameters"},"steps":{"description":"A list of steps to run","$ref":"#/definitions/steps"}},"additionalProperties":false},"steps":{"type":"array","items":{"$ref":"#/definitions/step"}},"step":{"anyOf":[{"type":"object","$ref":"#/definitions/task"},{"type":"object","properties":{"script":{"description":"An inline script","$ref":"#/definitions/string"},"failOnStderr":{"description":"Fail the task if output is sent to Stderr?","$ref":"#/definitions/string"},"workingDirectory":{"description":"Start the script with this working directory","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["script"],"required":["script"]},{"type":"object","properties":{"powershell":{"description":"Inline PowerShell or reference to a PowerShell file","$ref":"#/definitions/string"},"errorActionPreference":{"$ref":"#/definitions/string"},"failOnStderr":{"description":"Fail the task if output is sent to Stderr?","$ref":"#/definitions/string"},"ignoreLASTEXITCODE":{"description":"Check the final exit code of the script to determine whether the step succeeded?","$ref":"#/definitions/string"},"workingDirectory":{"description":"Start the script with this working directory","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["powershell"],"required":["powershell"]},{"type":"object","properties":{"pwsh":{"description":"Inline PowerShell or reference to a PowerShell file","$ref":"#/definitions/string"},"errorActionPreference":{"$ref":"#/definitions/string"},"failOnStderr":{"description":"Fail the task if output is sent to Stderr?","$ref":"#/definitions/string"},"ignoreLASTEXITCODE":{"description":"Check the final exit code of the script to determine whether the step succeeded?","$ref":"#/definitions/string"},"workingDirectory":{"description":"Start the script with this working directory","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["pwsh"],"required":["pwsh"]},{"type":"object","properties":{"bash":{"description":"An inline script","$ref":"#/definitions/string"},"failOnStderr":{"description":"Fail the task if output is sent to Stderr?","$ref":"#/definitions/string"},"workingDirectory":{"description":"Start the script with this working directory","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["bash"],"required":["bash"]},{"type":"object","properties":{"checkout":{"description":"Alias of the repository resource to check out or 'none'","$ref":"#/definitions/string"},"clean":{"description":"Scorch the repo before fetching?","enum":["true","false"],"$ref":"#/definitions/string"},"fetchDepth":{"description":"Depth of Git graph to fetch","$ref":"#/definitions/string"},"lfs":{"description":"Fetch Git-LFS objects?","$ref":"#/definitions/string"},"persistCredentials":{"description":"Keep credentials available for later use?","$ref":"#/definitions/string"},"submodules":{"description":"Check out Git submodules?","$ref":"#/definitions/string"},"path":{"description":"Path of the repository to check out","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["checkout"]},{"type":"object","properties":{"download":{"description":"Reference to the pipeline","$ref":"#/definitions/nonEmptyString"},"artifact":{"description":"Name of the artifact to download","$ref":"#/definitions/nonEmptyString"},"patterns":{"description":"Pattern to download files from artifact","$ref":"#/definitions/nonEmptyString"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["download"],"required":["download"]},{"type":"object","properties":{"downloadBuild":{"description":"ID for the build resource","$ref":"#/definitions/nonEmptyString"},"artifact":{"description":"Name of the artifact to download","$ref":"#/definitions/string"},"path":{"description":"Path to download the artifact into","$ref":"#/definitions/string"},"patterns":{"description":"Downloads the files which matches the patterns","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["downloadBuild"]},{"type":"object","properties":{"getPackage":{"description":"ID for the package resource","$ref":"#/definitions/nonEmptyString"},"path":{"description":"Path to download the package into","$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["getPackage"]},{"type":"object","properties":{"upload":{"deprecationMessage":"This option is deprecated, use `publish` instead","doNotSuggest":true,"$ref":"#/definitions/string"},"artifact":{"$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["upload"]},{"type":"object","properties":{"publish":{"$ref":"#/definitions/string"},"artifact":{"$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["publish"]},{"type":"object","properties":{"template":{"description":"Reference to a template for this step","$ref":"#/definitions/nonEmptyString"},"parameters":{"description":"Parameters used in a step template","$ref":"#/definitions/mapping"}},"additionalProperties":false,"firstProperty":["template"]},{"type":"object","properties":{"restoreCache":{"description":"The name of the key","$ref":"#/definitions/nonEmptyString"},"path":{"description":"The folder path to download the cache to. This can be a fully-qualified path or a path relative to the root of the repository. Wildcards are not supported.","$ref":"#/definitions/nonEmptyString"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["restoreCache"],"required":["restoreCache","path"]},{"type":"object","properties":{"saveCache":{"description":"The name of the key","$ref":"#/definitions/nonEmptyString"},"path":{"description":"The folder or file path to publish. This can be a fully-qualified path or a path relative to the root of the repository. Wildcards are not supported.","$ref":"#/definitions/nonEmptyString"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["saveCache"],"required":["saveCache","path"]},{"type":"object","properties":{"reviewApp":{"$ref":"#/definitions/string"},"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false,"firstProperty":["reviewApp"]}]},"stepTarget":{"description":"Step target","anyOf":[{"type":"string"},{"type":"object","properties":{"container":{"description":"Container to target (or 'host' for host machine)","$ref":"#/definitions/nonEmptyString"},"commands":{"description":"Set of allowed logging commands ('any' or 'restricted')","enum":["any","restricted"],"$ref":"#/definitions/string"},"settableVariables":{"description":"Restrictions on which variables that can be set","$ref":"#/definitions/variableRestrictions"}},"additionalProperties":false}]},"variableRestrictions":{"anyOf":[{"type":"string","ignoreCase":"value","pattern":"^none$"},{"type":"array","items":{"$ref":"#/definitions/nonEmptyString"}}]},"jobDecoratorSteps":{"type":"object","properties":{"steps":{"description":"A list of steps to run in this job","$ref":"#/definitions/tasks"}},"additionalProperties":false},"tasks":{"type":"array","items":{"$ref":"#/definitions/task"}},"taskBase":{"type":"object","properties":{"condition":{"description":"Evaluate this condition expression to determine whether to run this task","$ref":"#/definitions/string"},"continueOnError":{"description":"Continue running even on failure?","$ref":"#/definitions/boolean"},"displayName":{"description":"Human-readable name for the task","$ref":"#/definitions/string"},"target":{"description":"Environment in which to run this task","$ref":"#/definitions/stepTarget"},"enabled":{"description":"Run this task when the job runs?","$ref":"#/definitions/boolean"},"env":{"description":"Variables to map into the process's environment","$ref":"#/definitions/mappingOfStringString"},"name":{"description":"ID of the step","$ref":"#/definitions/referenceName"},"timeoutInMinutes":{"description":"Time to wait for this task to complete before the server kills it","$ref":"#/definitions/nonEmptyString"},"retryCountOnTaskFailure":{"description":"Number of retries if the task fails","$ref":"#/definitions/string"}},"additionalProperties":false},"jobContinueOnError":{"type":"string"},"jobDependsOn":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/definitions/string"}}]},"referenceName":{"type":"string","pattern":"^[-_A-Za-z0-9]*$"},"boolean":{"anyOf":[{"type":"string","ignoreCase":"value","pattern":"^true$"},{"type":"string","ignoreCase":"value","pattern":"^y$"},{"type":"string","ignoreCase":"value","pattern":"^yes$"},{"type":"string","ignoreCase":"value","pattern":"^on$"},{"type":"string","ignoreCase":"value","pattern":"^false$"},{"type":"string","ignoreCase":"value","pattern":"^n$"},{"type":"string","ignoreCase":"value","pattern":"^no$"},{"type":"string","ignoreCase":"value","pattern":"^off$"}]},"string_allowExpressions":{"type":"string"},"nonEmptyString":{"type":"string"},"sequenceOfNonEmptyString":{"type":"array","items":{"$ref":"#/definitions/nonEmptyString"}},"mappingOfStringString":{"type":"object","additionalProperties":true},"any_allowExpressions":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/definitions/any"}},{"type":"object","additionalProperties":true}]},"task":{"type":"object","properties":{"task":{"anyOf":[{"description":"A variant of the Codesign Validation build task that auto-runs on Production builds.","doNotSuggest":false,"ignoreCase":"value","enum":["CodeSignValidationInjected@1"]},{"description":"Run a PowerShell script on Linux, macOS, or Windows","doNotSuggest":false,"ignoreCase":"value","enum":["PowerShell@2"]},{"description":"Run a PowerShell script","doNotSuggest":false,"ignoreCase":"value","enum":["PowerShell@1"]},{"description":"Run a PowerShell script within an Azure environment","doNotSuggest":false,"ignoreCase":"value","enum":["AzurePowerShell@5"]},{"description":"Run a PowerShell script within an Azure environment","doNotSuggest":false,"ignoreCase":"value","enum":["AzurePowerShell@2"]},{"description":"Run a PowerShell script within an Azure environment","doNotSuggest":false,"ignoreCase":"value","enum":["AzurePowerShell@3"]},{"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,"ignoreCase":"value","enum":["AzurePowerShell@1"]},{"description":"Run scripts and make changes to a MySQL Database","doNotSuggest":false,"ignoreCase":"value","enum":["MysqlDeploymentOnMachineGroup@1"]},{"description":"Installs and configures the MicroBuild Prefast plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildPrefastPlugin@2"]},{"description":"Authentication task for the pip client used for installing Python distributions","doNotSuggest":false,"ignoreCase":"value","enum":["PipAuthenticate@1"]},{"description":"Authentication task for the pip client used for installing Python distributions","doNotSuggest":false,"ignoreCase":"value","enum":["PipAuthenticate@0"]},{"description":"Build, test, and deploy with Apache Maven","doNotSuggest":false,"ignoreCase":"value","enum":["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":"Zip Files and Folder","doNotSuggest":false,"ignoreCase":"value","enum":["zip@0"]},{"description":"Publish Symbols to Artifact Services - Internal Preview","doNotSuggest":false,"ignoreCase":"value","enum":["artifactSymbolTask@0"]},{"description":"Run a powershell script to rollback deployments. Task execution context is available in the powershell context for implementing conditional rollback","doNotSuggest":false,"ignoreCase":"value","enum":["Rollback@1"]},{"description":"Build, test, package, or publish a dotnet application, or run a custom dotnet command","doNotSuggest":false,"ignoreCase":"value","enum":["DotNetCoreCLI@2"]},{"description":"Build, test and publish using dotnet core command-line.","deprecationMessage":"DotNetCoreCLI is deprecated - Build, test and publish using dotnet core command-line.","doNotSuggest":true,"ignoreCase":"value","enum":["DotNetCoreCLI@0"]},{"description":"Build, test and publish using dotnet core command-line.","doNotSuggest":false,"ignoreCase":"value","enum":["DotNetCoreCLI@1"]},{"description":"Tokenizes a file.","doNotSuggest":false,"ignoreCase":"value","enum":["JSONTokenizer@1"]},{"description":"Send start job telemetry for .NET Core builds","doNotSuggest":false,"ignoreCase":"value","enum":["SendStartTelemetry@0"]},{"description":"This task is deprecated. Use 'NuGet' instead.","deprecationMessage":"XamarinComponentRestore is deprecated - This task is deprecated. Use 'NuGet' instead.","doNotSuggest":true,"ignoreCase":"value","enum":["XamarinComponentRestore@0"]},{"description":"ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats.","doNotSuggest":false,"ignoreCase":"value","enum":["reportgenerator@5"]},{"description":"ReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats.","doNotSuggest":false,"ignoreCase":"value","enum":["reportgenerator@4"]},{"description":"Update Azure App Service using Web Deploy / Kudu REST APIs","doNotSuggest":false,"ignoreCase":"value","enum":["AzureRmWebAppDeployment@2"]},{"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@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","doNotSuggest":false,"ignoreCase":"value","enum":["AzureRmWebAppDeployment@4"]},{"description":"Execute PowerShell scripts on remote machine(s)","doNotSuggest":false,"ignoreCase":"value","enum":["PowerShellOnTargetMachines@1"]},{"description":"Execute PowerShell scripts on remote machines using PSSession and Invoke-Command for remoting","doNotSuggest":false,"ignoreCase":"value","enum":["PowerShellOnTargetMachines@3"]},{"description":"Execute PowerShell scripts on remote machine(s)","doNotSuggest":false,"ignoreCase":"value","enum":["PowerShellOnTargetMachines@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.","doNotSuggest":true,"ignoreCase":"value","enum":["RunVisualStudioTestsusingTestAgent@1"]},{"description":"Execute bash script","doNotSuggest":false,"ignoreCase":"value","enum":["Shellpp@0"]},{"description":"Pause deployment and wait for manual intervention","doNotSuggest":false,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["InstallAppleProvisioningProfile@0"]},{"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","doNotSuggest":true,"ignoreCase":"value","enum":["SonarQubePostTest@1"]},{"description":"Indexes repository and stores navigation information","doNotSuggest":false,"ignoreCase":"value","enum":["RichCodeNavIndexer@0"]},{"description":"Creates a PR for a Payload Insertion into VS","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildInsertVsPayload@3"]},{"description":"Creates a PR for a Payload Insertion into VS","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildInsertVsPayload@4"]},{"description":"Create and upload an sdist or wheel to a PyPI-compatible index using Twine","doNotSuggest":false,"ignoreCase":"value","enum":["PyPIPublisher@0"]},{"description":"Run scripts with Knife commands on your Chef workstation","deprecationMessage":"ChefKnife is deprecated - Run scripts with Knife commands on your Chef workstation","doNotSuggest":true,"ignoreCase":"value","enum":["ChefKnife@1"]},{"description":"Find in cache or download a specific version of Go and add it to the PATH","doNotSuggest":false,"ignoreCase":"value","enum":["GoTool@0"]},{"description":"Routes traffic of a Web App to an App Slot by the specified percentage","doNotSuggest":false,"ignoreCase":"value","enum":["azureWebAppRouteTraffic@0"]},{"description":"Generate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)","deprecationMessage":"XcodePackageiOS is deprecated - Generate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)","doNotSuggest":true,"ignoreCase":"value","enum":["XcodePackageiOS@0"]},{"description":"Get, build, or test a Go application, or run a custom Go command","doNotSuggest":false,"ignoreCase":"value","enum":["Go@0"]},{"description":"Replaces ____ and/or XPath for XML documents with User Defined variables or configuration json document","doNotSuggest":false,"ignoreCase":"value","enum":["Tokenizer@2"]},{"description":"Publish Pipeline Metadata to Evidence store","doNotSuggest":false,"ignoreCase":"value","enum":["PublishPipelineMetadata@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,"ignoreCase":"value","enum":["Docker@2"]},{"description":"Build, tag, push, or run Docker images, or run a Docker command","doNotSuggest":false,"ignoreCase":"value","enum":["Docker@0"]},{"description":"Publish to Artifact Services Drop - Internal Preview","doNotSuggest":false,"ignoreCase":"value","enum":["artifactDropTask@0"]},{"description":"Queue a job on a Jenkins server","doNotSuggest":false,"ignoreCase":"value","enum":["JenkinsQueueJob@2"]},{"description":"Queue a job on a Jenkins server","doNotSuggest":false,"ignoreCase":"value","enum":["JenkinsQueueJob@1"]},{"description":"Upload files using FTP","doNotSuggest":false,"ignoreCase":"value","enum":["FtpUpload@1"]},{"description":"Upload files using FTP","doNotSuggest":false,"ignoreCase":"value","enum":["FtpUpload@2"]},{"description":"Copy files to remote Windows machines","doNotSuggest":false,"ignoreCase":"value","enum":["WindowsMachineFileCopy@1"]},{"description":"Copy files to remote Windows machines","doNotSuggest":false,"ignoreCase":"value","enum":["WindowsMachineFileCopy@2"]},{"description":"Send an email to 1 or more addresses via the SMTP server you provide","doNotSuggest":false,"ignoreCase":"value","enum":["SendEmail@1"]},{"description":"[Deprecated] Use Gradle","deprecationMessage":"AndroidBuild is deprecated - [Deprecated] Use Gradle","doNotSuggest":true,"ignoreCase":"value","enum":["AndroidBuild@1"]},{"description":"Authenticate 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.","doNotSuggest":false,"ignoreCase":"value","enum":["TwineAuthenticate@1"]},{"description":"Authenticate 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.","doNotSuggest":false,"ignoreCase":"value","enum":["TwineAuthenticate@0"]},{"description":"Deploy a website or web application using Web Deploy","doNotSuggest":false,"ignoreCase":"value","enum":["IISWebAppDeploymentOnMachineGroup@0"]},{"description":"Run a Python file or inline script","doNotSuggest":false,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["HelmInstaller@0"]},{"description":"[Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com","deprecationMessage":"XamarinLicense is deprecated - [Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com","doNotSuggest":true,"ignoreCase":"value","enum":["XamarinLicense@1"]},{"description":"Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 2.1.400, or MSBuild >= 15.8.166.59604","doNotSuggest":false,"ignoreCase":"value","enum":["NuGetAuthenticate@0"]},{"description":"Include with your build to enable automatic Component Governance detection.","doNotSuggest":false,"ignoreCase":"value","enum":["ComponentGovernanceComponentDetection@0"]},{"description":"Restore your nuget packages using dotnet CLI","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadGitHubNugetPackage@1"]},{"description":"Provides credentials for Azure Artifacts feeds and external maven repositories","doNotSuggest":false,"ignoreCase":"value","enum":["MavenAuthenticate@0"]},{"description":"Use this task under deploy phase provider to create a resource dynamically","doNotSuggest":false,"ignoreCase":"value","enum":["ReviewApp@0"]},{"description":"Acquire a specific version of Java from a user-supplied Azure blob or the tool cache and sets JAVA_HOME","doNotSuggest":false,"ignoreCase":"value","enum":["JavaToolInstaller@0"]},{"description":"Deploy to Chef environments by editing environment attributes","deprecationMessage":"Chef is deprecated - Deploy to Chef environments by editing environment attributes","doNotSuggest":true,"ignoreCase":"value","enum":["Chef@1"]},{"description":"Update a function app with .NET, Python, JavaScript, PowerShell, Java based web applications","doNotSuggest":false,"ignoreCase":"value","enum":["AzureFunctionApp@1"]},{"description":"Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.","doNotSuggest":false,"ignoreCase":"value","enum":["npmAuthenticate@0"]},{"description":"Build with MSBuild","doNotSuggest":false,"ignoreCase":"value","enum":["MSBuild@1"]},{"description":"Adds a coverage trend summary section to the build report.","doNotSuggest":false,"ignoreCase":"value","enum":["CoverageGate@1"]},{"description":"Build a machine image using Packer, which may be used for Azure Virtual machine scale set deployment","doNotSuggest":false,"ignoreCase":"value","enum":["PackerBuild@1"]},{"description":"Build a machine image using Packer, which may be used for Azure Virtual machine scale set deployment","doNotSuggest":false,"ignoreCase":"value","enum":["PackerBuild@0"]},{"description":"Installs and configures the MicroBuild signing plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSigningPlugin@4"]},{"description":"Installs and configures the MicroBuild signing plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSigningPlugin@1"]},{"description":"[Test-Xamarin-0.999.10 (all-lock)] Installs and configures the MicroBuild signing plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSigningPlugin@0"]},{"description":"Installs and configures the MicroBuild signing plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSigningPlugin@3"]},{"description":"Installs and configures the MicroBuild signing plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSigningPlugin@2"]},{"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":"NuGetPackager 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.","doNotSuggest":true,"ignoreCase":"value","enum":["NuGetPackager@0"]},{"description":"Automatically updates the versions of a packaged Service Fabric application.","doNotSuggest":false,"ignoreCase":"value","enum":["ServiceFabricUpdateAppVersions@1"]},{"description":"Automatically update portions of application and service manifests in a packaged Azure Service Fabric application","doNotSuggest":false,"ignoreCase":"value","enum":["ServiceFabricUpdateManifests@2"]},{"description":"Install a specified version of Duffle for installing and managing CNAB bundles","doNotSuggest":false,"ignoreCase":"value","enum":["DuffleInstaller@0"]},{"description":"Observe the configured Azure Monitor rules for active alerts","doNotSuggest":false,"ignoreCase":"value","enum":["AzureMonitor@1"]},{"description":"Observe the configured classic Azure Monitor rules for active alerts","deprecationMessage":"AzureMonitor is deprecated - Observe the configured classic Azure Monitor rules for active alerts","doNotSuggest":true,"ignoreCase":"value","enum":["AzureMonitor@0"]},{"description":"Task to generate runsettings and ADO Drop Urls as artifacts.","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildGenerateTestArtifacts@1"]},{"description":"Connect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool","doNotSuggest":false,"ignoreCase":"value","enum":["AzureNLBManagement@1"]},{"description":"Run an Apache JMeter load test in the cloud","deprecationMessage":"ApacheJMeterLoadTest is deprecated - Run an Apache JMeter load test in the cloud","doNotSuggest":true,"ignoreCase":"value","enum":["ApacheJMeterLoadTest@1"]},{"description":"Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.","doNotSuggest":false,"ignoreCase":"value","enum":["DockerCompose@0"]},{"description":"Configure alerts on available metrics for an Azure resource (Deprecated)","doNotSuggest":false,"ignoreCase":"value","enum":["AzureMonitorAlerts@0"]},{"description":"[Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.","deprecationMessage":"XamarinTestCloud is deprecated - [Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.","doNotSuggest":true,"ignoreCase":"value","enum":["XamarinTestCloud@1"]},{"description":"Deploy an Azure Service Fabric application to a cluster","doNotSuggest":false,"ignoreCase":"value","enum":["ServiceFabricDeploy@1"]},{"description":"Uploads MicroBuild telemetry. This step should be added at the end of every definition using MicroBuild tasks.","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildCleanup@1"]},{"description":"Installs and configures the MicroBuild OptProf plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildOptProfPlugin@3"]},{"description":"Installs and configures the MicroBuild OptProf plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildOptProfPlugin@2"]},{"description":"Installs and configures the MicroBuild OptProf plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildOptProfPlugin@6"]},{"description":"Installs and configures the MicroBuild OptProf plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildOptProfPlugin@4"]},{"description":"Installs and configures the MicroBuild OptProf plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildOptProfPlugin@5"]},{"description":"Installs and configures the MicroBuild OptProf plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildOptProfPlugin@1"]},{"description":"Build an Xcode workspace on Mac OS","doNotSuggest":false,"ignoreCase":"value","enum":["Xcode@2"]},{"description":"Build, test, or archive an Xcode workspace on macOS. Optionally package an app.","doNotSuggest":false,"ignoreCase":"value","enum":["Xcode@5"]},{"description":"Build an Xcode workspace on macOS","doNotSuggest":false,"ignoreCase":"value","enum":["Xcode@3"]},{"description":"Build, test, or archive an Xcode workspace on macOS. Optionally package an app.","doNotSuggest":false,"ignoreCase":"value","enum":["Xcode@4"]},{"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":"NuGetPublisher 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.","doNotSuggest":true,"ignoreCase":"value","enum":["NuGetPublisher@0"]},{"description":"Updates the version number of the assemblies to match the build number","doNotSuggest":false,"ignoreCase":"value","enum":["VersionAssemblies@2"]},{"description":"Execute a work item query and check the number of items returned","doNotSuggest":false,"ignoreCase":"value","enum":["queryWorkItems@0"]},{"description":"Installs and configures the MicroBuild IBCMerge plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildIBCMergePlugin@1"]},{"description":"Installs and configures the MicroBuild IBCMerge plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildIBCMergePlugin@0"]},{"description":"Deploy containers to Azure App Service","doNotSuggest":false,"ignoreCase":"value","enum":["AzureWebAppContainer@1"]},{"description":"Deploy a SQL Server database using DACPAC or SQL scripts","doNotSuggest":false,"ignoreCase":"value","enum":["SqlDacpacDeploymentOnMachineGroup@0"]},{"description":"Cache files between runs","doNotSuggest":false,"ignoreCase":"value","enum":["CacheBeta@1"]},{"description":"Cache files between runs","doNotSuggest":false,"ignoreCase":"value","enum":["Cache@2"]},{"description":"Cache files between runs","doNotSuggest":false,"ignoreCase":"value","enum":["CacheBeta@0"]},{"description":"Installs and configures the MicroBuild FXCop plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildFXCopPlugin@2"]},{"description":"Build with the CMake cross-platform build system","doNotSuggest":false,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["VSMobileCenterTest@0"]},{"description":"Finds or Downloads and caches specified version spec of EsrpClient CLI and adds it to the PATH. In addition it will set esrpclient.toolpath and esrpclient.toolname task output variables which you can use in subsequent tasks or build scripts","doNotSuggest":false,"ignoreCase":"value","enum":["EsrpClientTool@1"]},{"description":"Download a secure file to the agent machine","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadSecureFile@1"]},{"description":"Use the specified version of Ruby from the tool cache, optionally adding it to the PATH","doNotSuggest":false,"ignoreCase":"value","enum":["UseRubyVersion@0"]},{"description":"Run the Grunt JavaScript task runner","doNotSuggest":false,"ignoreCase":"value","enum":["Grunt@0"]},{"description":"Deploy an Azure SQL Database using DACPAC or run scripts using SQLCMD","doNotSuggest":false,"ignoreCase":"value","enum":["SqlAzureDacpacDeployment@1"]},{"description":"Uses container-structure-test (https://github.com/GoogleContainerTools/container-structure-test) to validate the structure of an image based on four categories of tests - command tests, file existence tests, file content tests and metadata tests","doNotSuggest":false,"ignoreCase":"value","enum":["ContainerStructureTest@0"]},{"description":"Deploy using MSDeploy, then create/update websites and app pools","deprecationMessage":"IISWebAppDeployment is deprecated - Deploy using MSDeploy, then create/update websites and app pools","doNotSuggest":true,"ignoreCase":"value","enum":["IISWebAppDeployment@1"]},{"description":"Run a load test in the cloud with Azure Pipelines","deprecationMessage":"CloudLoadTest is deprecated - Run a load test in the cloud with Azure Pipelines","doNotSuggest":true,"ignoreCase":"value","enum":["CloudLoadTest@1"]},{"description":"Validates that pipelines use secure and compliant Azure DevOps pools","doNotSuggest":false,"ignoreCase":"value","enum":["1ESHostedPoolValidation@1"]},{"description":"Download from Artifact Services Drop - Internal Preview","doNotSuggest":false,"ignoreCase":"value","enum":["artifactDropDownloadTask@0"]},{"description":"Install Kubectl on agent machine","doNotSuggest":false,"ignoreCase":"value","enum":["KubectlInstaller@0"]},{"description":"Run a command line script using Bash on Linux and macOS and cmd.exe on Windows","doNotSuggest":false,"ignoreCase":"value","enum":["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.","doNotSuggest":true,"ignoreCase":"value","enum":["NuGet@0"]},{"description":"Container Build Task","doNotSuggest":false,"ignoreCase":"value","enum":["ContainerBuild@0"]},{"description":"Send end job telemetry for .NET Core builds","doNotSuggest":false,"ignoreCase":"value","enum":["SendEndTelemetry@0"]},{"description":"Restores NuGet packages in preparation for a Visual Studio Build step.","doNotSuggest":false,"ignoreCase":"value","enum":["NuGetRestore@1"]},{"description":"Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.","doNotSuggest":false,"ignoreCase":"value","enum":["NuGetCommand@2"]},{"description":"Installs or restores missing NuGet packages. Use NuGetAuthenticate@0 task for latest capabilities.","doNotSuggest":false,"ignoreCase":"value","enum":["NuGetInstaller@0"]},{"description":"Invokes the VS Tools for Docker script with optional overrides","deprecationMessage":"DockerPublish is deprecated - Invokes the VS Tools for Docker script with optional overrides","doNotSuggest":true,"ignoreCase":"value","enum":["DockerPublish@0"]},{"description":"Delay further execution of a workflow by a fixed time","doNotSuggest":false,"ignoreCase":"value","enum":["Delay@1"]},{"description":"Submits Mac files to PRSS for signing","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSignMacFiles@1"]},{"description":"Submits Mac files to PRSS for signing","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSignMacFiles@0"]},{"description":"Build an iOS app with Xamarin on macOS","doNotSuggest":false,"ignoreCase":"value","enum":["XamariniOS@2"]},{"description":"Build an iOS app with Xamarin on macOS","doNotSuggest":false,"ignoreCase":"value","enum":["XamariniOS@1"]},{"description":"Analyze repository and generate data files to enable semantic code browsing.","doNotSuggest":false,"ignoreCase":"value","enum":["Ref12Analyze@0"]},{"description":"Publish test results to Azure Pipelines","doNotSuggest":false,"ignoreCase":"value","enum":["PublishTestResults@1"]},{"description":"Publish test results to Azure Pipelines","doNotSuggest":false,"ignoreCase":"value","enum":["PublishTestResults@2"]},{"description":"Copy files to Azure Blob Storage or virtual machines","doNotSuggest":false,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["AzureFileCopy@3"]},{"description":"Copy files to Azure Blob Storage or virtual machines","doNotSuggest":false,"ignoreCase":"value","enum":["AzureFileCopy@4"]},{"description":"Installs and configures the MicroBuild swix plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSwixPlugin@3"]},{"description":"Installs and configures the MicroBuild swix plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSwixPlugin@4"]},{"description":"Installs and configures the MicroBuild swix plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSwixPlugin@2"]},{"description":"Installs and configures the MicroBuild swix plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildSwixPlugin@1"]},{"description":"Index your source code and publish symbols to a file share or Azure Artifacts symbol server","doNotSuggest":false,"ignoreCase":"value","enum":["PublishSymbols@2"]},{"description":"Index your source code and publish symbols to a file share","doNotSuggest":false,"ignoreCase":"value","enum":["PublishSymbols@1"]},{"description":"Copy files or build artifacts to a remote machine over SSH","doNotSuggest":false,"ignoreCase":"value","enum":["CopyFilesOverSSH@0"]},{"description":"Build using a Gradle wrapper script","doNotSuggest":false,"ignoreCase":"value","enum":["Gradle@2"]},{"description":"Build using a Gradle wrapper script","doNotSuggest":false,"ignoreCase":"value","enum":["Gradle@3"]},{"description":"Build using a Gradle wrapper script","doNotSuggest":false,"ignoreCase":"value","enum":["Gradle@1"]},{"description":"Replaces tokens in a file using RegEx. Values come from any variable defined in the current Environment.","doNotSuggest":false,"ignoreCase":"value","enum":["ReplaceTokens@1"]},{"description":"Installs and configures the MicroBuild localization plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildLocalizationPlugin@1"]},{"description":"Installs and configures the MicroBuild localization plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildLocalizationPlugin@4"]},{"description":"Installs and configures the MicroBuild localization plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildLocalizationPlugin@3"]},{"description":"Installs and configures the MicroBuild localization plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildLocalizationPlugin@2"]},{"description":"Microsoft Internal tool for Malware Scanning of files using ESRP Service","doNotSuggest":false,"ignoreCase":"value","enum":["EsrpMalwareScanning@1"]},{"description":"Distribute app builds to testers and users via Visual Studio App Center","doNotSuggest":false,"ignoreCase":"value","enum":["AppCenterDistribute@1"]},{"description":"Distribute app builds to testers and users via Visual Studio App Center","doNotSuggest":false,"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":"Distribute app builds to testers and users via App Center","doNotSuggest":false,"ignoreCase":"value","enum":["AppCenterDistribute@0"]},{"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,"ignoreCase":"value","enum":["NuGetToolInstaller@1"]},{"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,"ignoreCase":"value","enum":["NuGetToolInstaller@0"]},{"description":"Invokes web deploy to Azure website, substituting any Environment variables into the SetParameters.xml file","deprecationMessage":"AzureWebDeploy is deprecated - Invokes web deploy to Azure website, substituting any Environment variables into the SetParameters.xml file","doNotSuggest":true,"ignoreCase":"value","enum":["AzureWebDeploy@0"]},{"description":"Generic LSBuild wrapper which streamlines the localization build process and optionally checks-in resulting localized files to a repo","doNotSuggest":false,"ignoreCase":"value","enum":["OneLocBuild@2"]},{"description":"Download artifacts produced by a Jenkins job","doNotSuggest":false,"ignoreCase":"value","enum":["JenkinsDownloadArtifacts@1"]},{"description":"Update a function app with a Docker container","doNotSuggest":false,"ignoreCase":"value","enum":["AzureFunctionAppContainer@1"]},{"description":"Decrypt a file using OpenSSL","doNotSuggest":false,"ignoreCase":"value","enum":["DecryptFile@1"]},{"description":"Deploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands","doNotSuggest":false,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["InstallAppleCertificate@1"]},{"description":"Install an Apple certificate required to build on a macOS agent","doNotSuggest":false,"ignoreCase":"value","enum":["InstallAppleCertificate@0"]},{"description":"Microsoft Internal tool for Code Signing files using ESRP Service","doNotSuggest":false,"ignoreCase":"value","enum":["EsrpCodeSigning@1"]},{"description":"Invoke an Azure Function","doNotSuggest":false,"ignoreCase":"value","enum":["AzureFunction@1"]},{"description":"Invoke Azure function as a part of your process.","doNotSuggest":false,"ignoreCase":"value","enum":["AzureFunction@0"]},{"description":"A task to scan for vulnerabilities in nuget files.","doNotSuggest":false,"ignoreCase":"value","enum":["nuget-security-analysis@0"]},{"description":"Provides a report on database model changes since the last build","doNotSuggest":false,"ignoreCase":"value","enum":["DacPacReport@1"]},{"description":"Downloads a GitHub Release from a repository","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadGitHubRelease@0"]},{"description":"Run shell commands or a script on a remote machine using SSH","doNotSuggest":false,"ignoreCase":"value","enum":["SSH@0"]},{"description":"Publish (upload) a file or directory as a named artifact for the current run","doNotSuggest":false,"ignoreCase":"value","enum":["PublishPipelineArtifact@1"]},{"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,"ignoreCase":"value","enum":["PublishPipelineArtifact@0"]},{"description":"[DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis","deprecationMessage":"SonarQubePreBuild is deprecated - [DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis","doNotSuggest":true,"ignoreCase":"value","enum":["SonarQubePreBuild@1"]},{"description":"Builds a VS Bootstrapper including the changes of the manifests from one or more components","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildBuildVSBootstrapper@2"]},{"description":"Builds a VS Bootstrapper including the changes of the manifests from one or more components","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildBuildVSBootstrapper@1"]},{"description":"Download artifacts from a file share, like \\\\share\\drop","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadFileshareArtifacts@1"]},{"description":"Deploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands","doNotSuggest":false,"ignoreCase":"value","enum":["Kubernetes@1"]},{"description":"Deploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands","doNotSuggest":false,"ignoreCase":"value","enum":["Kubernetes@0"]},{"description":"Build and deploy an Azure IoT Edge image","doNotSuggest":false,"ignoreCase":"value","enum":["AzureIoTEdge@2"]},{"description":"Deploy a Docker Compose application to an Azure Service Fabric cluster","doNotSuggest":false,"ignoreCase":"value","enum":["ServiceFabricComposeDeploy@0"]},{"description":"Sign and align Android APK files","doNotSuggest":false,"ignoreCase":"value","enum":["AndroidSigning@2"]},{"description":"Sign and align Android APK files","doNotSuggest":false,"ignoreCase":"value","enum":["AndroidSigning@1"]},{"description":"Sign and align Android APK files","doNotSuggest":false,"ignoreCase":"value","enum":["AndroidSigning@3"]},{"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"]},{"description":"Downloads an artifact associated with a pipeline","deprecationMessage":"DownloadPipelineArtifact is deprecated - Downloads an artifact associated with a pipeline","doNotSuggest":true,"ignoreCase":"value","enum":["DownloadPipelineArtifact@0"]},{"description":"Download build and pipeline artifacts","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadPipelineArtifact@2"]},{"description":"Use the specified version of Python from the tool cache, optionally adding it to the PATH","doNotSuggest":false,"ignoreCase":"value","enum":["UsePythonVersion@0"]},{"description":"Scan accessibility issues in an Azure DevOps pipeline","doNotSuggest":false,"ignoreCase":"value","enum":["accessibility-insights@1"]},{"description":"Uploads a Folder to the Azure DevOps Drop Service","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildUploadVstsDropFolder@2"]},{"description":"Uploads a Folder to the Azure DevOps Drop Service","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildUploadVstsDropFolder@1"]},{"description":"Run a PowerShell script in the context of an Azure Service Fabric cluster connection","doNotSuggest":false,"ignoreCase":"value","enum":["ServiceFabricPowerShell@1"]},{"description":"Run tests with Visual Studio test runner","doNotSuggest":false,"ignoreCase":"value","enum":["VSTest@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@2"]},{"description":"[PREVIEW] Pause a pipeline run to wait for manual interaction. Works only with YAML pipelines.","doNotSuggest":false,"ignoreCase":"value","enum":["ManualValidation@0"]},{"description":"Promote nuget packages to a view in VS and VS-CoreXTFeeds","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildPromoteNugetPackages@2"]},{"description":"Build with Apache Ant","doNotSuggest":false,"ignoreCase":"value","enum":["Ant@1"]},{"description":"Deprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests","deprecationMessage":"DeployVisualStudioTestAgent is deprecated - Deprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests","doNotSuggest":true,"ignoreCase":"value","enum":["DeployVisualStudioTestAgent@2"]},{"description":"Deploy and configure Test Agent to run tests on a set of machines","doNotSuggest":false,"ignoreCase":"value","enum":["DeployVisualStudioTestAgent@1"]},{"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.","doNotSuggest":true,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["BatchScript@1"]},{"description":"Install npm packages from GitHub.","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadGithubNpmPackage@1"]},{"description":"Build with MSBuild and set the Visual Studio version property","doNotSuggest":false,"ignoreCase":"value","enum":["VSBuild@1"]},{"description":"Download Azure Key Vault secrets","doNotSuggest":false,"ignoreCase":"value","enum":["AzureKeyVault@1"]},{"description":"Download Azure Key Vault secrets","doNotSuggest":false,"ignoreCase":"value","enum":["AzureKeyVault@2"]},{"description":"Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH","deprecationMessage":"DotNetCoreInstaller is deprecated - Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH","doNotSuggest":true,"ignoreCase":"value","enum":["DotNetCoreInstaller@1"]},{"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":["UseDotNet@2"]},{"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":["DotNetCoreInstaller@0"]},{"description":"Start, stop, restart, slot swap, slot delete, install site extensions or enable continuous monitoring for an Azure App Service","doNotSuggest":false,"ignoreCase":"value","enum":["AzureAppServiceManage@0"]},{"description":"Install Azure Func Core Tools","doNotSuggest":false,"ignoreCase":"value","enum":["FuncToolsInstaller@0"]},{"description":"Replace tokens with variable values in XML or JSON configuration files","doNotSuggest":false,"ignoreCase":"value","enum":["FileTransform@1"]},{"description":"Replace tokens with variable values in XML or JSON configuration files","doNotSuggest":false,"ignoreCase":"value","enum":["FileTransform@2"]},{"description":"Verifies that mac files have been correctly codesigned. This can only be used on Mac hosts.","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildMacSignVerify@0"]},{"description":"Extract a variety of archive and compression files such as .7z, .rar, .tar.gz, and .zip","doNotSuggest":false,"ignoreCase":"value","enum":["ExtractFiles@1"]},{"description":"Build an Android app with Xamarin","doNotSuggest":false,"ignoreCase":"value","enum":["XamarinAndroid@1"]},{"description":"Creates a manifest.json and bsi.json for all the files in a folder. This generated manifest can be used to validate the contents of the folder in the future.","doNotSuggest":false,"ignoreCase":"value","enum":["ManifestGeneratorTask@0"]},{"description":"(Deprecated) Use the PowerShell task version 2 for online scripts","deprecationMessage":"Powershellpp is deprecated - (Deprecated) Use the PowerShell task version 2 for online scripts","doNotSuggest":true,"ignoreCase":"value","enum":["Powershellpp@0"]},{"description":"[DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead","deprecationMessage":"CopyPublishBuildArtifacts is deprecated - [DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead","doNotSuggest":true,"ignoreCase":"value","enum":["CopyPublishBuildArtifacts@1"]},{"description":"Execute Bash on POSIX, CMD on Windows","doNotSuggest":false,"ignoreCase":"value","enum":["BashOrCmd@0"]},{"description":"Download a package from a package management feed in Azure Artifacts","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadPackage@1"]},{"description":"Download a package from a package management feed in Azure Artifacts","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadPackage@0"]},{"description":"This task is deprecated.","deprecationMessage":"MicroBuildStaticDrop is deprecated - This task is deprecated.","doNotSuggest":true,"ignoreCase":"value","enum":["MicroBuildStaticDrop@1"]},{"description":"Deploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines","doNotSuggest":false,"ignoreCase":"value","enum":["AzureResourceGroupDeployment@2"]},{"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@1"]},{"description":"Deploy an Azure Resource Manager (ARM) template to all the deployment scopes","doNotSuggest":false,"ignoreCase":"value","enum":["AzureResourceManagerTemplateDeployment@3"]},{"description":"Invoke REST API as a part of your process.","doNotSuggest":false,"ignoreCase":"value","enum":["InvokeRESTAPI@0"]},{"description":"Invoke a REST API as a part of your pipeline.","doNotSuggest":false,"ignoreCase":"value","enum":["InvokeRESTAPI@1"]},{"description":"Archive files using compression formats such as .7z, .rar, .tar.gz, and .zip.","doNotSuggest":false,"ignoreCase":"value","enum":["ArchiveFiles@1"]},{"description":"Compress files into .7z, .tar.gz, or .zip","doNotSuggest":false,"ignoreCase":"value","enum":["ArchiveFiles@2"]},{"description":"Write a comment to your Github entity i.e. issue or a Pull Request (PR)","doNotSuggest":false,"ignoreCase":"value","enum":["GitHubComment@0"]},{"description":"Copy files from a source folder to a target folder using patterns matching file paths (not folder paths)","doNotSuggest":false,"ignoreCase":"value","enum":["CopyFiles@2"]},{"description":"Copy files from source folder to target folder using minimatch patterns (The minimatch patterns will only match file paths, not folder paths)","doNotSuggest":false,"ignoreCase":"value","enum":["CopyFiles@1"]},{"description":"Run your scripts and make changes to your Azure Database for MySQL","doNotSuggest":false,"ignoreCase":"value","enum":["AzureMysqlDeployment@1"]},{"description":"Install and publish npm packages, or run an npm command. Supports npmjs.com and authenticated registries like Azure Artifacts.","doNotSuggest":false,"ignoreCase":"value","enum":["Npm@1"]},{"description":"Run an npm command. Use NpmAuthenticate@0 task for latest capabilities.","doNotSuggest":false,"ignoreCase":"value","enum":["Npm@0"]},{"description":"Validates a given drop against a manifest generated at build time to verify the integrity of the drop.","doNotSuggest":false,"ignoreCase":"value","enum":["DropValidatorTask@0"]},{"description":"[PREVIEW] Build and deploy an Azure Static Web App","doNotSuggest":false,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["NodeTool@0"]},{"description":"UnZip a package","doNotSuggest":false,"ignoreCase":"value","enum":["unzip@0"]},{"description":"Deploy a SQL Server database using DACPAC","deprecationMessage":"SqlServerDacpacDeployment is deprecated - Deploy a SQL Server database using DACPAC","doNotSuggest":true,"ignoreCase":"value","enum":["SqlServerDacpacDeployment@1"]},{"description":"Acquire the test platform from nuget.org or the tool cache. Satisfies the ‘vstest’ demand and can be used for running tests and collecting diagnostic data using the Visual Studio Test task.","doNotSuggest":false,"ignoreCase":"value","enum":["VisualStudioTestPlatformInstaller@1"]},{"description":"Sends a message to Azure Service Bus using a service connection (no agent is required)","doNotSuggest":false,"ignoreCase":"value","enum":["PublishToAzureServiceBus@1"]},{"description":"Sends a message to azure service bus using a service connection (no agent required).","doNotSuggest":false,"ignoreCase":"value","enum":["PublishToAzureServiceBus@0"]},{"description":"Use Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts","doNotSuggest":false,"ignoreCase":"value","enum":["KubernetesManifest@0"]},{"description":"Download files that were saved as artifacts of a completed build","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadBuildArtifacts@1"]},{"description":"Download files that were saved as artifacts of a completed build","doNotSuggest":false,"ignoreCase":"value","enum":["DownloadBuildArtifacts@0"]},{"description":"Install CocoaPods dependencies for Swift and Objective-C Cocoa projects","doNotSuggest":false,"ignoreCase":"value","enum":["CocoaPods@0"]},{"description":"Archives symbols on Symweb.","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildArchiveSymbols@1"]},{"description":"Deploy applications to Azure Spring Cloud and manage deployments.","doNotSuggest":false,"ignoreCase":"value","enum":["AzureSpringCloud@0"]},{"description":"Deploy an Azure Web App for Linux or Windows","doNotSuggest":false,"ignoreCase":"value","enum":["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 Azure CLI commands against an Azure subscription in a PowerShell Core/Shell script when running on Linux agent or PowerShell/PowerShell Core/Batch script when running on Windows agent.","doNotSuggest":false,"ignoreCase":"value","enum":["AzureCLI@2"]},{"description":"Run a Shell or Batch script with Azure CLI commands against an azure subscription","doNotSuggest":false,"ignoreCase":"value","enum":["AzureCLI@0"]},{"description":"Installs and configures the MicroBuild VC Error Codes plugin for use during the build","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildVCErrorCodesPlugin@2"]},{"description":"Create and start an Azure Cosmos DB Emulator container for testing","doNotSuggest":false,"ignoreCase":"value","enum":["CosmosDbEmulator@2"]},{"description":"Verifies that files have been correctly codesigned","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildCodesignVerify@2"]},{"description":"Verifies that files have been correctly codesigned","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildCodesignVerify@3"]},{"description":"Create, edit, or delete a GitHub release","doNotSuggest":false,"ignoreCase":"value","enum":["GitHubRelease@1"]},{"description":"Create, edit, or delete a GitHub release","doNotSuggest":false,"ignoreCase":"value","enum":["GitHubRelease@0"]},{"description":"Use cURL to upload files with FTP, FTPS, SFTP, HTTP, and more.","doNotSuggest":false,"ignoreCase":"value","enum":["cURLUploader@1"]},{"description":"Use cURL's supported protocols to upload files","doNotSuggest":false,"ignoreCase":"value","enum":["cURLUploader@2"]},{"description":"Update/Add App settings an Azure Web App for Linux or Windows","doNotSuggest":false,"ignoreCase":"value","enum":["AzureAppServiceSettings@1"]},{"description":"Download or publish Universal Packages","doNotSuggest":false,"ignoreCase":"value","enum":["UniversalPackages@0"]},{"description":"Security and compliance assessment for Azure Policy","doNotSuggest":false,"ignoreCase":"value","enum":["AzurePolicyCheckGate@0"]},{"description":"Deploy Azure function to Kubernetes cluster.","doNotSuggest":false,"ignoreCase":"value","enum":["AzureFunctionOnKubernetes@0"]},{"description":"Retains one or more Azure DevOps Drops permanently","doNotSuggest":false,"ignoreCase":"value","enum":["MicroBuildRetainVstsDrops@1"]},{"description":"Run a shell script using Bash","doNotSuggest":false,"ignoreCase":"value","enum":["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,"ignoreCase":"value","enum":["PublishBuildArtifacts@1"]},{"description":"Install an SSH key prior to a build or deployment","doNotSuggest":false,"ignoreCase":"value","enum":["InstallSSHKey@0"]},{"description":"Deploy a virtual machine scale set image","doNotSuggest":false,"ignoreCase":"value","enum":["AzureVmssDeployment@0"]},{"description":"Adds tags to a build or release","doNotSuggest":false,"ignoreCase":"value","enum":["tagBuildOrRelease@0"]},{"description":"Create or update Azure App Service using Azure PowerShell","deprecationMessage":"AzureWebPowerShellDeployment is deprecated - Create or update Azure App Service using Azure PowerShell","doNotSuggest":true,"ignoreCase":"value","enum":["AzureWebPowerShellDeployment@1"]},{"description":"Deploy an Azure Cloud Service","doNotSuggest":false,"ignoreCase":"value","enum":["AzureCloudPowerShellDeployment@1"]},{"description":"Delete folders, or files matching a pattern","doNotSuggest":false,"ignoreCase":"value","enum":["DeleteFiles@1"]},{"description":"Run the gulp Node.js streaming task-based build system","doNotSuggest":false,"ignoreCase":"value","enum":["gulp@1"]},{"description":"Run the gulp Node.js streaming task-based build system","doNotSuggest":false,"ignoreCase":"value","enum":["gulp@0"]},{"description":"Run a quick web performance test in the cloud with Azure Pipelines","deprecationMessage":"QuickPerfTest is deprecated - Run a quick web performance test in the cloud with Azure Pipelines","doNotSuggest":true,"ignoreCase":"value","enum":["QuickPerfTest@1"]},{"description":"Create or update websites, web apps, virtual directories, or application pools","doNotSuggest":false,"ignoreCase":"value","enum":["IISWebAppManagementOnMachineGroup@0"]},{"description":"Install Docker CLI on agent machine.","doNotSuggest":false,"ignoreCase":"value","enum":["DockerInstaller@0"]}]},"displayName":{"type":"string","description":"Human-readable name for the task"},"name":{"type":"string","description":"ID of the task instance","pattern":"^[_A-Za-z0-9]*$"},"condition":{"type":"string","description":"Evaluate this condition expression to determine whether to run this task"},"continueOnError":{"type":"boolean","description":"Continue running the parent job even on failure?"},"enabled":{"type":"string","description":"Run this task when the job runs?"},"retryCountOnTaskFailure":{"type":"integer","description":"Number of retries if the task fails"},"timeoutInMinutes":{"type":"integer","description":"Time to wait for this task to complete before the server kills it"},"inputs":{"type":"object","description":"Task-specific inputs"},"env":{"type":"object","description":"Variables to map into the process's environment"}},"additionalProperties":false,"firstProperty":["task"],"anyOf":[{"properties":{"task":{"description":"Codesign Validation (Injected)\n\nA variant of the Codesign Validation build task that auto-runs on Production builds.","ignoreCase":"value","pattern":"^CodeSignValidationInjected@1$"},"inputs":{"description":"Codesign Validation (Injected) inputs","properties":{"Path":{"type":"string","description":"Folder to Scan","ignoreCase":"key"},"Targets":{"type":"string","description":"Targets to Scan","ignoreCase":"key"},"ToolVersion":{"description":"Tool Version","ignoreCase":"all","enum":["Latest","1.9.0","1.8.2","1.1.0"]},"CatalogPath":{"type":"string","description":"Catalog Path","ignoreCase":"key"},"PolicyType":{"description":"Policy Type","ignoreCase":"all","enum":["AzureSecurityPack","Custom"]},"PolicyFile":{"type":"string","description":"Custom Policy Path","ignoreCase":"key"},"OutputDirectory":{"type":"string","description":"Custom Output Directory","ignoreCase":"key"},"ExcludePassesFromLog":{"type":"string","description":"Exclude Passes From Log","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"PowerShell\n\nRun a PowerShell script on Linux, macOS, or Windows","ignoreCase":"value","pattern":"^PowerShell@2$"},"inputs":{"description":"PowerShell inputs","properties":{"targetType":{"description":"Type","ignoreCase":"all","enum":["filePath","inline"]},"filePath":{"type":"string","description":"Script Path","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"script":{"type":"string","description":"Script","ignoreCase":"key"},"errorActionPreference":{"description":"ErrorActionPreference","ignoreCase":"all","enum":["default","stop","continue","silentlyContinue"]},"warningPreference":{"description":"WarningPreference","ignoreCase":"all","enum":["default","stop","continue","silentlyContinue"]},"informationPreference":{"description":"InformationPreference","ignoreCase":"all","enum":["default","stop","continue","silentlyContinue"]},"verbosePreference":{"description":"VerbosePreference","ignoreCase":"all","enum":["default","stop","continue","silentlyContinue"]},"debugPreference":{"description":"DebugPreference","ignoreCase":"all","enum":["default","stop","continue","silentlyContinue"]},"failOnStderr":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"},"showWarnings":{"type":"boolean","description":"Show warnings as Azure DevOps warnings","ignoreCase":"key"},"ignoreLASTEXITCODE":{"type":"boolean","description":"Ignore $LASTEXITCODE","ignoreCase":"key"},"pwsh":{"type":"boolean","description":"Use PowerShell Core","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key"},"runScriptInSeparateScope":{"type":"boolean","description":"Run script in the separate scope","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"PowerShell\n\nRun a PowerShell script","ignoreCase":"value","pattern":"^PowerShell@1$"},"inputs":{"description":"PowerShell inputs","properties":{"scriptType":{"description":"Type","ignoreCase":"all","enum":["inlineScript","filePath"]},"scriptName":{"type":"string","description":"Script Path","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingFolder":{"type":"string","description":"Working folder","ignoreCase":"key"},"inlineScript":{"type":"string","description":"Inline Script","ignoreCase":"key"},"failOnStandardError":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure PowerShell\n\nRun a PowerShell script within an Azure environment","ignoreCase":"value","pattern":"^AzurePowerShell@5$"},"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"},"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"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure PowerShell\n\nRun a PowerShell script within an Azure environment","ignoreCase":"value","pattern":"^AzurePowerShell@2$"},"inputs":{"description":"Azure PowerShell inputs","properties":{"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"]},"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"},"azurePowerShellVersion":{"description":"Azure PowerShell Version","ignoreCase":"all","enum":["LatestVersion","OtherVersion"],"aliases":["TargetAzurePs"]},"preferredAzurePowerShellVersion":{"type":"string","description":"Preferred Azure PowerShell Version","ignoreCase":"key","aliases":["CustomTargetAzurePs"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure PowerShell\n\nRun a PowerShell script within an Azure environment","ignoreCase":"value","pattern":"^AzurePowerShell@3$"},"inputs":{"description":"Azure PowerShell inputs","properties":{"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"]},"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"},"azurePowerShellVersion":{"description":"Azure PowerShell Version","ignoreCase":"all","enum":["LatestVersion","OtherVersion"],"aliases":["TargetAzurePs"]},"preferredAzurePowerShellVersion":{"type":"string","description":"Preferred Azure PowerShell Version","ignoreCase":"key","aliases":["CustomTargetAzurePs"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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":{"description":"MySQL database deploy\n\nRun scripts and make changes to a MySQL Database","ignoreCase":"value","pattern":"^MysqlDeploymentOnMachineGroup@1$"},"inputs":{"description":"MySQL database deploy inputs","properties":{"TaskNameSelector":{"description":"Deploy MySql Using","ignoreCase":"all","enum":["SqlTaskFile","InlineSqlTask"]},"SqlFile":{"type":"string","description":"MySQL Script","ignoreCase":"key"},"SqlInline":{"type":"string","description":"Inline MySQL Script","ignoreCase":"key"},"ServerName":{"type":"string","description":"Host Name","ignoreCase":"key"},"DatabaseName":{"type":"string","description":"Database Name","ignoreCase":"key"},"SqlUsername":{"type":"string","description":"Mysql User Name","ignoreCase":"key"},"SqlPassword":{"type":"string","description":"Password","ignoreCase":"key"},"SqlAdditionalArguments":{"type":"string","description":"Additional Arguments","ignoreCase":"key"}},"additionalProperties":false,"required":["SqlUsername","SqlPassword"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Prefast Plugin\n\nInstalls and configures the MicroBuild Prefast plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildPrefastPlugin@2$"},"inputs":{"description":"MicroBuild Prefast Plugin inputs","properties":{"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Python pip authenticate\n\nAuthentication task for the pip client used for installing Python distributions","ignoreCase":"value","pattern":"^PipAuthenticate@1$"},"inputs":{"description":"Python pip authenticate inputs","properties":{"artifactFeeds":{"type":"string","description":"My feeds (select below)","ignoreCase":"key","aliases":["artifactFeeds"]},"pythonDownloadServiceConnections":{"type":"string","description":"Feeds from external organizations","ignoreCase":"key","aliases":["pythonDownloadServiceConnections"]},"onlyAddExtraIndex":{"type":"boolean","description":"Don't set primary index URL","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Python pip authenticate\n\nAuthentication task for the pip client used for installing Python distributions","ignoreCase":"value","pattern":"^PipAuthenticate@0$"},"inputs":{"description":"Python pip authenticate inputs","properties":{"artifactFeeds":{"type":"string","description":"My feeds (select below)","ignoreCase":"key","aliases":["feedList"]},"externalFeeds":{"type":"string","description":"Feeds from external organizations","ignoreCase":"key","aliases":["externalSources"]}},"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@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.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 built-in Maven 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","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.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 built-in Maven feeds","ignoreCase":"key","aliases":["mavenFeedAuthenticate"]},"effectivePomSkip":{"type":"boolean","description":"Skip generating effective POM while authenticating built-in feeds","ignoreCase":"key","aliases":["skipEffectivePom"]},"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 with Apache Maven","ignoreCase":"value","pattern":"^Maven@1$"},"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 TFS/Team Services","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"]},"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"]},"javaHomeOption":{"description":"Set JAVA_HOME by","ignoreCase":"all","enum":["JDKVersion","Path"],"aliases":["javaHomeSelection"]},"jdkVersionOption":{"description":"JDK Version","ignoreCase":"all","enum":["default","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 built-in Maven feeds","ignoreCase":"key","aliases":["mavenFeedAuthenticate"]},"sonarQubeRunAnalysis":{"type":"boolean","description":"Run SonarQube Analysis","ignoreCase":"key","aliases":["sqAnalysisEnabled"]},"sonarQubeServiceEndpoint":{"type":"string","description":"SonarQube Endpoint","ignoreCase":"key","aliases":["sqConnectedServiceName"]},"sonarQubeProjectName":{"type":"string","description":"SonarQube Project Name","ignoreCase":"key","aliases":["sqProjectName"]},"sonarQubeProjectKey":{"type":"string","description":"SonarQube Project Key","ignoreCase":"key","aliases":["sqProjectKey"]},"sonarQubeProjectVersion":{"type":"string","description":"SonarQube Project Version","ignoreCase":"key","aliases":["sqProjectVersion"]},"sonarQubeSpecifyDB":{"type":"boolean","description":"The SonarQube server version is lower than 5.2","ignoreCase":"key","aliases":["sqDbDetailsRequired"]},"sonarQubeDBUrl":{"type":"string","description":"Db Connection String","ignoreCase":"key","aliases":["sqDbUrl"]},"sonarQubeDBUsername":{"type":"string","description":"Db Username","ignoreCase":"key","aliases":["sqDbUsername"]},"sonarQubeDBPassword":{"type":"string","description":"Db User Password","ignoreCase":"key","aliases":["sqDbPassword"]},"sonarQubeIncludeFullReport":{"type":"boolean","description":"Include full analysis report in the build summary (SQ 5.3+)","ignoreCase":"key","aliases":["sqAnalysisIncludeFullReport"]},"sonarQubeFailWhenQualityGateFails":{"type":"boolean","description":"Fail the build on quality gate failure (SQ 5.3+)","ignoreCase":"key","aliases":["sqAnalysisBreakBuildIfQualityGateFailed"]},"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":"Zip A Folder\n\nZip Files and Folder","ignoreCase":"value","pattern":"^zip@0$"},"inputs":{"description":"Zip A Folder inputs","properties":{"pathToZipFolder":{"type":"string","description":"Path to folder","ignoreCase":"key"},"pathToZipFile":{"type":"string","description":"Path to the zip file","ignoreCase":"key"},"overwrite":{"type":"boolean","description":"Overwrite zip file","ignoreCase":"key"}},"additionalProperties":false,"required":["pathToZipFolder","pathToZipFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Publish Symbols to Artifact Services-preview\n\nPublish Symbols to Artifact Services - Internal Preview","ignoreCase":"value","pattern":"^artifactSymbolTask@0$"},"inputs":{"description":"Publish Symbols to Artifact Services-preview inputs","properties":{"symbolServiceURI":{"type":"string","description":"Symbol Service Endpoint","ignoreCase":"key"},"requestName":{"type":"string","description":"Symbol Request Name","ignoreCase":"key"},"sourcePath":{"type":"string","description":"Upload Source Root Path","ignoreCase":"key"},"assemblyPath":{"type":"string","description":"Override path to symbol assemblies","ignoreCase":"key"},"toLowerCase":{"type":"boolean","description":"Lowercase symbol request name","ignoreCase":"key"},"detailedLog":{"type":"boolean","description":"Verbose Logging","ignoreCase":"key"},"expirationInDays":{"type":"string","description":"Expiration (in days)","ignoreCase":"key"},"usePat":{"type":"boolean","description":"Use Personal Access Token","ignoreCase":"key"},"append":{"type":"boolean","description":"Allow appending to existing request","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Rollback PowerShell\n\nRun a powershell script to rollback deployments. Task execution context is available in the powershell context for implementing conditional rollback","ignoreCase":"value","pattern":"^Rollback@1$"},"inputs":{"description":"Rollback PowerShell inputs","properties":{"type":{"description":"Type","ignoreCase":"all","enum":["InlineScript","FilePath"]},"rollbackpowershellfile":{"type":"string","description":"Script Path","ignoreCase":"key"},"additionalarguments":{"type":"string","description":"Script Arguments","ignoreCase":"key"},"workingFolder":{"type":"string","description":"Working folder","ignoreCase":"key"},"script":{"type":"string","description":"Script","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":".NET Core\n\nBuild, test, package, or publish a dotnet application, or run a custom dotnet command","ignoreCase":"value","pattern":"^DotNetCoreCLI@2$"},"inputs":{"description":".NET Core inputs","properties":{"command":{"description":"Command","ignoreCase":"all","enum":["build","push","pack","publish","restore","run","test","custom"]},"publishWebProjects":{"type":"boolean","description":"Publish web projects","ignoreCase":"key"},"projects":{"type":"string","description":"Path to project(s)","ignoreCase":"key"},"custom":{"type":"string","description":"Custom command","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"restoreArguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"publishTestResults":{"type":"boolean","description":"Publish test results and code coverage","ignoreCase":"key"},"testRunTitle":{"type":"string","description":"Test run title","ignoreCase":"key"},"zipAfterPublish":{"type":"boolean","description":"Zip published projects","ignoreCase":"key"},"modifyOutputPath":{"type":"boolean","description":"Add project's folder name to publish path","ignoreCase":"key"},"feedsToUse":{"description":"Feeds to use","ignoreCase":"all","enum":["select","config"],"aliases":["selectOrConfig"]},"vstsFeed":{"type":"string","description":"Use packages from this Azure Artifacts feed","ignoreCase":"key","aliases":["feedRestore"]},"includeNuGetOrg":{"type":"boolean","description":"Use packages from NuGet.org","ignoreCase":"key"},"nugetConfigPath":{"type":"string","description":"Path to NuGet.config","ignoreCase":"key"},"externalFeedCredentials":{"type":"string","description":"Credentials for feeds outside this organization/collection","ignoreCase":"key","aliases":["externalEndpoints"]},"noCache":{"type":"boolean","description":"Disable local cache","ignoreCase":"key"},"restoreDirectory":{"type":"string","description":"Destination directory","ignoreCase":"key","aliases":["packagesDirectory"]},"verbosityRestore":{"description":"Verbosity","ignoreCase":"all","enum":["-","Quiet","Minimal","Normal","Detailed","Diagnostic"]},"packagesToPush":{"type":"string","description":"Path to NuGet package(s) to publish","ignoreCase":"key","aliases":["searchPatternPush"]},"nuGetFeedType":{"description":"Target feed location","ignoreCase":"all","enum":["internal","external"]},"publishVstsFeed":{"type":"string","description":"Target feed","ignoreCase":"key","aliases":["feedPublish"]},"publishPackageMetadata":{"type":"boolean","description":"Publish pipeline metadata","ignoreCase":"key"},"publishFeedCredentials":{"type":"string","description":"NuGet server","ignoreCase":"key","aliases":["externalEndpoint"]},"packagesToPack":{"type":"string","description":"Path to csproj or nuspec file(s) to pack","ignoreCase":"key","aliases":["searchPatternPack"]},"configuration":{"type":"string","description":"Configuration to Package","ignoreCase":"key","aliases":["configurationToPack"]},"packDirectory":{"type":"string","description":"Package Folder","ignoreCase":"key","aliases":["outputDir"]},"nobuild":{"type":"boolean","description":"Do not build","ignoreCase":"key"},"includesymbols":{"type":"boolean","description":"Include Symbols","ignoreCase":"key"},"includesource":{"type":"boolean","description":"Include Source","ignoreCase":"key"},"versioningScheme":{"description":"Automatic package versioning","ignoreCase":"all","enum":["off","byPrereleaseNumber","byEnvVar","byBuildNumber"]},"versionEnvVar":{"type":"string","description":"Environment variable","ignoreCase":"key"},"majorVersion":{"type":"string","description":"Major","ignoreCase":"key","aliases":["requestedMajorVersion"]},"minorVersion":{"type":"string","description":"Minor","ignoreCase":"key","aliases":["requestedMinorVersion"]},"patchVersion":{"type":"string","description":"Patch","ignoreCase":"key","aliases":["requestedPatchVersion"]},"buildProperties":{"type":"string","description":"Additional build properties","ignoreCase":"key"},"verbosityPack":{"description":"Verbosity","ignoreCase":"all","enum":["-","Quiet","Minimal","Normal","Detailed","Diagnostic"]},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":".NET Core (PREVIEW)\n\nBuild, test and publish using dotnet core command-line.","ignoreCase":"value","pattern":"^DotNetCoreCLI@0$"},"inputs":{"description":".NET Core (PREVIEW) inputs","properties":{"command":{"description":"Command","ignoreCase":"all","enum":["build","publish","restore","test","run"]},"publishWebProjects":{"type":"boolean","description":"Publish Web Projects","ignoreCase":"key"},"projects":{"type":"string","description":"Project(s)","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"zipAfterPublish":{"type":"boolean","description":"Zip Published Projects","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"deprecationMessage":"DotNetCoreCLI is deprecated - Build, test and publish using dotnet core command-line.","doNotSuggest":true,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":".NET Core\n\nBuild, test and publish using dotnet core command-line.","ignoreCase":"value","pattern":"^DotNetCoreCLI@1$"},"inputs":{"description":".NET Core inputs","properties":{"command":{"description":"Command","ignoreCase":"all","enum":["build","publish","restore","test","run"]},"publishWebProjects":{"type":"boolean","description":"Publish Web Projects","ignoreCase":"key"},"projects":{"type":"string","description":"Project(s)","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"zipAfterPublish":{"type":"boolean","description":"Zip Published Projects","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Tokenize File\n\nTokenizes a file.","ignoreCase":"value","pattern":"^JSONTokenizer@1$"},"inputs":{"description":"Tokenize File inputs","properties":{"sourcePath":{"type":"string","description":"Source Path","ignoreCase":"key"},"filePattern":{"type":"string","description":"File Pattern","ignoreCase":"key"},"tokenizeType":{"description":"Tokenize Type","ignoreCase":"all","enum":["Json"]},"includes":{"type":"string","description":"Includes","ignoreCase":"key"},"excludes":{"type":"string","description":"Excludes","ignoreCase":"key"},"nullBehavior":{"description":"Null Behavior","ignoreCase":"all","enum":["warning","error"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Send Helix Start Telemetry\n\nSend start job telemetry for .NET Core builds","ignoreCase":"value","pattern":"^SendStartTelemetry@0$"},"inputs":{"description":"Send Helix Start Telemetry inputs","properties":{"helixRepo":{"type":"string","description":"[organization name]/[repository name]","ignoreCase":"key"},"helixType":{"type":"string","description":"telemetry type","ignoreCase":"key"},"maxRetries":{"type":"string","description":"Maximum number of retry attempts","ignoreCase":"key"},"retryDelay":{"type":"string","description":"Number of seconds to wait between retry attempts","ignoreCase":"key"},"runAsPublic":{"type":"boolean","description":"Always send telemetry as public","ignoreCase":"key"},"buildConfig":{"type":"string","description":"Build configuration","ignoreCase":"key"}},"additionalProperties":false,"required":["helixRepo"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Xamarin Component Restore\n\nThis task is deprecated. Use 'NuGet' instead.","ignoreCase":"value","pattern":"^XamarinComponentRestore@0$"},"inputs":{"description":"Xamarin Component Restore inputs","properties":{"solutionFile":{"type":"string","description":"Path to solution","ignoreCase":"key","aliases":["solution"]},"email":{"type":"string","description":"Email","ignoreCase":"key"},"password":{"type":"string","description":"Password","ignoreCase":"key"}},"additionalProperties":false,"required":["email","password"]}},"deprecationMessage":"XamarinComponentRestore is deprecated - This task is deprecated. Use 'NuGet' instead.","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"ReportGenerator\n\nReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats.","ignoreCase":"value","pattern":"^reportgenerator@5$"},"inputs":{"description":"ReportGenerator inputs","properties":{"reports":{"type":"string","description":"Reports","ignoreCase":"key"},"targetdir":{"type":"string","description":"Target directory","ignoreCase":"key"},"reporttypes":{"type":"string","description":"Report types","ignoreCase":"key"},"sourcedirs":{"type":"string","description":"Source directories","ignoreCase":"key"},"historydir":{"type":"string","description":"History directory","ignoreCase":"key"},"plugins":{"type":"string","description":"Plugins","ignoreCase":"key"},"assemblyfilters":{"type":"string","description":"Assembly filters","ignoreCase":"key"},"classfilters":{"type":"string","description":"Class filters","ignoreCase":"key"},"filefilters":{"type":"string","description":"File filters","ignoreCase":"key"},"verbosity":{"description":"Verbosity","ignoreCase":"all","enum":["Verbose","Info","Warning","Error","Off"]},"title":{"type":"string","description":"Title","ignoreCase":"key"},"tag":{"type":"string","description":"Tag","ignoreCase":"key"},"customSettings":{"type":"string","description":"Custom settings","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"ReportGenerator\n\nReportGenerator converts coverage reports generated by coverlet, OpenCover, dotCover, Visual Studio, NCover, Cobertura, JaCoCo, Clover, gcov or lcov into human readable reports in various formats.","ignoreCase":"value","pattern":"^reportgenerator@4$"},"inputs":{"description":"ReportGenerator inputs","properties":{"reports":{"type":"string","description":"Reports","ignoreCase":"key"},"targetdir":{"type":"string","description":"Target directory","ignoreCase":"key"},"reporttypes":{"type":"string","description":"Report types","ignoreCase":"key"},"sourcedirs":{"type":"string","description":"Source directories","ignoreCase":"key"},"historydir":{"type":"string","description":"History directory","ignoreCase":"key"},"plugins":{"type":"string","description":"Plugins","ignoreCase":"key"},"assemblyfilters":{"type":"string","description":"Assembly filters","ignoreCase":"key"},"classfilters":{"type":"string","description":"Class filters","ignoreCase":"key"},"filefilters":{"type":"string","description":"File filters","ignoreCase":"key"},"verbosity":{"description":"Verbosity","ignoreCase":"all","enum":["Verbose","Info","Warning","Error","Off"]},"title":{"type":"string","description":"Title","ignoreCase":"key"},"tag":{"type":"string","description":"Tag","ignoreCase":"key"},"customSettings":{"type":"string","description":"Custom settings","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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":{"description":"Azure App Service deploy\n\nDeploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby","ignoreCase":"value","pattern":"^AzureRmWebAppDeployment@3$"},"inputs":{"description":"Azure App Service deploy inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"appType":{"description":"App type","ignoreCase":"all","enum":["app","applinux","functionapp","api","mobileapp"],"aliases":["WebAppKind"]},"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"},"ImageSource":{"description":"Image Source","ignoreCase":"all","enum":["Registry","Builtin"]},"AzureContainerRegistry":{"type":"string","description":"Registry","ignoreCase":"key"},"AzureContainerRegistryLoginServer":{"type":"string","description":"Registry Login Server Name","ignoreCase":"key"},"AzureContainerRegistryImage":{"type":"string","description":"Image","ignoreCase":"key"},"AzureContainerRegistryTag":{"type":"string","description":"Tag","ignoreCase":"key"},"DockerRepositoryAccess":{"description":"Repository Access","ignoreCase":"all","enum":["private","public"]},"dockerRegistryConnection":{"type":"string","description":"Registry Connection","ignoreCase":"key","aliases":["RegistryConnectedServiceName"]},"PrivateRegistryImage":{"type":"string","description":"Image","ignoreCase":"key"},"PrivateRegistryTag":{"type":"string","description":"Tag","ignoreCase":"key"},"DockerNamespace":{"type":"string","description":"Registry or Namespace","ignoreCase":"key"},"DockerRepository":{"type":"string","description":"Image","ignoreCase":"key"},"DockerImageTag":{"type":"string","description":"Tag","ignoreCase":"key"},"VirtualApplication":{"type":"string","description":"Virtual application","ignoreCase":"key"},"Package":{"type":"string","description":"Package or folder","ignoreCase":"key"},"packageForLinux":{"type":"string","description":"Package or folder","ignoreCase":"key","aliases":["BuiltinLinuxPackage"]},"RuntimeStack":{"type":"string","description":"Runtime Stack","ignoreCase":"key"},"StartupCommand":{"type":"string","description":"Startup command ","ignoreCase":"key"},"WebAppUri":{"type":"string","description":"App Service URL","ignoreCase":"key"},"ScriptType":{"description":"Deployment script type","ignoreCase":"all","enum":["","Inline Script","File Path"]},"InlineScript":{"type":"string","description":"Inline Script","ignoreCase":"key"},"ScriptPath":{"type":"string","description":"Deployment script path","ignoreCase":"key"},"GenerateWebConfig":{"type":"boolean","description":"Generate Web.config","ignoreCase":"key"},"WebConfigParameters":{"type":"string","description":"Web.config parameters","ignoreCase":"key"},"AppSettings":{"type":"string","description":"App settings","ignoreCase":"key"},"ConfigurationSettings":{"type":"string","description":"Configuration settings","ignoreCase":"key"},"TakeAppOfflineFlag":{"type":"boolean","description":"Take App Offline","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"},"RenameFilesFlag":{"type":"boolean","description":"Rename locked files","ignoreCase":"key"},"enableXmlTransform":{"type":"boolean","description":"XML transformation","ignoreCase":"key","aliases":["XmlTransformation"]},"enableXmlVariableSubstitution":{"type":"boolean","description":"XML variable substitution","ignoreCase":"key","aliases":["XmlVariableSubstitution"]},"JSONFiles":{"type":"string","description":"JSON variable substitution","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","WebAppName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure App Service deploy\n\nDeploy to Azure App Service a web, mobile, or API app using Docker, Java, .NET, .NET Core, Node.js, PHP, Python, or Ruby","ignoreCase":"value","pattern":"^AzureRmWebAppDeployment@4$"},"inputs":{"description":"Azure App Service deploy inputs","properties":{"ConnectionType":{"description":"Connection type","ignoreCase":"all","enum":["AzureRM","PublishProfile"]},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"PublishProfilePath":{"type":"string","description":"Publish profile path","ignoreCase":"key"},"PublishProfilePassword":{"type":"string","description":"Publish profile password","ignoreCase":"key"},"appType":{"description":"App Service type","ignoreCase":"all","enum":["webApp","webAppLinux","webAppContainer","functionApp","functionAppLinux","functionAppContainer","apiApp","mobileApp"],"aliases":["WebAppKind"]},"WebAppName":{"type":"string","description":"App Service name","ignoreCase":"key"},"deployToSlotOrASE":{"type":"boolean","description":"Deploy to Slot or App Service Environment","ignoreCase":"key","aliases":["DeployToSlotOrASEFlag"]},"ResourceGroupName":{"type":"string","description":"Resource group","ignoreCase":"key"},"SlotName":{"type":"string","description":"Slot","ignoreCase":"key"},"DockerNamespace":{"type":"string","description":"Registry or Namespace","ignoreCase":"key"},"DockerRepository":{"type":"string","description":"Image","ignoreCase":"key"},"DockerImageTag":{"type":"string","description":"Tag","ignoreCase":"key"},"VirtualApplication":{"type":"string","description":"Virtual application","ignoreCase":"key"},"packageForLinux":{"type":"string","description":"Package or folder","ignoreCase":"key","aliases":["Package"]},"RuntimeStack":{"type":"string","description":"Runtime Stack","ignoreCase":"key"},"RuntimeStackFunction":{"description":"Runtime Stack","ignoreCase":"all","enum":["DOTNET|2.2","DOTNET|3.1","JAVA|8","JAVA|11","NODE|8","NODE|10","NODE|12","NODE|14","PYTHON|3.6","PYTHON|3.7","PYTHON|3.8"]},"StartupCommand":{"type":"string","description":"Startup command ","ignoreCase":"key"},"ScriptType":{"description":"Deployment script type","ignoreCase":"all","enum":["","Inline Script","File Path"]},"InlineScript":{"type":"string","description":"Inline Script","ignoreCase":"key"},"ScriptPath":{"type":"string","description":"Deployment script path","ignoreCase":"key"},"WebConfigParameters":{"type":"string","description":"Generate web.config parameters for Python, Node.js, Go and Java apps","ignoreCase":"key"},"AppSettings":{"type":"string","description":"App settings","ignoreCase":"key"},"ConfigurationSettings":{"type":"string","description":"Configuration settings","ignoreCase":"key"},"enableCustomDeployment":{"type":"boolean","description":"Select deployment method","ignoreCase":"key","aliases":["UseWebDeploy"]},"DeploymentType":{"description":"Deployment method","ignoreCase":"all","enum":["webDeploy","zipDeploy","runFromZip"]},"TakeAppOfflineFlag":{"type":"boolean","description":"Take App Offline","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"},"RenameFilesFlag":{"type":"boolean","description":"Rename locked files","ignoreCase":"key"},"enableXmlTransform":{"type":"boolean","description":"XML transformation","ignoreCase":"key","aliases":["XmlTransformation"]},"enableXmlVariableSubstitution":{"type":"boolean","description":"XML variable substitution","ignoreCase":"key","aliases":["XmlVariableSubstitution"]},"JSONFiles":{"type":"string","description":"JSON variable substitution","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"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":{"description":"PowerShell on target machines\n\nExecute PowerShell scripts on remote machines using PSSession and Invoke-Command for remoting","ignoreCase":"value","pattern":"^PowerShellOnTargetMachines@3$"},"inputs":{"description":"PowerShell on target machines inputs","properties":{"Machines":{"type":"string","description":"Machines","ignoreCase":"key"},"UserName":{"type":"string","description":"Username","ignoreCase":"key"},"UserPassword":{"type":"string","description":"Password","ignoreCase":"key"},"ScriptType":{"description":"Script Type","ignoreCase":"all","enum":["FilePath","Inline"]},"ScriptPath":{"type":"string","description":"Script File Path","ignoreCase":"key"},"InlineScript":{"type":"string","description":"Script","ignoreCase":"key"},"ScriptArguments":{"type":"string","description":"Script Arguments","ignoreCase":"key"},"InitializationScript":{"type":"string","description":"Initialization script","ignoreCase":"key"},"SessionVariables":{"type":"string","description":"Session Variables","ignoreCase":"key"},"CommunicationProtocol":{"description":"Protocol","ignoreCase":"all","enum":["Http","Https"]},"AuthenticationMechanism":{"description":"Authentication","ignoreCase":"all","enum":["Default","Credssp"]},"NewPsSessionOptionArguments":{"type":"string","description":"Session Option parameters","ignoreCase":"key"},"ErrorActionPreference":{"description":"ErrorActionPreference","ignoreCase":"all","enum":["stop","continue","silentlyContinue"]},"failOnStderr":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"},"ignoreLASTEXITCODE":{"type":"boolean","description":"Ignore $LASTEXITCODE","ignoreCase":"key"},"WorkingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key"},"RunPowershellInParallel":{"type":"boolean","description":"Run PowerShell in Parallel","ignoreCase":"key"}},"additionalProperties":false,"required":["Machines"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"PowerShell on Target Machines\n\nExecute PowerShell scripts on remote machine(s)","ignoreCase":"value","pattern":"^PowerShellOnTargetMachines@2$"},"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":{"description":"Publish code coverage results\n\nPublish Cobertura or JaCoCo code coverage results from a build","ignoreCase":"value","pattern":"^PublishCodeCoverageResults@1$"},"inputs":{"description":"Publish code coverage results inputs","properties":{"codeCoverageTool":{"description":"Code coverage tool","ignoreCase":"all","enum":["Cobertura","JaCoCo"]},"summaryFileLocation":{"type":"string","description":"Summary file","ignoreCase":"key"},"pathToSources":{"type":"string","description":"Path to Source files","ignoreCase":"key"},"reportDirectory":{"type":"string","description":"Report directory","ignoreCase":"key"},"additionalCodeCoverageFiles":{"type":"string","description":"Additional files","ignoreCase":"key"},"failIfCoverageEmpty":{"type":"boolean","description":"Fail when code coverage results are missing","ignoreCase":"key"}},"additionalProperties":false,"required":["summaryFileLocation"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Run functional tests\n\nDeprecated: 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.","ignoreCase":"value","pattern":"^RunVisualStudioTestsusingTestAgent@1$"},"inputs":{"description":"Run functional tests inputs","properties":{"testMachineGroup":{"type":"string","description":"Machines","ignoreCase":"key"},"dropLocation":{"type":"string","description":"Test Drop Location","ignoreCase":"key"},"testSelection":{"description":"Test Selection","ignoreCase":"all","enum":["testAssembly","testPlan"]},"testPlan":{"type":"string","description":"Test Plan","ignoreCase":"key"},"testSuite":{"type":"string","description":"Test Suite","ignoreCase":"key"},"testConfiguration":{"type":"string","description":"Test Configuration","ignoreCase":"key"},"sourcefilters":{"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"},"overrideRunParams":{"type":"string","description":"Override Test Run Parameters","ignoreCase":"key"},"codeCoverageEnabled":{"type":"boolean","description":"Code Coverage Enabled","ignoreCase":"key"},"customSlicingEnabled":{"type":"boolean","description":"Distribute tests by number of machines","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"},"testConfigurations":{"type":"string","description":"Test Configurations","ignoreCase":"key"},"autMachineGroup":{"type":"string","description":"Application Under Test Machines","ignoreCase":"key"}},"additionalProperties":false,"required":["testMachineGroup","dropLocation"]}},"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.","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Shell++\n\nExecute bash script","ignoreCase":"value","pattern":"^Shellpp@0$"},"inputs":{"description":"Shell++ inputs","properties":{"type":{"description":"Type","ignoreCase":"all","enum":["InlineScript","FilePath"]},"scriptPath":{"type":"string","description":"Script Path","ignoreCase":"key"},"args":{"type":"string","description":"Arguments","ignoreCase":"key"},"cwd":{"type":"string","description":"Working Directory","ignoreCase":"key"},"failOnStandardError":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"},"script":{"type":"string","description":"Script","ignoreCase":"key"}},"additionalProperties":false,"required":["type"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Manual intervention\n\nPause deployment and wait for manual intervention","ignoreCase":"value","pattern":"^ManualIntervention@8$"},"inputs":{"description":"Manual intervention inputs","properties":{"instructions":{"type":"string","description":"Instructions","ignoreCase":"key"},"emailRecipients":{"type":"string","description":"Notify users","ignoreCase":"key"},"onTimeout":{"description":"On timeout","ignoreCase":"all","enum":["reject","resume"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Install Apple provisioning profile\n\nInstall an Apple provisioning profile required to build on a macOS agent machine","ignoreCase":"value","pattern":"^InstallAppleProvisioningProfile@1$"},"inputs":{"description":"Install Apple provisioning profile inputs","properties":{"provisioningProfileLocation":{"description":"Provisioning profile location","ignoreCase":"all","enum":["secureFiles","sourceRepository"]},"provProfileSecureFile":{"type":"string","description":"Provisioning profile","ignoreCase":"key"},"provProfileSourceRepository":{"type":"string","description":"Provisioning profile","ignoreCase":"key"},"removeProfile":{"type":"boolean","description":"Remove profile after build","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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":{"description":"SonarQube for MSBuild - End Analysis\n\n[DEPRECATED] Finish the analysis and upload the results to SonarQube","ignoreCase":"value","pattern":"^SonarQubePostTest@1$"},"inputs":{"description":"SonarQube for MSBuild - End Analysis inputs","properties":{},"additionalProperties":false,"required":[]}},"deprecationMessage":"SonarQubePostTest is deprecated - [DEPRECATED] Finish the analysis and upload the results to SonarQube","doNotSuggest":true,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Rich Code Navigation Indexer\n\nIndexes repository and stores navigation information","ignoreCase":"value","pattern":"^RichCodeNavIndexer@0$"},"inputs":{"description":"Rich Code Navigation Indexer inputs","properties":{"languages":{"type":"string","description":"Languages to index","ignoreCase":"key"},"githubServiceConnection":{"type":"string","description":"GitHub service connection","ignoreCase":"key"},"environment":{"description":"VS Rich Code Navigation Environment","ignoreCase":"all","enum":["production","staging","development"]},"nugetFeed":{"type":"string","description":"NuGet feed source","ignoreCase":"key"},"nugetVersion":{"type":"string","description":"VS Rich Code Navigation package version","ignoreCase":"key"},"isPrivateFeed":{"type":"boolean","description":"Is Private NuGet Feed?","ignoreCase":"key"},"configFiles":{"type":"string","description":"Project Configuration Files","ignoreCase":"key"},"richNavLogOutputDirectory":{"type":"string","description":"Rich Navigation MsBuild log files output directory","ignoreCase":"key"},"sourceRootDir":{"type":"string","description":"Root directory for source files if different than default","ignoreCase":"key"},"tempDirectory":{"type":"string","description":"Rich Nav temporary output directory","ignoreCase":"key"},"uploadRichNavArtifacts":{"type":"boolean","description":"Should Rich Nav logs be published as an artifact?","ignoreCase":"key"},"disableLsifLogging":{"type":"boolean","description":"Disable information logging from LSIF generation?","ignoreCase":"key"},"maxParallelIndexingJobs":{"type":"integer","description":"Max number of parallel indexing jobs","ignoreCase":"key"},"typescriptVersion":{"type":"string","description":"TypeScript tooling version","ignoreCase":"key"},"csharpVersion":{"type":"string","description":"Csharp tooling version","ignoreCase":"key"},"advancedOptionsCpp":{"type":"string","description":"Advanced c++ options","ignoreCase":"key"},"defaultExpiry":{"type":"integer","description":"Default Expiry","ignoreCase":"key"},"prExpiry":{"type":"integer","description":"PR Expiry","ignoreCase":"key"},"branchRetention":{"type":"string","description":"Branch Retention","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Insert VS Payload\n\nCreates a PR for a Payload Insertion into VS","ignoreCase":"value","pattern":"^MicroBuildInsertVsPayload@3$"},"inputs":{"description":"MicroBuild Insert VS Payload inputs","properties":{"TargetBranch":{"type":"string","description":"Target Branch","ignoreCase":"key"},"InsertionTopicBranch":{"type":"string","description":"Topic Branch Name","ignoreCase":"key"},"TeamName":{"type":"string","description":"Team Name","ignoreCase":"key"},"TeamEmail":{"type":"string","description":"Team Email Address","ignoreCase":"key"},"ComponentJsonValues":{"type":"string","description":"Component.json Values","ignoreCase":"key"},"DefaultConfigValues":{"type":"string","description":"Default.config Values","ignoreCase":"key"},"PackagePropsValues":{"type":"string","description":"Packages.props Values","ignoreCase":"key"},"AssemblyVersionsValues":{"type":"string","description":"AssemblyVersions.tt Values","ignoreCase":"key"},"RevisionTextFiles":{"type":"string","description":"Revision.txt Files","ignoreCase":"key"},"CustomScriptExecutionCommand":{"type":"string","description":"Custom Script Execution Command","ignoreCase":"key"},"InsertionPayloadName":{"type":"string","description":"Payload Name","ignoreCase":"key"},"SkipCreatePR":{"type":"boolean","description":"Do Not Create","ignoreCase":"key"},"AllowTopicBranchUpdate":{"type":"boolean","description":"Allow Topic Branch Update","ignoreCase":"key"},"InsertionDescription":{"type":"string","description":"Description","ignoreCase":"key"},"InsertionReviewers":{"type":"string","description":"Reviewers","ignoreCase":"key"},"InsertionBuildPolicy":{"description":"Build Policy to Queue","ignoreCase":"all","enum":["Request Perf DDRITs"]},"InsertionAccessToken":{"type":"string","description":"Access Token to Use","ignoreCase":"key"},"InsertionWaitMinutes":{"type":"string","description":"Minutes to Wait for PR Completion","ignoreCase":"key"},"AutoCompletePR":{"type":"boolean","description":"Set AutoComplete","ignoreCase":"key"},"AutoCompleteMergeStrategy":{"description":"AutoComplete Merge Strategy","ignoreCase":"all","enum":["NoFastForward","Squash","Rebase","RebaseMerge"]},"AddCommitsToPR":{"type":"boolean","description":"Add Related Commits","ignoreCase":"key"},"CommitsFile":{"type":"string","description":"File Containing Commit Ids","ignoreCase":"key"},"CommitsUri":{"type":"string","description":"Uri to Commits Repo","ignoreCase":"key"},"AddCommitAuthorsToPR":{"type":"boolean","description":"Add Commit Authors to Reviewers","ignoreCase":"key"},"LinkWorkItemsToPR":{"type":"boolean","description":"Link Work Items","ignoreCase":"key"},"AccountUri":{"type":"string","description":"Target Account Uri","ignoreCase":"key"},"TeamProject":{"type":"string","description":"Target Team Project","ignoreCase":"key"},"Repository":{"type":"string","description":"Target Repository","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Insert VS Payload\n\nCreates a PR for a Payload Insertion into VS","ignoreCase":"value","pattern":"^MicroBuildInsertVsPayload@4$"},"inputs":{"description":"MicroBuild Insert VS Payload inputs","properties":{"TargetBranch":{"type":"string","description":"Target Branch","ignoreCase":"key"},"InsertionTopicBranch":{"type":"string","description":"Topic Branch Name","ignoreCase":"key"},"TeamName":{"type":"string","description":"Team Name","ignoreCase":"key"},"TeamEmail":{"type":"string","description":"Team Email Address","ignoreCase":"key"},"ComponentJsonValues":{"type":"string","description":"Component.json Values","ignoreCase":"key"},"DefaultConfigValues":{"type":"string","description":"Default.config Values","ignoreCase":"key"},"PackagePropsValues":{"type":"string","description":"Packages.props Values","ignoreCase":"key"},"AssemblyVersionsValues":{"type":"string","description":"AssemblyVersions.tt Values","ignoreCase":"key"},"RevisionTextFiles":{"type":"string","description":"Revision.txt Files","ignoreCase":"key"},"ComponentSWRFiles":{"type":"string","description":"Component.swr Files","ignoreCase":"key"},"CustomScriptExecutionCommand":{"type":"string","description":"Custom Script Execution Command","ignoreCase":"key"},"InsertionPayloadName":{"type":"string","description":"Payload Name","ignoreCase":"key"},"SkipCreatePR":{"type":"boolean","description":"Do Not Create","ignoreCase":"key"},"AllowTopicBranchUpdate":{"type":"boolean","description":"Allow Topic Branch Update","ignoreCase":"key"},"InsertionDescription":{"type":"string","description":"Description","ignoreCase":"key"},"InsertionReviewers":{"type":"string","description":"Reviewers","ignoreCase":"key"},"InsertionBuildPolicy":{"description":"Build Policy to Queue","ignoreCase":"all","enum":["Request Perf DDRITs"]},"InsertionAccessToken":{"type":"string","description":"Access Token to Use","ignoreCase":"key"},"InsertionWaitMinutes":{"type":"string","description":"Minutes to Wait for PR Completion","ignoreCase":"key"},"AutoCompletePR":{"type":"boolean","description":"Set AutoComplete","ignoreCase":"key"},"AutoCompleteMergeStrategy":{"description":"AutoComplete Merge Strategy","ignoreCase":"all","enum":["NoFastForward","Squash","Rebase","RebaseMerge"]},"AddCommitsToPR":{"type":"boolean","description":"Add Related Commits","ignoreCase":"key"},"CommitsFile":{"type":"string","description":"File Containing Commit Ids","ignoreCase":"key"},"CommitsUri":{"type":"string","description":"Uri to Commits Repo","ignoreCase":"key"},"AddCommitAuthorsToPR":{"type":"boolean","description":"Add Commit Authors to Reviewers","ignoreCase":"key"},"LinkWorkItemsToPR":{"type":"boolean","description":"Link Work Items","ignoreCase":"key"},"AccountUri":{"type":"string","description":"Target Account Uri","ignoreCase":"key"},"TeamProject":{"type":"string","description":"Target Team Project","ignoreCase":"key"},"Repository":{"type":"string","description":"Target Repository","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"PyPI publisher\n\nCreate and upload an sdist or wheel to a PyPI-compatible index using Twine","ignoreCase":"value","pattern":"^PyPIPublisher@0$"},"inputs":{"description":"PyPI publisher inputs","properties":{"pypiConnection":{"type":"string","description":"PyPI service connection","ignoreCase":"key","aliases":["serviceEndpoint"]},"packageDirectory":{"type":"string","description":"Python package directory","ignoreCase":"key","aliases":["wd"]},"alsoPublishWheel":{"type":"boolean","description":"Also publish a wheel","ignoreCase":"key","aliases":["wheel"]}},"additionalProperties":false,"required":["pypiConnection","packageDirectory"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Chef Knife\n\nRun scripts with Knife commands on your Chef workstation","ignoreCase":"value","pattern":"^ChefKnife@1$"},"inputs":{"description":"Chef Knife inputs","properties":{"ConnectedServiceName":{"type":"string","description":"Chef Subscription","ignoreCase":"key"},"ScriptPath":{"type":"string","description":"Script Path","ignoreCase":"key"},"ScriptArguments":{"type":"string","description":"Script Arguments","ignoreCase":"key"}},"additionalProperties":false,"required":["ConnectedServiceName","ScriptPath"]}},"deprecationMessage":"ChefKnife is deprecated - Run scripts with Knife commands on your Chef workstation","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Go tool installer\n\nFind in cache or download a specific version of Go and add it to the PATH","ignoreCase":"value","pattern":"^GoTool@0$"},"inputs":{"description":"Go tool installer inputs","properties":{"version":{"type":"string","description":"Version","ignoreCase":"key"},"goPath":{"type":"string","description":"GOPATH","ignoreCase":"key"},"goBin":{"type":"string","description":"GOBIN","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure Web App Route Traffic\n\nRoutes traffic of a Web App to an App Slot by the specified percentage","ignoreCase":"value","pattern":"^azureWebAppRouteTraffic@0$"},"inputs":{"description":"Azure Web App Route Traffic inputs","properties":{"ConnectedServiceName":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"WebAppName":{"type":"string","description":"App Service name","ignoreCase":"key"},"ResourceGroupName":{"type":"string","description":"Resource group","ignoreCase":"key"},"Slot":{"type":"string","description":"Experiment slot","ignoreCase":"key"},"percentTraffic":{"type":"string","description":"Percentage to Route","ignoreCase":"key"}},"additionalProperties":false,"required":["ConnectedServiceName","WebAppName","ResourceGroupName","Slot","percentTraffic"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Xcode Package iOS\n\nGenerate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)","ignoreCase":"value","pattern":"^XcodePackageiOS@0$"},"inputs":{"description":"Xcode Package iOS inputs","properties":{"appName":{"type":"string","description":"Name of .app","ignoreCase":"key"},"ipaName":{"type":"string","description":"Name of .ipa","ignoreCase":"key"},"provisioningProfile":{"type":"string","description":"Provisioning Profile Name","ignoreCase":"key"},"sdk":{"type":"string","description":"SDK","ignoreCase":"key"},"appPath":{"type":"string","description":"Path to .app","ignoreCase":"key"},"ipaPath":{"type":"string","description":"Path to place .ipa","ignoreCase":"key"}},"additionalProperties":false,"required":["provisioningProfile"]}},"deprecationMessage":"XcodePackageiOS is deprecated - Generate an .ipa file from Xcode build output using xcrun (Xcode 7 or below)","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Go\n\nGet, build, or test a Go application, or run a custom Go command","ignoreCase":"value","pattern":"^Go@0$"},"inputs":{"description":"Go inputs","properties":{"command":{"description":"Command","ignoreCase":"all","enum":["get","build","test","custom"]},"customCommand":{"type":"string","description":"Custom command","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Tokenize with XPath/Regular expressions\n\nReplaces ____ and/or XPath for XML documents with User Defined variables or configuration json document","ignoreCase":"value","pattern":"^Tokenizer@2$"},"inputs":{"description":"Tokenize with XPath/Regular expressions inputs","properties":{"SourcePath":{"type":"string","description":"Source filename","ignoreCase":"key"},"DestinationPath":{"type":"string","description":"Destination filename","ignoreCase":"key"},"ConfigurationJsonFile":{"type":"string","description":"Configuration Json filename","ignoreCase":"key"},"ReplaceUndefinedValuesWithEmpty":{"type":"boolean","description":"Replace undefined values with empty","ignoreCase":"key"}},"additionalProperties":false,"required":["SourcePath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Publish Pipeline Metadata\n\nPublish Pipeline Metadata to Evidence store","ignoreCase":"value","pattern":"^PublishPipelineMetadata@0$"},"inputs":{"description":"Publish Pipeline Metadata inputs","properties":{},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Docker\n\nBuild, tag, push, or run Docker images, or run a Docker command","ignoreCase":"value","pattern":"^Docker@1$"},"inputs":{"description":"Docker inputs","properties":{"containerregistrytype":{"description":"Container registry type","ignoreCase":"all","enum":["Azure Container Registry","Container Registry"]},"addBaseImageData":{"type":"boolean","description":"Add base image metadata to image(s)","ignoreCase":"key"},"dockerRegistryEndpoint":{"type":"string","description":"Docker registry service connection","ignoreCase":"key"},"azureSubscriptionEndpoint":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"azureContainerRegistry":{"type":"string","description":"Azure container registry","ignoreCase":"key"},"command":{"description":"Command","ignoreCase":"all","enum":["Build an image","Tag image","Push an image","Run an image","login","logout"]},"dockerFile":{"type":"string","description":"Dockerfile","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"pushMultipleImages":{"type":"boolean","description":"Push multiple images","ignoreCase":"key"},"tagMultipleImages":{"type":"boolean","description":"Tag multiple images","ignoreCase":"key"},"imageName":{"type":"string","description":"Image name","ignoreCase":"key"},"imageNamesPath":{"type":"string","description":"Image names path","ignoreCase":"key"},"qualifyImageName":{"type":"boolean","description":"Qualify image name","ignoreCase":"key"},"qualifySourceImageName":{"type":"boolean","description":"Qualify source image name","ignoreCase":"key"},"includeSourceTags":{"type":"boolean","description":"Include source tags","ignoreCase":"key"},"includeLatestTag":{"type":"boolean","description":"Include latest tag","ignoreCase":"key"},"addDefaultLabels":{"type":"boolean","description":"Add default labels","ignoreCase":"key"},"useDefaultContext":{"type":"boolean","description":"Use default build context","ignoreCase":"key"},"buildContext":{"type":"string","description":"Build context","ignoreCase":"key"},"imageDigestFile":{"type":"string","description":"Image digest file","ignoreCase":"key"},"containerName":{"type":"string","description":"Container name","ignoreCase":"key"},"ports":{"type":"string","description":"Ports","ignoreCase":"key"},"volumes":{"type":"string","description":"Volumes","ignoreCase":"key"},"envVars":{"type":"string","description":"Environment variables","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key"},"entrypointOverride":{"type":"string","description":"Entry point override","ignoreCase":"key"},"containerCommand":{"type":"string","description":"Container command","ignoreCase":"key"},"runInBackground":{"type":"boolean","description":"Run in background","ignoreCase":"key"},"restartPolicy":{"description":"Restart policy","ignoreCase":"all","enum":["no","onFailure","always","unlessStopped"]},"maxRestartRetries":{"type":"string","description":"Maximum restart retries","ignoreCase":"key"},"dockerHostEndpoint":{"type":"string","description":"Docker host service connection","ignoreCase":"key"},"enforceDockerNamingConvention":{"type":"boolean","description":"Force image name to follow Docker naming convention","ignoreCase":"key"},"memoryLimit":{"type":"string","description":"Memory limit","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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":{"description":"Docker\n\nBuild, tag, push, or run Docker images, or run a Docker command","ignoreCase":"value","pattern":"^Docker@0$"},"inputs":{"description":"Docker inputs","properties":{"containerregistrytype":{"description":"Container Registry Type","ignoreCase":"all","enum":["Azure Container Registry","Container Registry"]},"dockerRegistryConnection":{"type":"string","description":"Docker Registry Service Connection","ignoreCase":"key","aliases":["dockerRegistryEndpoint"]},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["azureSubscriptionEndpoint"]},"azureContainerRegistry":{"type":"string","description":"Azure Container Registry","ignoreCase":"key"},"action":{"description":"Action","ignoreCase":"all","enum":["Build an image","Tag images","Push an image","Push images","Run an image","Run a Docker command"]},"dockerFile":{"type":"string","description":"Docker File","ignoreCase":"key"},"addBaseImageData":{"type":"boolean","description":"Add base image metadata to image(s)","ignoreCase":"key"},"buildArguments":{"type":"string","description":"Build Arguments","ignoreCase":"key"},"defaultContext":{"type":"boolean","description":"Use Default Build Context","ignoreCase":"key"},"context":{"type":"string","description":"Build Context","ignoreCase":"key"},"imageName":{"type":"string","description":"Image Name","ignoreCase":"key"},"imageNamesPath":{"type":"string","description":"Image Names Path","ignoreCase":"key"},"qualifyImageName":{"type":"boolean","description":"Qualify Image Name","ignoreCase":"key"},"additionalImageTags":{"type":"string","description":"Additional Image Tags","ignoreCase":"key"},"includeSourceTags":{"type":"boolean","description":"Include Source Tags","ignoreCase":"key"},"includeLatestTag":{"type":"boolean","description":"Include Latest Tag","ignoreCase":"key"},"imageDigestFile":{"type":"string","description":"Image Digest File","ignoreCase":"key"},"containerName":{"type":"string","description":"Container Name","ignoreCase":"key"},"ports":{"type":"string","description":"Ports","ignoreCase":"key"},"volumes":{"type":"string","description":"Volumes","ignoreCase":"key"},"envVars":{"type":"string","description":"Environment Variables","ignoreCase":"key"},"workDir":{"type":"string","description":"Working Directory","ignoreCase":"key"},"entrypoint":{"type":"string","description":"Entry Point Override","ignoreCase":"key"},"containerCommand":{"type":"string","description":"Command","ignoreCase":"key"},"detached":{"type":"boolean","description":"Run In Background","ignoreCase":"key"},"restartPolicy":{"description":"Restart Policy","ignoreCase":"all","enum":["no","onFailure","always","unlessStopped"]},"restartMaxRetries":{"type":"string","description":"Maximum Restart Retries","ignoreCase":"key"},"customCommand":{"type":"string","description":"Command","ignoreCase":"key"},"dockerHostEndpoint":{"type":"string","description":"Docker Host Service Connection","ignoreCase":"key"},"enforceDockerNamingConvention":{"type":"boolean","description":"Force image name to follow Docker naming convention","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["cwd"]},"memory":{"type":"string","description":"Memory limit","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Publish Artifact Services Drop -preview\n\nPublish to Artifact Services Drop - Internal Preview","ignoreCase":"value","pattern":"^artifactDropTask@0$"},"inputs":{"description":"Publish Artifact Services Drop -preview inputs","properties":{"dropServiceURI":{"type":"string","description":"Drop Service Endpoint","ignoreCase":"key"},"buildNumber":{"type":"string","description":"Drop Name","ignoreCase":"key"},"sourcePath":{"type":"string","description":"Upload Source Root Path","ignoreCase":"key"},"dropExePath":{"type":"string","description":"Override drop.exe Path","ignoreCase":"key"},"toLowerCase":{"type":"boolean","description":"Lowercase drop name","ignoreCase":"key"},"detailedLog":{"type":"boolean","description":"Verbose Logging","ignoreCase":"key"},"usePat":{"type":"boolean","description":"Use Personal Access Token","ignoreCase":"key"},"retentionDays":{"type":"string","description":"Retention (in days)","ignoreCase":"key"},"dropMetadataContainerName":{"type":"string","description":"Drop Metadata Container Name","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Jenkins queue job\n\nQueue a job on a Jenkins server","ignoreCase":"value","pattern":"^JenkinsQueueJob@2$"},"inputs":{"description":"Jenkins queue job inputs","properties":{"serverEndpoint":{"type":"string","description":"Jenkins service connection","ignoreCase":"key"},"jobName":{"type":"string","description":"Job name","ignoreCase":"key"},"isMultibranchJob":{"type":"boolean","description":"Job is of multibranch pipeline type","ignoreCase":"key"},"multibranchPipelineBranch":{"type":"string","description":"Multibranch pipeline branch","ignoreCase":"key"},"captureConsole":{"type":"boolean","description":"Capture console output and wait for completion","ignoreCase":"key"},"capturePipeline":{"type":"boolean","description":"Capture pipeline output and wait for pipeline completion","ignoreCase":"key"},"isParameterizedJob":{"type":"boolean","description":"Parameterized job","ignoreCase":"key","aliases":["parameterizedJob"]},"jobParameters":{"type":"string","description":"Job parameters","ignoreCase":"key"},"failOnUnstableResult":{"type":"boolean","description":"Fail on unstable result","ignoreCase":"key"},"retryCount":{"type":"string","description":"Number of retries for failed connection","ignoreCase":"key"},"delayBetweenRetries":{"type":"string","description":"Time between retries","ignoreCase":"key"}},"additionalProperties":false,"required":["serverEndpoint","jobName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Jenkins Queue Job\n\nQueue a job on a Jenkins server","ignoreCase":"value","pattern":"^JenkinsQueueJob@1$"},"inputs":{"description":"Jenkins Queue Job inputs","properties":{"serverEndpoint":{"type":"string","description":"Jenkins service endpoint","ignoreCase":"key"},"jobName":{"type":"string","description":"Job name","ignoreCase":"key"},"isMultibranchJob":{"type":"boolean","description":"Job is of Multibranch Pipeline type","ignoreCase":"key"},"multibranchPipelineBranch":{"type":"string","description":"Multibranch Pipeline Branch","ignoreCase":"key"},"captureConsole":{"type":"boolean","description":"Capture console output and wait for completion","ignoreCase":"key"},"capturePipeline":{"type":"boolean","description":"Capture pipeline output and wait for pipeline completion","ignoreCase":"key"},"parameterizedJob":{"type":"boolean","description":"Parameterized job","ignoreCase":"key"},"jobParameters":{"type":"string","description":"Job parameters","ignoreCase":"key"}},"additionalProperties":false,"required":["serverEndpoint","jobName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"FTP upload\n\nUpload files using FTP","ignoreCase":"value","pattern":"^FtpUpload@1$"},"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"]},"clean":{"type":"boolean","description":"Delete remote directory","ignoreCase":"key"},"cleanContents":{"type":"boolean","description":"Clear remote directory contents","ignoreCase":"key"},"overwrite":{"type":"boolean","description":"Overwrite","ignoreCase":"key"},"preservePaths":{"type":"boolean","description":"Preserve file paths","ignoreCase":"key"},"trustSSL":{"type":"boolean","description":"Trust server certificate","ignoreCase":"key"}},"additionalProperties":false,"required":["rootDirectory"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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":{"description":"Windows machine file copy\n\nCopy files to remote Windows machines","ignoreCase":"value","pattern":"^WindowsMachineFileCopy@1$"},"inputs":{"description":"Windows machine file copy inputs","properties":{"SourcePath":{"type":"string","description":"Source","ignoreCase":"key"},"EnvironmentName":{"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"},"ResourceFilteringMethod":{"description":"Select Machines By","ignoreCase":"all","enum":["machineNames","tags"]},"MachineNames":{"type":"string","description":"Filter Criteria","ignoreCase":"key"}},"additionalProperties":false,"required":["SourcePath","TargetPath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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","TargetPath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Send email\n\nSend an email to 1 or more addresses via the SMTP server you provide","ignoreCase":"value","pattern":"^SendEmail@1$"},"inputs":{"description":"Send email inputs","properties":{"To":{"type":"string","description":"To Addresses","ignoreCase":"key"},"CC":{"type":"string","description":"CC Addresses","ignoreCase":"key"},"BCC":{"type":"string","description":"BCC Addresses","ignoreCase":"key"},"From":{"type":"string","description":"From Address","ignoreCase":"key"},"Subject":{"type":"string","description":"Mail Subject","ignoreCase":"key"},"Body":{"type":"string","description":"Mail Body","ignoreCase":"key"},"BodyAsHtml":{"type":"boolean","description":"Is HTML Body?:","ignoreCase":"key"},"AddAttachment":{"type":"boolean","description":"Add Attachment?:","ignoreCase":"key"},"Attachment":{"type":"string","description":"Attachment (absolute path)","ignoreCase":"key"},"SmtpServer":{"type":"string","description":"SMTP Server","ignoreCase":"key"},"SmtpPort":{"type":"string","description":"SMTP Port","ignoreCase":"key"},"SmtpUsername":{"type":"string","description":"SMTP Username","ignoreCase":"key"},"SmtpPassword":{"type":"string","description":"SMTP Password","ignoreCase":"key"},"UseSSL":{"type":"boolean","description":"SMTP Use SSL?","ignoreCase":"key"}},"additionalProperties":false,"required":["To","From","Subject"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Android Build\n\n[Deprecated] Use Gradle","ignoreCase":"value","pattern":"^AndroidBuild@1$"},"inputs":{"description":"Android Build inputs","properties":{"gradleWrapper":{"type":"string","description":"Location of Gradle Wrapper","ignoreCase":"key"},"gradleProj":{"type":"string","description":"Project Directory","ignoreCase":"key"},"gradleArguments":{"type":"string","description":"Gradle Arguments","ignoreCase":"key"},"avdName":{"type":"string","description":"Name","ignoreCase":"key"},"createAvd":{"type":"boolean","description":"Create AVD","ignoreCase":"key"},"emulatorTarget":{"type":"string","description":"AVD Target SDK","ignoreCase":"key"},"emulatorDevice":{"type":"string","description":"AVD Device","ignoreCase":"key"},"avdAbi":{"type":"string","description":"AVD ABI","ignoreCase":"key"},"avdForce":{"type":"boolean","description":"Overwrite Existing AVD","ignoreCase":"key"},"avdOptionalArgs":{"type":"string","description":"Create AVD Optional Arguments","ignoreCase":"key"},"startEmulator":{"type":"boolean","description":"Start and Stop Android Emulator","ignoreCase":"key"},"emulatorTimeout":{"type":"string","description":"Timeout in Seconds","ignoreCase":"key"},"emulatorHeadless":{"type":"boolean","description":"Headless Display","ignoreCase":"key"},"emulatorOptionalArgs":{"type":"string","description":"Emulator Optional Arguments","ignoreCase":"key"},"deleteAvd":{"type":"boolean","description":"Delete AVD","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"deprecationMessage":"AndroidBuild is deprecated - [Deprecated] Use Gradle","doNotSuggest":true,"firstProperty":["task"],"required":["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 (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":{"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@0$"},"inputs":{"description":"Python twine upload authenticate inputs","properties":{"artifactFeeds":{"type":"string","description":"My feeds (select below)","ignoreCase":"key","aliases":["feedList"]},"externalFeeds":{"type":"string","description":"Feeds from external organizations","ignoreCase":"key","aliases":["externalSources"]},"publishPackageMetadata":{"type":"boolean","description":"Publish pipeline metadata","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"IIS web app deploy\n\nDeploy a website or web application using Web Deploy","ignoreCase":"value","pattern":"^IISWebAppDeploymentOnMachineGroup@0$"},"inputs":{"description":"IIS web app deploy inputs","properties":{"WebSiteName":{"type":"string","description":"Website Name","ignoreCase":"key"},"VirtualApplication":{"type":"string","description":"Virtual Application","ignoreCase":"key"},"Package":{"type":"string","description":"Package or Folder","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"},"TakeAppOfflineFlag":{"type":"boolean","description":"Take App Offline","ignoreCase":"key"},"AdditionalArguments":{"type":"string","description":"Additional Arguments","ignoreCase":"key"},"XmlTransformation":{"type":"boolean","description":"XML transformation","ignoreCase":"key"},"XmlVariableSubstitution":{"type":"boolean","description":"XML variable substitution","ignoreCase":"key"},"JSONFiles":{"type":"string","description":"JSON variable substitution","ignoreCase":"key"}},"additionalProperties":false,"required":["WebSiteName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Python script\n\nRun a Python file or inline script","ignoreCase":"value","pattern":"^PythonScript@0$"},"inputs":{"description":"Python script inputs","properties":{"scriptSource":{"description":"Script source","ignoreCase":"all","enum":["filePath","inline"]},"scriptPath":{"type":"string","description":"Script path","ignoreCase":"key"},"script":{"type":"string","description":"Script","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"pythonInterpreter":{"type":"string","description":"Python interpreter","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":{"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":{"description":"Helm tool installer\n\nInstall Helm and Kubernetes on an agent machine","ignoreCase":"value","pattern":"^HelmInstaller@0$"},"inputs":{"description":"Helm tool installer inputs","properties":{"helmVersion":{"type":"string","description":"Helm Version Spec","ignoreCase":"key"},"checkLatestHelmVersion":{"type":"boolean","description":"Check for latest version of Helm","ignoreCase":"key"},"installKubectl":{"type":"boolean","description":"Install Kubectl","ignoreCase":"key","aliases":["installKubeCtl"]},"kubectlVersion":{"type":"string","description":"Kubectl Version Spec","ignoreCase":"key"},"checkLatestKubectl":{"type":"boolean","description":"Check for latest version of kubectl","ignoreCase":"key","aliases":["checkLatestKubeCtl"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Xamarin License\n\n[Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com","ignoreCase":"value","pattern":"^XamarinLicense@1$"},"inputs":{"description":"Xamarin License inputs","properties":{"action":{"description":"Action","ignoreCase":"all","enum":["Activate","Deactivate"]},"email":{"type":"string","description":"Email","ignoreCase":"key"},"password":{"type":"string","description":"Password","ignoreCase":"key"},"product":{"description":"Xamarin Product","ignoreCase":"all","enum":["MA","MT","MM"]},"timeout":{"type":"string","description":"Timeout in Seconds","ignoreCase":"key"}},"additionalProperties":false,"required":["email","password"]}},"deprecationMessage":"XamarinLicense is deprecated - [Deprecated] Upgrade to free version of Xamarin: https://store.xamarin.com","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"NuGet authenticate\n\nConfigure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 2.1.400, or MSBuild >= 15.8.166.59604","ignoreCase":"value","pattern":"^NuGetAuthenticate@0$"},"inputs":{"description":"NuGet authenticate inputs","properties":{"nuGetServiceConnections":{"type":"string","description":"Service connection credentials for feeds outside this organization","ignoreCase":"key"},"forceReinstallCredentialProvider":{"type":"boolean","description":"Reinstall the credential provider even if already installed","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Component Governance Detection\n\nInclude with your build to enable automatic Component Governance detection.","ignoreCase":"value","pattern":"^ComponentGovernanceComponentDetection@0$"},"inputs":{"description":"Component Governance Detection inputs","properties":{"scanType":{"description":"Scan mode","ignoreCase":"all","enum":["Register","LogOnly"]},"governanceProduct":{"type":"string","description":"Product","ignoreCase":"key"},"autoInjected":{"type":"boolean","description":"AutoInjected","ignoreCase":"key"},"whatif":{"type":"boolean","description":"[OBSOLETE] Whatif Mode (uncheck and use Scan Mode instead)","ignoreCase":"key"},"useDefaultDetectors":{"type":"boolean","description":"Use the default dependency detectors","ignoreCase":"key"},"detectorsToRun":{"description":"Dependency detectors override","ignoreCase":"all","enum":["NuGet","Npm","Maven"]},"verbosity":{"description":"Verbosity","ignoreCase":"all","enum":["Register","Normal","Verbose"]},"sourceScanPath":{"type":"string","description":"Working folder","ignoreCase":"key"},"detectorsFilter":{"type":"string","description":"Component detectors filter","ignoreCase":"key"},"dockerImagesToScan":{"type":"string","description":"Docker images to scan","ignoreCase":"key"},"alertWarningLevel":{"description":"Minimum alert severity to warn","ignoreCase":"all","enum":["Never","Critical","High","Medium","Low"]},"failOnAlert":{"type":"boolean","description":"Fail build on alerts above threshold","ignoreCase":"key"},"ignoreDirectories":{"type":"string","description":"Folder exclusion list","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Download GitHub Nuget Packages\n\nRestore your nuget packages using dotnet CLI","ignoreCase":"value","pattern":"^DownloadGitHubNugetPackage@1$"},"inputs":{"description":"Download GitHub Nuget Packages inputs","properties":{"packageName":{"type":"string","description":"Package Name","ignoreCase":"key"},"version":{"type":"string","description":"Package Version","ignoreCase":"key"},"externalFeedCredentials":{"type":"string","description":"Credentials for feed from GitHub","ignoreCase":"key","aliases":["externalEndpoints"]},"restoreDirectory":{"type":"string","description":"Destination directory","ignoreCase":"key","aliases":["packagesDirectory"]}},"additionalProperties":false,"required":["packageName","version"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Maven Authenticate\n\nProvides credentials for Azure Artifacts feeds and external maven repositories","ignoreCase":"value","pattern":"^MavenAuthenticate@0$"},"inputs":{"description":"Maven Authenticate inputs","properties":{"artifactsFeeds":{"type":"string","description":"Feeds","ignoreCase":"key"},"mavenServiceConnections":{"type":"string","description":"Credentials for repositories outside this organization/collection","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Review App\n\nUse this task under deploy phase provider to create a resource dynamically","ignoreCase":"value","pattern":"^ReviewApp@0$"},"inputs":{"description":"Review App inputs","properties":{"resourceName":{"type":"string","description":"Resource name","ignoreCase":"key"},"baseEnvironmentName":{"type":"string","description":"Environment name","ignoreCase":"key"},"reviewResourceName":{"type":"string","description":"Review Resource Name","ignoreCase":"key"}},"additionalProperties":false,"required":["resourceName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Java tool installer\n\nAcquire a specific version of Java from a user-supplied Azure blob or the tool cache and sets JAVA_HOME","ignoreCase":"value","pattern":"^JavaToolInstaller@0$"},"inputs":{"description":"Java tool installer inputs","properties":{"versionSpec":{"type":"string","description":"JDK version","ignoreCase":"key"},"jdkArchitectureOption":{"description":"JDK architecture","ignoreCase":"all","enum":["x64","x86"]},"jdkSourceOption":{"description":"JDK source","ignoreCase":"all","enum":["AzureStorage","LocalDirectory","PreInstalled"]},"jdkFile":{"type":"string","description":"JDK file","ignoreCase":"key"},"azureResourceManagerEndpoint":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"azureStorageAccountName":{"type":"string","description":"Storage account name","ignoreCase":"key"},"azureContainerName":{"type":"string","description":"Container name","ignoreCase":"key"},"azureCommonVirtualFile":{"type":"string","description":"Common virtual path","ignoreCase":"key"},"jdkDestinationDirectory":{"type":"string","description":"Destination directory","ignoreCase":"key"},"cleanDestinationDirectory":{"type":"boolean","description":"Clean destination directory","ignoreCase":"key"},"createExtractDirectory":{"type":"boolean","description":"Create directory for extracting","ignoreCase":"key"}},"additionalProperties":false,"required":["jdkArchitectureOption","jdkSourceOption"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Chef\n\nDeploy to Chef environments by editing environment attributes","ignoreCase":"value","pattern":"^Chef@1$"},"inputs":{"description":"Chef inputs","properties":{"connectedServiceName":{"type":"string","description":"Chef Service Connection","ignoreCase":"key"},"Environment":{"type":"string","description":"Environment","ignoreCase":"key"},"Attributes":{"type":"string","description":"Environment Attributes","ignoreCase":"key"},"chefWaitTime":{"type":"string","description":"Wait Time","ignoreCase":"key"}},"additionalProperties":false,"required":["connectedServiceName","Environment","Attributes"]}},"deprecationMessage":"Chef is deprecated - Deploy to Chef environments by editing environment attributes","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure Functions\n\nUpdate a function app with .NET, Python, JavaScript, PowerShell, Java based web applications","ignoreCase":"value","pattern":"^AzureFunctionApp@1$"},"inputs":{"description":"Azure Functions inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"appType":{"description":"App type","ignoreCase":"all","enum":["functionApp","functionAppLinux"]},"appName":{"type":"string","description":"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","JAVA|8","JAVA|11","NODE|8","NODE|10","NODE|12","NODE|14","PYTHON|3.6","PYTHON|3.7","PYTHON|3.8"]},"startUpCommand":{"type":"string","description":"Startup command ","ignoreCase":"key"},"customWebConfig":{"type":"string","description":"Generate web.config parameters for Python, Node.js, Go and Java apps","ignoreCase":"key"},"appSettings":{"type":"string","description":"App settings","ignoreCase":"key"},"configurationStrings":{"type":"string","description":"Configuration settings","ignoreCase":"key"},"deploymentMethod":{"description":"Deployment method","ignoreCase":"all","enum":["auto","zipDeploy","runFromPackage"]}},"additionalProperties":false,"required":["azureSubscription","appType","appName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"npm authenticate (for task runners)\n\nDon't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.","ignoreCase":"value","pattern":"^npmAuthenticate@0$"},"inputs":{"description":"npm authenticate (for task runners) inputs","properties":{"workingFile":{"type":"string","description":".npmrc file to authenticate","ignoreCase":"key"},"customEndpoint":{"type":"string","description":"Credentials for registries outside this organization/collection","ignoreCase":"key"}},"additionalProperties":false,"required":["workingFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MSBuild\n\nBuild with MSBuild","ignoreCase":"value","pattern":"^MSBuild@1$"},"inputs":{"description":"MSBuild inputs","properties":{"solution":{"type":"string","description":"Project","ignoreCase":"key"},"msbuildLocationMethod":{"description":"MSBuild","ignoreCase":"all","enum":["version","location"]},"msbuildVersion":{"description":"MSBuild Version","ignoreCase":"all","enum":["latest","17.0","16.0","15.0","14.0","12.0","4.0"]},"msbuildArchitecture":{"description":"MSBuild Architecture","ignoreCase":"all","enum":["x86","x64"]},"msbuildLocation":{"type":"string","description":"Path to MSBuild","ignoreCase":"key"},"platform":{"type":"string","description":"Platform","ignoreCase":"key"},"configuration":{"type":"string","description":"Configuration","ignoreCase":"key"},"msbuildArguments":{"type":"string","description":"MSBuild Arguments","ignoreCase":"key"},"clean":{"type":"boolean","description":"Clean","ignoreCase":"key"},"maximumCpuCount":{"type":"boolean","description":"Build in Parallel","ignoreCase":"key"},"restoreNugetPackages":{"type":"boolean","description":"Restore NuGet Packages","ignoreCase":"key"},"logProjectEvents":{"type":"boolean","description":"Record Project Details","ignoreCase":"key"},"createLogFile":{"type":"boolean","description":"Create Log File","ignoreCase":"key"},"logFileVerbosity":{"description":"Log File Verbosity","ignoreCase":"all","enum":["quiet","minimal","normal","detailed","diagnostic"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Coverage Gate\n\nAdds a coverage trend summary section to the build report.","ignoreCase":"value","pattern":"^CoverageGate@1$"},"inputs":{"description":"Coverage Gate inputs","properties":{"minDelta":{"type":"string","description":"Delta","ignoreCase":"key"},"operator":{"description":"Operator","ignoreCase":"all","enum":["le","lt"]},"username":{"type":"string","description":"Username","ignoreCase":"key"},"password":{"type":"string","description":"Password","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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@1$"},"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"},"isManagedImage":{"type":"boolean","description":"Managed VM disk image","ignoreCase":"key"},"managedImageName":{"type":"string","description":"Managed VM Disk Image Name ","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","Canonical:UbuntuServer:18.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"},"packerVersion":{"type":"string","description":"Packer Version","ignoreCase":"key"},"imageUri":{"type":"string","description":"Image URL or Name","ignoreCase":"key"},"imageId":{"type":"string","description":"Azure Resource Id","ignoreCase":"key"}},"additionalProperties":false,"required":["ConnectedServiceName","location","storageAccountName","azureResourceGroup","packagePath","deployScriptPath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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":{"description":"MicroBuild Signing Plugin\n\nInstalls and configures the MicroBuild signing plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSigningPlugin@4$"},"inputs":{"description":"MicroBuild Signing Plugin inputs","properties":{"signType":{"description":"Signing Type","ignoreCase":"all","enum":["test","real"]},"zipSources":{"type":"boolean","description":"Zip Sources When Real Signing","ignoreCase":"key"},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"skipAssetTest":{"type":"boolean","description":"Skip Asset Test When Real Signing","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Signing Plugin\n\nInstalls and configures the MicroBuild signing plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSigningPlugin@1$"},"inputs":{"description":"MicroBuild Signing Plugin inputs","properties":{"signType":{"description":"Signing Type","ignoreCase":"all","enum":["test","real"]},"zipSources":{"type":"boolean","description":"Zip Sources When Real Signing","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"},"legacySigning":{"type":"boolean","description":"Use Legacy Signing When Real Signing","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Signing Plugin\n\n[Test-Xamarin-0.999.10 (all-lock)] Installs and configures the MicroBuild signing plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSigningPlugin@0$"},"inputs":{"description":"MicroBuild Signing Plugin inputs","properties":{"signType":{"description":"Signing Type","ignoreCase":"all","enum":["test","real"]},"zipSources":{"type":"boolean","description":"Zip Sources When Real Signing","ignoreCase":"key"},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"skipAssetTest":{"type":"boolean","description":"Skip Asset Test When Real Signing","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Signing Plugin\n\nInstalls and configures the MicroBuild signing plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSigningPlugin@3$"},"inputs":{"description":"MicroBuild Signing Plugin inputs","properties":{"signType":{"description":"Signing Type","ignoreCase":"all","enum":["test","real"]},"zipSources":{"type":"boolean","description":"Zip Sources When Real Signing","ignoreCase":"key"},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"skipAssetTest":{"type":"boolean","description":"Skip Asset Test When Real Signing","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Signing Plugin\n\nInstalls and configures the MicroBuild signing plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSigningPlugin@2$"},"inputs":{"description":"MicroBuild Signing Plugin inputs","properties":{"signType":{"description":"Signing Type","ignoreCase":"all","enum":["test","real"]},"zipSources":{"type":"boolean","description":"Zip Sources When Real Signing","ignoreCase":"key"},"skipAssetTest":{"type":"boolean","description":"Skip Asset Test When Real Signing","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"NuGet packager\n\nDeprecated: 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.","ignoreCase":"value","pattern":"^NuGetPackager@0$"},"inputs":{"description":"NuGet packager inputs","properties":{"searchPattern":{"type":"string","description":"Path to csproj or nuspec file(s) to pack","ignoreCase":"key"},"outputdir":{"type":"string","description":"Package Folder","ignoreCase":"key"},"includeReferencedProjects":{"type":"boolean","description":"Include referenced projects","ignoreCase":"key"},"versionByBuild":{"description":"Automatic package versioning","ignoreCase":"all","enum":["false","byPrereleaseNumber","byEnvVar","true"]},"versionEnvVar":{"type":"string","description":"Environment variable","ignoreCase":"key"},"requestedMajorVersion":{"type":"string","description":"Major","ignoreCase":"key"},"requestedMinorVersion":{"type":"string","description":"Minor","ignoreCase":"key"},"requestedPatchVersion":{"type":"string","description":"Patch","ignoreCase":"key"},"configurationToPack":{"type":"string","description":"Configuration to Package","ignoreCase":"key"},"buildProperties":{"type":"string","description":"Additional build properties","ignoreCase":"key"},"nuGetAdditionalArgs":{"type":"string","description":"NuGet Arguments","ignoreCase":"key"},"nuGetPath":{"type":"string","description":"Path to NuGet.exe","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"deprecationMessage":"NuGetPackager 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.","doNotSuggest":true,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Update Service Fabric App Versions\n\nAutomatically updates the versions of a packaged Service Fabric application.","ignoreCase":"value","pattern":"^ServiceFabricUpdateAppVersions@1$"},"inputs":{"description":"Update Service Fabric App Versions inputs","properties":{"applicationPackagePath":{"type":"string","description":"Application Package","ignoreCase":"key"},"versionSuffix":{"type":"string","description":"Version Value","ignoreCase":"key"},"versionBehavior":{"description":"Version Behavior","ignoreCase":"all","enum":["Append","Replace"]},"updateOnlyChanged":{"type":"boolean","description":"Update only if changed","ignoreCase":"key"},"pkgArtifactName":{"type":"string","description":"Package Artifact Name","ignoreCase":"key"},"logAllChanges":{"type":"boolean","description":"Log all changes","ignoreCase":"key"},"compareType":{"description":"Compare against","ignoreCase":"all","enum":["LastSuccessful","Specific"]},"buildNumber":{"type":"string","description":"Build Number","ignoreCase":"key"}},"additionalProperties":false,"required":["applicationPackagePath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Update Service Fabric manifests\n\nAutomatically update portions of application and service manifests in a packaged Azure Service Fabric application","ignoreCase":"value","pattern":"^ServiceFabricUpdateManifests@2$"},"inputs":{"description":"Update Service Fabric manifests inputs","properties":{"updateType":{"description":"Update Type","ignoreCase":"all","enum":["Manifest versions","Docker image settings"]},"applicationPackagePath":{"type":"string","description":"Application Package","ignoreCase":"key"},"versionSuffix":{"type":"string","description":"Version Value","ignoreCase":"key"},"versionBehavior":{"description":"Version Behavior","ignoreCase":"all","enum":["Append","Replace"]},"updateOnlyChanged":{"type":"boolean","description":"Update only if changed","ignoreCase":"key"},"pkgArtifactName":{"type":"string","description":"Package Artifact Name","ignoreCase":"key"},"logAllChanges":{"type":"boolean","description":"Log all changes","ignoreCase":"key"},"compareType":{"description":"Compare against","ignoreCase":"all","enum":["LastSuccessful","Specific"]},"buildNumber":{"type":"string","description":"Build Number","ignoreCase":"key"},"overwriteExistingPkgArtifact":{"type":"boolean","description":"Overwrite Existing Package Artifact","ignoreCase":"key"},"imageNamesPath":{"type":"string","description":"Image Names Path","ignoreCase":"key"},"imageDigestsPath":{"type":"string","description":"Image Digests Path","ignoreCase":"key"}},"additionalProperties":false,"required":["applicationPackagePath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Duffle tool installer\n\nInstall a specified version of Duffle for installing and managing CNAB bundles","ignoreCase":"value","pattern":"^DuffleInstaller@0$"},"inputs":{"description":"Duffle tool installer inputs","properties":{"version":{"type":"string","description":"Version","ignoreCase":"key"},"checkLatestVersion":{"type":"boolean","description":"Check for latest version","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Query Azure Monitor alerts\n\nObserve the configured Azure Monitor rules for active alerts","ignoreCase":"value","pattern":"^AzureMonitor@1$"},"inputs":{"description":"Query Azure Monitor alerts inputs","properties":{"connectedServiceNameARM":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"ResourceGroupName":{"type":"string","description":"Resource group","ignoreCase":"key"},"filterType":{"description":"Filter type","ignoreCase":"all","enum":["resource","alertrule","none"]},"resource":{"type":"string","description":"Resource","ignoreCase":"key"},"alertRule":{"type":"string","description":"Alert rule","ignoreCase":"key"},"severity":{"description":"Severity","ignoreCase":"all","enum":["Sev0","Sev1","Sev2","Sev3","Sev4"]},"timeRange":{"description":"Time range","ignoreCase":"all","enum":["1h","1d","7d","30d"]},"alertState":{"description":"Alert state","ignoreCase":"all","enum":["New","Acknowledged","Closed"]},"monitorCondition":{"description":"Monitor condition","ignoreCase":"all","enum":["Fired ","Resolved"]}},"additionalProperties":false,"required":["connectedServiceNameARM","ResourceGroupName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Query Classic Azure Monitor alerts\n\nObserve the configured classic Azure Monitor rules for active alerts","ignoreCase":"value","pattern":"^AzureMonitor@0$"},"inputs":{"description":"Query Classic Azure Monitor alerts inputs","properties":{"connectedServiceNameARM":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"ResourceGroupName":{"type":"string","description":"Resource group","ignoreCase":"key"},"ResourceType":{"description":"Resource type","ignoreCase":"all","enum":["Microsoft.Insights/components","Microsoft.Web/sites","Microsoft.Storage/storageAccounts","Microsoft.Compute/virtualMachines"]},"resourceName":{"type":"string","description":"Resource name","ignoreCase":"key"},"alertRules":{"type":"string","description":"Alert rules","ignoreCase":"key"}},"additionalProperties":false,"required":["connectedServiceNameARM","ResourceGroupName","resourceName","alertRules"]}},"deprecationMessage":"AzureMonitor is deprecated - Observe the configured classic Azure Monitor rules for active alerts","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Generate Test Artifacts\n\nTask to generate runsettings and ADO Drop Urls as artifacts.","ignoreCase":"value","pattern":"^MicroBuildGenerateTestArtifacts@1$"},"inputs":{"description":"MicroBuild Generate Test Artifacts inputs","properties":{"BootstrapperInfoPath":{"type":"string","description":"Bootstrapper Info Path","ignoreCase":"key"},"BuildDropNamePrefix":{"type":"string","description":"Build Drop Name Prefix","ignoreCase":"key"},"TestDropNamePrefix":{"type":"string","description":"Test Drop Name Prefix","ignoreCase":"key"},"RunSettingsOutputFolder":{"type":"string","description":"Runsettings Output Folder","ignoreCase":"key"},"DropUrlsOutputFile":{"type":"string","description":"Drop Urls Output File","ignoreCase":"key"},"DropCoreVersion":{"type":"string","description":"Drop Core Version","ignoreCase":"key"},"DropCoreFeedSource":{"type":"string","description":"Drop Core Feed","ignoreCase":"key"},"NugetOrgPublicFeedSource":{"type":"string","description":"NuGet.org feed location","ignoreCase":"key"},"DropsPat":{"type":"string","description":"PAT for Drop Server","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure Network Load Balancer\n\nConnect or disconnect an Azure virtual machine's network interface to a Load Balancer's back end address pool","ignoreCase":"value","pattern":"^AzureNLBManagement@1$"},"inputs":{"description":"Azure Network Load Balancer inputs","properties":{"azureSubscription":{"type":"string","description":"Azure Subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"ResourceGroupName":{"type":"string","description":"Resource Group","ignoreCase":"key"},"LoadBalancer":{"type":"string","description":"Load Balancer Name","ignoreCase":"key"},"Action":{"description":"Action","ignoreCase":"all","enum":["Disconnect","Connect"]}},"additionalProperties":false,"required":["azureSubscription","ResourceGroupName","LoadBalancer","Action"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Cloud-based Apache JMeter load test\n\nRun an Apache JMeter load test in the cloud","ignoreCase":"value","pattern":"^ApacheJMeterLoadTest@1$"},"inputs":{"description":"Cloud-based Apache JMeter load test inputs","properties":{"connectedServiceName":{"type":"string","description":"Azure Pipelines Connection","ignoreCase":"key"},"TestDrop":{"type":"string","description":"Apache JMeter test files folder","ignoreCase":"key"},"LoadTest":{"type":"string","description":"Apache JMeter file","ignoreCase":"key"},"agentCount":{"description":"Agent Count","ignoreCase":"all","enum":["1","2","3","4","5"]},"runDuration":{"description":"Run Duration (sec)","ignoreCase":"all","enum":["60","120","180","240","300"]},"geoLocation":{"description":"Load Location","ignoreCase":"all","enum":["Default","Australia East","Australia Southeast","Brazil South","Central India","Central US","East Asia","East US 2","East US","Japan East","Japan West","North Central US","North Europe","South Central US","South India","Southeast Asia","West Europe","West US"]},"machineType":{"description":"Run load test using","ignoreCase":"all","enum":["0","2"]}},"additionalProperties":false,"required":["TestDrop"]}},"deprecationMessage":"ApacheJMeterLoadTest is deprecated - Run an Apache JMeter load test in the cloud","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Docker Compose\n\nBuild, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.","ignoreCase":"value","pattern":"^DockerCompose@0$"},"inputs":{"description":"Docker Compose inputs","properties":{"containerregistrytype":{"description":"Container Registry Type","ignoreCase":"all","enum":["Azure Container Registry","Container Registry"]},"dockerRegistryEndpoint":{"type":"string","description":"Docker Registry Service Connection","ignoreCase":"key"},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["azureSubscriptionEndpoint"]},"azureContainerRegistry":{"type":"string","description":"Azure Container Registry","ignoreCase":"key"},"dockerComposeFile":{"type":"string","description":"Docker Compose File","ignoreCase":"key"},"additionalDockerComposeFiles":{"type":"string","description":"Additional Docker Compose Files","ignoreCase":"key"},"dockerComposeFileArgs":{"type":"string","description":"Environment Variables","ignoreCase":"key"},"projectName":{"type":"string","description":"Project Name","ignoreCase":"key"},"qualifyImageNames":{"type":"boolean","description":"Qualify Image Names","ignoreCase":"key"},"action":{"description":"Action","ignoreCase":"all","enum":["Build services","Push services","Run services","Run a specific service","Lock services","Write service image digests","Combine configuration","Run a Docker Compose command"]},"additionalImageTags":{"type":"string","description":"Additional Image Tags","ignoreCase":"key"},"includeSourceTags":{"type":"boolean","description":"Include Source Tags","ignoreCase":"key"},"includeLatestTag":{"type":"boolean","description":"Include Latest Tag","ignoreCase":"key"},"buildImages":{"type":"boolean","description":"Build Images","ignoreCase":"key"},"serviceName":{"type":"string","description":"Service Name","ignoreCase":"key"},"containerName":{"type":"string","description":"Container Name","ignoreCase":"key"},"ports":{"type":"string","description":"Ports","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["workDir"]},"entrypoint":{"type":"string","description":"Entry Point Override","ignoreCase":"key"},"containerCommand":{"type":"string","description":"Command","ignoreCase":"key"},"detached":{"type":"boolean","description":"Run in Background","ignoreCase":"key"},"abortOnContainerExit":{"type":"boolean","description":"Abort on Container Exit","ignoreCase":"key"},"imageDigestComposeFile":{"type":"string","description":"Image Digest Compose File","ignoreCase":"key"},"removeBuildOptions":{"type":"boolean","description":"Remove Build Options","ignoreCase":"key"},"baseResolveDirectory":{"type":"string","description":"Base Resolve Directory","ignoreCase":"key"},"outputDockerComposeFile":{"type":"string","description":"Output Docker Compose File","ignoreCase":"key"},"dockerComposeCommand":{"type":"string","description":"Command","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"dockerHostEndpoint":{"type":"string","description":"Docker Host Service Connection","ignoreCase":"key"},"nopIfNoDockerComposeFile":{"type":"boolean","description":"No-op if no Docker Compose File","ignoreCase":"key"},"requireAdditionalDockerComposeFiles":{"type":"boolean","description":"Require Additional Docker Compose Files","ignoreCase":"key"},"currentWorkingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["cwd"]},"dockerComposePath":{"type":"string","description":"Docker Compose executable Path","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure Monitor alerts (Deprecated)\n\nConfigure alerts on available metrics for an Azure resource (Deprecated)","ignoreCase":"value","pattern":"^AzureMonitorAlerts@0$"},"inputs":{"description":"Azure Monitor alerts (Deprecated) inputs","properties":{"azureSubscription":{"type":"string","description":"Azure Subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"ResourceGroupName":{"type":"string","description":"Resource Group","ignoreCase":"key"},"ResourceType":{"description":"Resource Type","ignoreCase":"all","enum":["Microsoft.Insights/components","Microsoft.Web/sites","Microsoft.Storage/storageAccounts","Microsoft.Compute/virtualMachines"]},"ResourceName":{"type":"string","description":"Resource name","ignoreCase":"key"},"AlertRules":{"type":"string","description":"Alert rules","ignoreCase":"key"},"NotifyServiceOwners":{"type":"boolean","description":"Subscription owners, contributors and readers","ignoreCase":"key"},"NotifyEmails":{"type":"string","description":"Additional administrator emails","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","ResourceGroupName","ResourceName","AlertRules"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Xamarin Test Cloud\n\n[Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.","ignoreCase":"value","pattern":"^XamarinTestCloud@1$"},"inputs":{"description":"Xamarin Test Cloud inputs","properties":{"appFile":{"type":"string","description":"App file","ignoreCase":"key","aliases":["app"]},"dsymFile":{"type":"string","description":"dSYM file (iOS only)","ignoreCase":"key","aliases":["dsym"]},"teamApiKey":{"type":"string","description":"Team API key","ignoreCase":"key"},"email":{"type":"string","description":"User email","ignoreCase":"key","aliases":["user"]},"devices":{"type":"string","description":"Devices","ignoreCase":"key"},"series":{"type":"string","description":"Series","ignoreCase":"key"},"testAssemblyDirectory":{"type":"string","description":"Test assembly directory","ignoreCase":"key","aliases":["testDir"]},"parallelizationOption":{"description":"Parallelization","ignoreCase":"all","enum":["none","--fixture-chunk","--test-chunk"],"aliases":["parallelization"]},"localeOption":{"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"],"aliases":["locale"]},"userDefinedLocale":{"type":"string","description":"Other locale","ignoreCase":"key"},"testCloudFile":{"type":"string","description":"test-cloud.exe location","ignoreCase":"key","aliases":["testCloudLocation"]},"optionalArgs":{"type":"string","description":"Optional arguments","ignoreCase":"key"},"publishNUnitResults":{"type":"boolean","description":"Publish results to Azure Pipelines","ignoreCase":"key"}},"additionalProperties":false,"required":["appFile","teamApiKey","email","devices","testAssemblyDirectory"]}},"deprecationMessage":"XamarinTestCloud is deprecated - [Deprecated] Test mobile apps with Xamarin Test Cloud using Xamarin.UITest. Instead, use the 'App Center test' task.","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Service Fabric application deployment\n\nDeploy an Azure Service Fabric application to a cluster","ignoreCase":"value","pattern":"^ServiceFabricDeploy@1$"},"inputs":{"description":"Service Fabric application deployment inputs","properties":{"applicationPackagePath":{"type":"string","description":"Application Package","ignoreCase":"key"},"serviceConnectionName":{"type":"string","description":"Cluster Service Connection","ignoreCase":"key"},"publishProfilePath":{"type":"string","description":"Publish Profile","ignoreCase":"key"},"applicationParameterPath":{"type":"string","description":"Application Parameters","ignoreCase":"key"},"overrideApplicationParameter":{"type":"boolean","description":"Override Application Parameters","ignoreCase":"key"},"compressPackage":{"type":"boolean","description":"Compress Package","ignoreCase":"key"},"copyPackageTimeoutSec":{"type":"string","description":"CopyPackageTimeoutSec","ignoreCase":"key"},"registerPackageTimeoutSec":{"type":"string","description":"RegisterPackageTimeoutSec","ignoreCase":"key"},"overwriteBehavior":{"description":"Overwrite Behavior","ignoreCase":"all","enum":["Always","Never","SameAppTypeAndVersion"]},"skipUpgradeSameTypeAndVersion":{"type":"boolean","description":"Skip upgrade for same Type and Version","ignoreCase":"key"},"skipPackageValidation":{"type":"boolean","description":"Skip package validation","ignoreCase":"key"},"useDiffPackage":{"type":"boolean","description":"Use Diff Package","ignoreCase":"key"},"overridePublishProfileSettings":{"type":"boolean","description":"Override All Publish Profile Upgrade Settings","ignoreCase":"key"},"isUpgrade":{"type":"boolean","description":"Upgrade the Application","ignoreCase":"key"},"unregisterUnusedVersions":{"type":"boolean","description":"Unregister Unused Versions","ignoreCase":"key"},"upgradeMode":{"description":"Upgrade Mode","ignoreCase":"all","enum":["Monitored","UnmonitoredAuto","UnmonitoredManual"]},"FailureAction":{"description":"FailureAction","ignoreCase":"all","enum":["Rollback","Manual"]},"UpgradeReplicaSetCheckTimeoutSec":{"type":"string","description":"UpgradeReplicaSetCheckTimeoutSec","ignoreCase":"key"},"TimeoutSec":{"type":"string","description":"TimeoutSec","ignoreCase":"key"},"ForceRestart":{"type":"boolean","description":"ForceRestart","ignoreCase":"key"},"HealthCheckRetryTimeoutSec":{"type":"string","description":"HealthCheckRetryTimeoutSec","ignoreCase":"key"},"HealthCheckWaitDurationSec":{"type":"string","description":"HealthCheckWaitDurationSec","ignoreCase":"key"},"HealthCheckStableDurationSec":{"type":"string","description":"HealthCheckStableDurationSec","ignoreCase":"key"},"UpgradeDomainTimeoutSec":{"type":"string","description":"UpgradeDomainTimeoutSec","ignoreCase":"key"},"ConsiderWarningAsError":{"type":"boolean","description":"ConsiderWarningAsError","ignoreCase":"key"},"DefaultServiceTypeHealthPolicy":{"type":"string","description":"DefaultServiceTypeHealthPolicy","ignoreCase":"key"},"MaxPercentUnhealthyDeployedApplications":{"type":"string","description":"MaxPercentUnhealthyDeployedApplications","ignoreCase":"key"},"UpgradeTimeoutSec":{"type":"string","description":"UpgradeTimeoutSec","ignoreCase":"key"},"ServiceTypeHealthPolicyMap":{"type":"string","description":"ServiceTypeHealthPolicyMap","ignoreCase":"key"},"configureDockerSettings":{"type":"boolean","description":"Configure Docker settings","ignoreCase":"key"},"registryCredentials":{"description":"Registry Credentials Source","ignoreCase":"all","enum":["AzureResourceManagerEndpoint","ContainerRegistryEndpoint","UsernamePassword"]},"dockerRegistryConnection":{"type":"string","description":"Docker Registry Service Connection","ignoreCase":"key","aliases":["dockerRegistryEndpoint"]},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["azureSubscriptionEndpoint"]},"registryUserName":{"type":"string","description":"Registry User Name","ignoreCase":"key"},"registryPassword":{"type":"string","description":"Registry Password","ignoreCase":"key"},"passwordEncrypted":{"type":"boolean","description":"Password Encrypted","ignoreCase":"key"}},"additionalProperties":false,"required":["applicationPackagePath","serviceConnectionName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Cleanup\n\nUploads MicroBuild telemetry. This step should be added at the end of every definition using MicroBuild tasks.","ignoreCase":"value","pattern":"^MicroBuildCleanup@1$"},"inputs":{"description":"MicroBuild Cleanup inputs","properties":{},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild OptProf Plugin\n\nInstalls and configures the MicroBuild OptProf plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildOptProfPlugin@3$"},"inputs":{"description":"MicroBuild OptProf Plugin inputs","properties":{"optimizationDataDropName":{"type":"string","description":"OptimizationData Drop Name","ignoreCase":"key"},"optProfOutputPath":{"type":"string","description":"Optimization Data Output Path","ignoreCase":"key"},"skipRunOptimize":{"type":"boolean","description":"Generate Profile Data Without Optimization","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild OptProf Plugin\n\nInstalls and configures the MicroBuild OptProf plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildOptProfPlugin@2$"},"inputs":{"description":"MicroBuild OptProf Plugin inputs","properties":{"commitID":{"type":"string","description":"Commit ID","ignoreCase":"key"},"optProfOutputPath":{"type":"string","description":"Optimization Data Output Path","ignoreCase":"key"},"skipRunOptimize":{"type":"boolean","description":"Generate Profile Data Without Optimization","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild OptProf Plugin\n\nInstalls and configures the MicroBuild OptProf plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildOptProfPlugin@6$"},"inputs":{"description":"MicroBuild OptProf Plugin inputs","properties":{"ProfilingInputsDropName":{"type":"string","description":"Profiling Inputs Drop Name","ignoreCase":"key"},"GeneratePropsFile":{"type":"boolean","description":"Generate .props File","ignoreCase":"key"},"PropsPath":{"type":"string","description":".props File Path","ignoreCase":"key"},"ShouldSkipOptimize":{"type":"boolean","description":"Skip Optimization","ignoreCase":"key"},"OptimizationInputsLookupMethod":{"description":"Optimization Inputs Lookup Method","ignoreCase":"all","enum":["GitTag","DropPrefix","GitTagRepo","DropName"]},"DropNamePrefix":{"type":"string","description":"Drop Name Prefix","ignoreCase":"key"},"NumberCommitsToSearch":{"type":"string","description":"Number of Commits","ignoreCase":"key"},"GitTagProject":{"type":"string","description":"Project","ignoreCase":"key"},"GitTagRepo":{"type":"string","description":"Repository","ignoreCase":"key"},"GitTagBranch":{"type":"string","description":"Branch","ignoreCase":"key"},"OptimizationInputsDropName":{"type":"string","description":"Optimization Inputs Drop Name","ignoreCase":"key"},"OverrideOutputPath":{"type":"boolean","description":"Override Output Path","ignoreCase":"key"},"OptimizationOutputPath":{"type":"string","description":"Output Path","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"AccessToken":{"type":"string","description":"Drop Service Access Token","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild OptProf Plugin\n\nInstalls and configures the MicroBuild OptProf plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildOptProfPlugin@4$"},"inputs":{"description":"MicroBuild OptProf Plugin inputs","properties":{"optimizationInputsDropName":{"type":"string","description":"OptimizationInputs Drop Name","ignoreCase":"key"},"optimizationInputsDropNamePrefix":{"type":"string","description":"OptimizationInputs Drop Name Prefix","ignoreCase":"key"},"optProfOutputPath":{"type":"string","description":"Optimization Data Output Path","ignoreCase":"key"},"getDropNameByDrop":{"type":"boolean","description":"Get OptimizationInputs Drop by Querying the Azure DevOps Drop Directly.","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild OptProf Plugin\n\nInstalls and configures the MicroBuild OptProf plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildOptProfPlugin@5$"},"inputs":{"description":"MicroBuild OptProf Plugin inputs","properties":{"ProfilingInputsDropName":{"type":"string","description":"Profiling Inputs Drop Name","ignoreCase":"key"},"GeneratePropsFile":{"type":"boolean","description":"Generate .props File","ignoreCase":"key"},"PropsPath":{"type":"string","description":".props File Path","ignoreCase":"key"},"ShouldSkipOptimize":{"type":"boolean","description":"Skip Optimization","ignoreCase":"key"},"OptimizationInputsLookupMethod":{"description":"Optimization Inputs Lookup Method","ignoreCase":"all","enum":["GitTag","DropPrefix","GitTagRepo","DropName"]},"DropNamePrefix":{"type":"string","description":"Drop Name Prefix","ignoreCase":"key"},"GitTagProject":{"type":"string","description":"Project","ignoreCase":"key"},"GitTagRepo":{"type":"string","description":"Repository","ignoreCase":"key"},"GitTagBranch":{"type":"string","description":"Branch","ignoreCase":"key"},"OptimizationInputsDropName":{"type":"string","description":"Optimization Inputs Drop Name","ignoreCase":"key"},"OverrideOutputPath":{"type":"boolean","description":"Override Output Path","ignoreCase":"key"},"OptimizationOutputPath":{"type":"string","description":"Output Path","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild OptProf Plugin\n\nInstalls and configures the MicroBuild OptProf plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildOptProfPlugin@1$"},"inputs":{"description":"MicroBuild OptProf Plugin inputs","properties":{"commitID":{"type":"string","description":"Commit ID","ignoreCase":"key"},"optProfOutputPath":{"type":"string","description":"Optimization Data Output Path","ignoreCase":"key"},"skipRunOptimize":{"type":"boolean","description":"Generate Profile Data Without Optimization","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Xcode Build\n\nBuild an Xcode workspace on Mac OS","ignoreCase":"value","pattern":"^Xcode@2$"},"inputs":{"description":"Xcode Build inputs","properties":{"actions":{"type":"string","description":"Actions","ignoreCase":"key"},"configuration":{"type":"string","description":"Configuration","ignoreCase":"key"},"sdk":{"type":"string","description":"SDK","ignoreCase":"key"},"xcWorkspacePath":{"type":"string","description":"Workspace/Project Path","ignoreCase":"key"},"scheme":{"type":"string","description":"Scheme","ignoreCase":"key"},"packageApp":{"type":"boolean","description":"Create App Package","ignoreCase":"key"},"packageTool":{"description":"Create Package (IPA) using","ignoreCase":"all","enum":["xcrun","xcodebuild"]},"archivePath":{"type":"string","description":"Archive Path","ignoreCase":"key"},"exportPath":{"type":"string","description":"Export Path","ignoreCase":"key"},"exportOptions":{"description":"Export Options","ignoreCase":"all","enum":["auto","plist","specify"]},"exportMethod":{"type":"string","description":"Export Method","ignoreCase":"key"},"exportTeamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"exportOptionsPlist":{"type":"string","description":"Export Options Plist","ignoreCase":"key"},"xcode8AutomaticSigning":{"type":"boolean","description":"Automatic Signing","ignoreCase":"key"},"teamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"signMethod":{"description":"Override Using","ignoreCase":"all","enum":["file","id"]},"iosSigningIdentity":{"type":"string","description":"Signing Identity","ignoreCase":"key"},"unlockDefaultKeychain":{"type":"boolean","description":"Unlock Default Keychain","ignoreCase":"key"},"defaultKeychainPassword":{"type":"string","description":"Default Keychain Password","ignoreCase":"key"},"provProfileUuid":{"type":"string","description":"Provisioning Profile UUID","ignoreCase":"key"},"p12":{"type":"string","description":"P12 Certificate File","ignoreCase":"key"},"p12pwd":{"type":"string","description":"P12 Password","ignoreCase":"key"},"provProfile":{"type":"string","description":"Provisioning Profile File","ignoreCase":"key"},"removeProfile":{"type":"boolean","description":"Remove Profile After Build","ignoreCase":"key"},"args":{"type":"string","description":"Arguments","ignoreCase":"key"},"cwd":{"type":"string","description":"Working Directory","ignoreCase":"key"},"outputPattern":{"type":"string","description":"Output Directory","ignoreCase":"key"},"xcodeDeveloperDir":{"type":"string","description":"Xcode Developer Path","ignoreCase":"key"},"useXcpretty":{"type":"boolean","description":"Use xcpretty","ignoreCase":"key"},"publishJUnitResults":{"type":"boolean","description":"Publish to VSTS/TFS","ignoreCase":"key"},"useXctool":{"type":"boolean","description":"Use xctool","ignoreCase":"key"},"xctoolReporter":{"type":"string","description":"xctool Test Reporter Format","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Xcode\n\nBuild, test, or archive an Xcode workspace on macOS. Optionally package an app.","ignoreCase":"value","pattern":"^Xcode@5$"},"inputs":{"description":"Xcode inputs","properties":{"actions":{"type":"string","description":"Actions","ignoreCase":"key"},"configuration":{"type":"string","description":"Configuration","ignoreCase":"key"},"sdk":{"type":"string","description":"SDK","ignoreCase":"key"},"xcWorkspacePath":{"type":"string","description":"Workspace or project path","ignoreCase":"key"},"scheme":{"type":"string","description":"Scheme","ignoreCase":"key"},"xcodeVersion":{"description":"Xcode version","ignoreCase":"all","enum":["8","9","10","11","12","13","default","specifyPath"]},"xcodeDeveloperDir":{"type":"string","description":"Xcode developer path","ignoreCase":"key"},"packageApp":{"type":"boolean","description":"Create app package","ignoreCase":"key"},"archivePath":{"type":"string","description":"Archive path","ignoreCase":"key"},"exportPath":{"type":"string","description":"Export path","ignoreCase":"key"},"exportOptions":{"description":"Export options","ignoreCase":"all","enum":["auto","plist","specify"]},"exportMethod":{"type":"string","description":"Export method","ignoreCase":"key"},"exportTeamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"exportOptionsPlist":{"type":"string","description":"Export options plist","ignoreCase":"key"},"exportArgs":{"type":"string","description":"Export arguments","ignoreCase":"key"},"signingOption":{"description":"Signing style","ignoreCase":"all","enum":["nosign","default","manual","auto"]},"signingIdentity":{"type":"string","description":"Signing identity","ignoreCase":"key"},"provisioningProfileUuid":{"type":"string","description":"Provisioning profile UUID","ignoreCase":"key"},"provisioningProfileName":{"type":"string","description":"Provisioning profile name","ignoreCase":"key"},"teamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"destinationPlatformOption":{"description":"Destination platform","ignoreCase":"all","enum":["default","iOS","tvOS","macOS","custom"]},"destinationPlatform":{"type":"string","description":"Custom destination platform","ignoreCase":"key"},"destinationTypeOption":{"description":"Destination type","ignoreCase":"all","enum":["simulators","devices"]},"destinationSimulators":{"type":"string","description":"Simulator","ignoreCase":"key"},"destinationDevices":{"type":"string","description":"Device","ignoreCase":"key"},"args":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key","aliases":["cwd"]},"useXcpretty":{"type":"boolean","description":"Use xcpretty","ignoreCase":"key"},"xcprettyArgs":{"type":"string","description":"Xcpretty arguments","ignoreCase":"key"},"publishJUnitResults":{"type":"boolean","description":"Publish test results to Azure Pipelines","ignoreCase":"key"},"testRunTitle":{"type":"string","description":"Test run title","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Xcode Build\n\nBuild an Xcode workspace on macOS","ignoreCase":"value","pattern":"^Xcode@3$"},"inputs":{"description":"Xcode Build inputs","properties":{"actions":{"type":"string","description":"Actions","ignoreCase":"key"},"configuration":{"type":"string","description":"Configuration","ignoreCase":"key"},"sdk":{"type":"string","description":"SDK","ignoreCase":"key"},"xcWorkspacePath":{"type":"string","description":"Workspace/Project Path","ignoreCase":"key"},"scheme":{"type":"string","description":"Scheme","ignoreCase":"key"},"packageApp":{"type":"boolean","description":"Create App Package","ignoreCase":"key"},"archivePath":{"type":"string","description":"Archive Path","ignoreCase":"key"},"exportPath":{"type":"string","description":"Export Path","ignoreCase":"key"},"exportOptions":{"description":"Export Options","ignoreCase":"all","enum":["auto","plist","specify"]},"exportMethod":{"type":"string","description":"Export Method","ignoreCase":"key"},"exportTeamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"exportOptionsPlist":{"type":"string","description":"Export Options Plist","ignoreCase":"key"},"exportArgs":{"type":"string","description":"Export Arguments","ignoreCase":"key"},"xcode8AutomaticSigning":{"type":"boolean","description":"Automatic Signing","ignoreCase":"key"},"teamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"signMethod":{"description":"Override Using","ignoreCase":"all","enum":["file","id"]},"iosSigningIdentity":{"type":"string","description":"Signing Identity","ignoreCase":"key"},"unlockDefaultKeychain":{"type":"boolean","description":"Unlock Default Keychain","ignoreCase":"key"},"defaultKeychainPassword":{"type":"string","description":"Default Keychain Password","ignoreCase":"key"},"provProfileUuid":{"type":"string","description":"Provisioning Profile UUID","ignoreCase":"key"},"p12":{"type":"string","description":"P12 Certificate File","ignoreCase":"key"},"p12pwd":{"type":"string","description":"P12 Password","ignoreCase":"key"},"provProfile":{"type":"string","description":"Provisioning Profile File","ignoreCase":"key"},"removeProfile":{"type":"boolean","description":"Remove Profile After Build","ignoreCase":"key"},"args":{"type":"string","description":"Arguments","ignoreCase":"key"},"cwd":{"type":"string","description":"Working Directory","ignoreCase":"key"},"outputPattern":{"type":"string","description":"Output Directory","ignoreCase":"key"},"xcodeDeveloperDir":{"type":"string","description":"Xcode Developer Path","ignoreCase":"key"},"useXcpretty":{"type":"boolean","description":"Use xcpretty","ignoreCase":"key"},"publishJUnitResults":{"type":"boolean","description":"Publish to VSTS/TFS","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Xcode\n\nBuild, test, or archive an Xcode workspace on macOS. Optionally package an app.","ignoreCase":"value","pattern":"^Xcode@4$"},"inputs":{"description":"Xcode inputs","properties":{"actions":{"type":"string","description":"Actions","ignoreCase":"key"},"configuration":{"type":"string","description":"Configuration","ignoreCase":"key"},"sdk":{"type":"string","description":"SDK","ignoreCase":"key"},"xcWorkspacePath":{"type":"string","description":"Workspace or project path","ignoreCase":"key"},"scheme":{"type":"string","description":"Scheme","ignoreCase":"key"},"xcodeVersion":{"description":"Xcode version","ignoreCase":"all","enum":["8","9","default","specifyPath"]},"xcodeDeveloperDir":{"type":"string","description":"Xcode developer path","ignoreCase":"key"},"packageApp":{"type":"boolean","description":"Create app package","ignoreCase":"key"},"archivePath":{"type":"string","description":"Archive path","ignoreCase":"key"},"exportPath":{"type":"string","description":"Export path","ignoreCase":"key"},"exportOptions":{"description":"Export options","ignoreCase":"all","enum":["auto","plist","specify"]},"exportMethod":{"type":"string","description":"Export method","ignoreCase":"key"},"exportTeamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"exportOptionsPlist":{"type":"string","description":"Export options plist","ignoreCase":"key"},"exportArgs":{"type":"string","description":"Export arguments","ignoreCase":"key"},"signingOption":{"description":"Signing style","ignoreCase":"all","enum":["nosign","default","manual","auto"]},"signingIdentity":{"type":"string","description":"Signing identity","ignoreCase":"key"},"provisioningProfileUuid":{"type":"string","description":"Provisioning profile UUID","ignoreCase":"key"},"teamId":{"type":"string","description":"Team ID","ignoreCase":"key"},"destinationPlatformOption":{"description":"Destination platform","ignoreCase":"all","enum":["default","iOS","tvOS","macOS","custom"]},"destinationPlatform":{"type":"string","description":"Custom destination platform","ignoreCase":"key"},"destinationTypeOption":{"description":"Destination type","ignoreCase":"all","enum":["simulators","devices"]},"destinationSimulators":{"type":"string","description":"Simulator","ignoreCase":"key"},"destinationDevices":{"type":"string","description":"Device","ignoreCase":"key"},"args":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key","aliases":["cwd"]},"outputPattern":{"type":"string","description":"Output directory","ignoreCase":"key"},"useXcpretty":{"type":"boolean","description":"Use xcpretty","ignoreCase":"key"},"publishJUnitResults":{"type":"boolean","description":"Publish test results to VSTS/TFS","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"NuGet publisher\n\nDeprecated: 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.","ignoreCase":"value","pattern":"^NuGetPublisher@0$"},"inputs":{"description":"NuGet publisher inputs","properties":{"searchPattern":{"type":"string","description":"Path/Pattern to nupkg","ignoreCase":"key"},"nuGetFeedType":{"description":"Feed type","ignoreCase":"all","enum":["external","internal"]},"connectedServiceName":{"type":"string","description":"NuGet Service Connection","ignoreCase":"key"},"feedName":{"type":"string","description":"Internal Feed URL","ignoreCase":"key"},"nuGetAdditionalArgs":{"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"},"continueOnEmptyNupkgMatch":{"type":"boolean","description":"Continue if no packages match the \"Path/Pattern to nupkg\"","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"deprecationMessage":"NuGetPublisher 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.","doNotSuggest":true,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Version Assemblies\n\nUpdates the version number of the assemblies to match the build number","ignoreCase":"value","pattern":"^VersionAssemblies@2$"},"inputs":{"description":"Version Assemblies inputs","properties":{"sourcePath":{"type":"string","description":"Source Path","ignoreCase":"key"},"filePattern":{"type":"string","description":"File Pattern","ignoreCase":"key"},"versionSource":{"description":"Version Source","ignoreCase":"all","enum":["buildNumber","variable"]},"customNumberVariable":{"type":"string","description":"Variable to use","ignoreCase":"key"},"versionFormat":{"description":"Version Extract Pattern","ignoreCase":"all","enum":["fourParts","threeParts","custom"]},"customBuildRegex":{"type":"string","description":"Custom Regex Find Pattern","ignoreCase":"key"},"replaceVersionFormat":{"description":"Replace Pattern","ignoreCase":"all","enum":["fourParts","threeParts","custom"]},"customReplaceRegex":{"type":"string","description":"Custom Regex Replace Pattern","ignoreCase":"key"},"buildRegexIndex":{"type":"string","description":"Build Regex Group Index","ignoreCase":"key"},"replacePrefix":{"type":"string","description":"Prefix for Replacements","ignoreCase":"key"},"replacePostfix":{"type":"string","description":"Postfix for Replacements","ignoreCase":"key"},"failIfNoMatchFound":{"type":"boolean","description":"Fail If No Target Match Found","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Query work items\n\nExecute a work item query and check the number of items returned","ignoreCase":"value","pattern":"^queryWorkItems@0$"},"inputs":{"description":"Query work items inputs","properties":{"queryId":{"type":"string","description":"Query","ignoreCase":"key"},"maxThreshold":{"type":"string","description":"Upper threshold","ignoreCase":"key"},"minThreshold":{"type":"string","description":"Lower threshold","ignoreCase":"key"}},"additionalProperties":false,"required":["queryId"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild IBCMerge Plugin\n\nInstalls and configures the MicroBuild IBCMerge plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildIBCMergePlugin@1$"},"inputs":{"description":"MicroBuild IBCMerge Plugin inputs","properties":{"branch":{"description":"Branch","ignoreCase":"all","enum":["master","rel/preview","svc/d15svc","svc/d15rtwsvc","rel/d15rel","lab/d15prerel","lab/vsumain","lab/vscore.dev","lab/vscore","lab/vsuvscore"]},"BuildNumber":{"type":"string","description":"Build number","ignoreCase":"key"},"SubPath":{"type":"string","description":"Data subdirectory","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"},"ShouldSkipPartialNgen":{"type":"boolean","description":"Disable PartialNgen","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild IBCMerge Plugin\n\nInstalls and configures the MicroBuild IBCMerge plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildIBCMergePlugin@0$"},"inputs":{"description":"MicroBuild IBCMerge Plugin inputs","properties":{"branch":{"description":"Branch","ignoreCase":"all","enum":["master","rel/preview","svc/d15svc","svc/d15rtwsvc","rel/d15rel","lab/d15prerel","lab/vsumain","lab/vscore.dev","lab/vscore","lab/vsuvscore"]},"BuildNumber":{"type":"string","description":"Build number","ignoreCase":"key"},"SubPath":{"type":"string","description":"Data subdirectory","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure Web App for Containers\n\nDeploy containers to Azure App Service","ignoreCase":"value","pattern":"^AzureWebAppContainer@1$"},"inputs":{"description":"Azure Web App for Containers inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"appName":{"type":"string","description":"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"},"containers":{"type":"string","description":"Image name","ignoreCase":"key","aliases":["imageName"]},"multicontainerConfigFile":{"type":"string","description":"Configuration File","ignoreCase":"key"},"containerCommand":{"type":"string","description":"Startup command ","ignoreCase":"key"},"appSettings":{"type":"string","description":"App settings","ignoreCase":"key"},"configurationStrings":{"type":"string","description":"Configuration settings","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","appName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"SQL Server database deploy\n\nDeploy a SQL Server database using DACPAC or SQL scripts","ignoreCase":"value","pattern":"^SqlDacpacDeploymentOnMachineGroup@0$"},"inputs":{"description":"SQL Server database deploy inputs","properties":{"TaskType":{"description":"Deploy SQL Using","ignoreCase":"all","enum":["dacpac","sqlQuery","sqlInline"]},"DacpacFile":{"type":"string","description":"DACPAC File","ignoreCase":"key"},"SqlFile":{"type":"string","description":"Sql File","ignoreCase":"key"},"ExecuteInTransaction":{"type":"boolean","description":"Execute within a transaction","ignoreCase":"key"},"ExclusiveLock":{"type":"boolean","description":"Acquire an exclusive app lock while executing script(s)","ignoreCase":"key"},"AppLockName":{"type":"string","description":"App lock name","ignoreCase":"key"},"InlineSql":{"type":"string","description":"Inline Sql","ignoreCase":"key"},"TargetMethod":{"description":"Specify SQL Using","ignoreCase":"all","enum":["server","connectionString","publishProfile"]},"ServerName":{"type":"string","description":"Server Name","ignoreCase":"key"},"DatabaseName":{"type":"string","description":"Database Name","ignoreCase":"key"},"AuthScheme":{"description":"Authentication","ignoreCase":"all","enum":["windowsAuthentication","sqlServerAuthentication"]},"SqlUsername":{"type":"string","description":"SQL User name","ignoreCase":"key"},"SqlPassword":{"type":"string","description":"SQL Password","ignoreCase":"key"},"ConnectionString":{"type":"string","description":"Connection String","ignoreCase":"key"},"PublishProfile":{"type":"string","description":"Publish Profile","ignoreCase":"key"},"AdditionalArguments":{"type":"string","description":"Additional Arguments","ignoreCase":"key"},"AdditionalArgumentsSql":{"type":"string","description":"Additional Arguments","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Cache (Beta)\n\nCache files between runs","ignoreCase":"value","pattern":"^CacheBeta@1$"},"inputs":{"description":"Cache (Beta) inputs","properties":{"key":{"type":"string","description":"Key","ignoreCase":"key"},"path":{"type":"string","description":"Path","ignoreCase":"key"},"cacheHitVar":{"type":"string","description":"Cache hit variable","ignoreCase":"key"},"restoreKeys":{"type":"string","description":"Additional restore key prefixes","ignoreCase":"key"}},"additionalProperties":false,"required":["key","path"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Cache\n\nCache files between runs","ignoreCase":"value","pattern":"^Cache@2$"},"inputs":{"description":"Cache inputs","properties":{"key":{"type":"string","description":"Key","ignoreCase":"key"},"path":{"type":"string","description":"Path","ignoreCase":"key"},"cacheHitVar":{"type":"string","description":"Cache hit variable","ignoreCase":"key"},"restoreKeys":{"type":"string","description":"Additional restore key prefixes","ignoreCase":"key"}},"additionalProperties":false,"required":["key","path"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Cache (Beta)\n\nCache files between runs","ignoreCase":"value","pattern":"^CacheBeta@0$"},"inputs":{"description":"Cache (Beta) inputs","properties":{"key":{"type":"string","description":"Key","ignoreCase":"key"},"path":{"type":"string","description":"Path","ignoreCase":"key"},"cacheHitVar":{"type":"string","description":"Cache hit variable","ignoreCase":"key"}},"additionalProperties":false,"required":["key","path"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild FXCop Plugin\n\nInstalls and configures the MicroBuild FXCop plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildFXCopPlugin@2$"},"inputs":{"description":"MicroBuild FXCop Plugin inputs","properties":{"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"CMake\n\nBuild with the CMake cross-platform build system","ignoreCase":"value","pattern":"^CMake@1$"},"inputs":{"description":"CMake inputs","properties":{"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["cwd"]},"cmakeArgs":{"type":"string","description":"Arguments","ignoreCase":"key"},"runInsideShell":{"type":"boolean","description":"Run cmake command inside shell","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"App Center test\n\nTest app packages with Visual Studio App Center","ignoreCase":"value","pattern":"^AppCenterTest@1$"},"inputs":{"description":"App Center test inputs","properties":{"appFile":{"type":"string","description":"Binary application file path","ignoreCase":"key","aliases":["app"]},"artifactsDirectory":{"type":"string","description":"Artifacts directory","ignoreCase":"key","aliases":["artifactsDir"]},"prepareTests":{"type":"boolean","description":"Prepare tests","ignoreCase":"key","aliases":["enablePrepare"]},"frameworkOption":{"description":"Test framework","ignoreCase":"all","enum":["appium","espresso","calabash","uitest","xcuitest"],"aliases":["framework"]},"appiumBuildDirectory":{"type":"string","description":"Build directory","ignoreCase":"key","aliases":["appiumBuildDir"]},"espressoBuildDirectory":{"type":"string","description":"Build directory","ignoreCase":"key","aliases":["espressoBuildDir"]},"espressoTestApkFile":{"type":"string","description":"Test APK path","ignoreCase":"key","aliases":["espressoTestApkPath"]},"calabashProjectDirectory":{"type":"string","description":"Project directory","ignoreCase":"key","aliases":["calabashProjectDir"]},"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"},"uiTestBuildDirectory":{"type":"string","description":"Build directory","ignoreCase":"key","aliases":["uitestBuildDir"]},"uitestStorePath":{"type":"string","description":"Store file","ignoreCase":"key"},"uiTestStorePassword":{"type":"string","description":"Store password","ignoreCase":"key","aliases":["uitestStorePass"]},"uitestKeyAlias":{"type":"string","description":"Key alias","ignoreCase":"key"},"uiTestKeyPassword":{"type":"string","description":"Key password","ignoreCase":"key","aliases":["uitestKeyPass"]},"uiTestToolsDirectory":{"type":"string","description":"Test tools directory","ignoreCase":"key","aliases":["uitestToolsDir"]},"signInfo":{"type":"string","description":"Signing information","ignoreCase":"key"},"xcUITestBuildDirectory":{"type":"string","description":"Build directory","ignoreCase":"key","aliases":["xcuitestBuildDir"]},"xcUITestIpaFile":{"type":"string","description":"Test IPA path","ignoreCase":"key","aliases":["xcuitestTestIpaPath"]},"prepareOptions":{"type":"string","description":"Additional options","ignoreCase":"key","aliases":["prepareOpts"]},"runTests":{"type":"boolean","description":"Run tests","ignoreCase":"key","aliases":["enableRun"]},"credentialsOption":{"description":"Authentication method","ignoreCase":"all","enum":["serviceEndpoint","inputs"],"aliases":["credsType"]},"serverEndpoint":{"type":"string","description":"App Center service connection","ignoreCase":"key"},"username":{"type":"string","description":"App Center username","ignoreCase":"key"},"password":{"type":"string","description":"App 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"},"dsymDirectory":{"type":"string","description":"dSYM directory","ignoreCase":"key","aliases":["dsymDir"]},"localeOption":{"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"],"aliases":["locale"]},"userDefinedLocale":{"type":"string","description":"Other locale","ignoreCase":"key"},"loginOptions":{"type":"string","description":"Additional options for login","ignoreCase":"key","aliases":["loginOpts"]},"runOptions":{"type":"string","description":"Additional options for run","ignoreCase":"key","aliases":["runOpts"]},"skipWaitingForResults":{"type":"boolean","description":"Do not wait for test result","ignoreCase":"key","aliases":["async"]},"cliFile":{"type":"string","description":"App Center CLI location","ignoreCase":"key","aliases":["cliLocationOverride"]},"showDebugOutput":{"type":"boolean","description":"Enable debug output","ignoreCase":"key","aliases":["debug"]}},"additionalProperties":false,"required":["appFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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":{"description":"EsrpClient Tool Installer\n\nFinds or Downloads and caches specified version spec of EsrpClient CLI and adds it to the PATH. In addition it will set esrpclient.toolpath and esrpclient.toolname task output variables which you can use in subsequent tasks or build scripts","ignoreCase":"value","pattern":"^EsrpClientTool@1$"},"inputs":{"description":"EsrpClient Tool Installer inputs","properties":{},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Download secure file\n\nDownload a secure file to the agent machine","ignoreCase":"value","pattern":"^DownloadSecureFile@1$"},"inputs":{"description":"Download secure file inputs","properties":{"secureFile":{"type":"string","description":"Secure File","ignoreCase":"key"},"retryCount":{"type":"string","description":"Retry Count","ignoreCase":"key"},"socketTimeout":{"type":"string","description":"Socket Timeout","ignoreCase":"key"}},"additionalProperties":false,"required":["secureFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Use Ruby version\n\nUse the specified version of Ruby from the tool cache, optionally adding it to the PATH","ignoreCase":"value","pattern":"^UseRubyVersion@0$"},"inputs":{"description":"Use Ruby version inputs","properties":{"versionSpec":{"type":"string","description":"Version spec","ignoreCase":"key"},"addToPath":{"type":"boolean","description":"Add to PATH","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Grunt\n\nRun the Grunt JavaScript task runner","ignoreCase":"value","pattern":"^Grunt@0$"},"inputs":{"description":"Grunt inputs","properties":{"gruntFile":{"type":"string","description":"Grunt File Path","ignoreCase":"key"},"targets":{"type":"string","description":"Grunt Task(s)","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["cwd"]},"gruntCli":{"type":"string","description":"grunt-cli location","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"},"enableCodeCoverage":{"type":"boolean","description":"Enable Code Coverage","ignoreCase":"key"},"testFramework":{"description":"Test Framework","ignoreCase":"all","enum":["Mocha","Jasmine"]},"srcFiles":{"type":"string","description":"Source Files","ignoreCase":"key"},"testFiles":{"type":"string","description":"Test Script Files","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure SQL Database deployment\n\nDeploy an Azure SQL Database using DACPAC or run scripts using SQLCMD","ignoreCase":"value","pattern":"^SqlAzureDacpacDeployment@1$"},"inputs":{"description":"Azure SQL Database deployment inputs","properties":{"azureConnectionType":{"description":"Azure Service 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"]},"AuthenticationType":{"description":"Authentication Type","ignoreCase":"all","enum":["server","aadAuthenticationPassword","aadAuthenticationIntegrated","connectionString","servicePrincipal"]},"ServerName":{"type":"string","description":"Azure SQL Server","ignoreCase":"key"},"DatabaseName":{"type":"string","description":"Database","ignoreCase":"key"},"SqlUsername":{"type":"string","description":"Login","ignoreCase":"key"},"SqlPassword":{"type":"string","description":"Password","ignoreCase":"key"},"aadSqlUsername":{"type":"string","description":"Login","ignoreCase":"key"},"aadSqlPassword":{"type":"string","description":"Password","ignoreCase":"key"},"ConnectionString":{"type":"string","description":"Connection String","ignoreCase":"key"},"deployType":{"description":"Deploy type","ignoreCase":"all","enum":["DacpacTask","SqlTask","InlineSqlTask"],"aliases":["TaskNameSelector"]},"DeploymentAction":{"description":"Action","ignoreCase":"all","enum":["Publish","Extract","Export","Import","Script","DriftReport","DeployReport"]},"DacpacFile":{"type":"string","description":"DACPAC File","ignoreCase":"key"},"BacpacFile":{"type":"string","description":"BACPAC File","ignoreCase":"key"},"SqlFile":{"type":"string","description":"SQL Script","ignoreCase":"key"},"SqlInline":{"type":"string","description":"Inline SQL Script","ignoreCase":"key"},"PublishProfile":{"type":"string","description":"Publish Profile","ignoreCase":"key"},"AdditionalArguments":{"type":"string","description":"Additional SqlPackage.exe Arguments","ignoreCase":"key"},"SqlAdditionalArguments":{"type":"string","description":"Additional Invoke-Sqlcmd Arguments","ignoreCase":"key"},"InlineAdditionalArguments":{"type":"string","description":"Additional Invoke-Sqlcmd Arguments","ignoreCase":"key"},"IpDetectionMethod":{"description":"Specify Firewall Rules Using","ignoreCase":"all","enum":["AutoDetect","IPAddressRange"]},"StartIpAddress":{"type":"string","description":"Start IP Address","ignoreCase":"key"},"EndIpAddress":{"type":"string","description":"End IP Address","ignoreCase":"key"},"DeleteFirewallRule":{"type":"boolean","description":"Delete Rule After Task Ends","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Container Structure Test\n\nUses container-structure-test (https://github.com/GoogleContainerTools/container-structure-test) to validate the structure of an image based on four categories of tests - command tests, file existence tests, file content tests and metadata tests","ignoreCase":"value","pattern":"^ContainerStructureTest@0$"},"inputs":{"description":"Container Structure Test inputs","properties":{"dockerRegistryServiceConnection":{"type":"string","description":"Docker registry service connection","ignoreCase":"key"},"repository":{"type":"string","description":"Container repository","ignoreCase":"key"},"tag":{"type":"string","description":"Tag","ignoreCase":"key"},"configFile":{"type":"string","description":"Config file path","ignoreCase":"key"},"testRunTitle":{"type":"string","description":"Test run title","ignoreCase":"key"},"failTaskOnFailedTests":{"type":"boolean","description":"Fail task if there are test failures","ignoreCase":"key"}},"additionalProperties":false,"required":["dockerRegistryServiceConnection","repository","configFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"[Deprecated] IIS Web App deployment\n\nDeploy using MSDeploy, then create/update websites and app pools","ignoreCase":"value","pattern":"^IISWebAppDeployment@1$"},"inputs":{"description":"[Deprecated] IIS Web App deployment inputs","properties":{"EnvironmentName":{"type":"string","description":"Machines","ignoreCase":"key"},"AdminUserName":{"type":"string","description":"Admin Login","ignoreCase":"key"},"AdminPassword":{"type":"string","description":"Password","ignoreCase":"key"},"WinRMProtocol":{"description":"Protocol","ignoreCase":"all","enum":["Http","Https"]},"TestCertificate":{"type":"boolean","description":"Test Certificate","ignoreCase":"key"},"WebDeployPackage":{"type":"string","description":"Web Deploy Package","ignoreCase":"key"},"WebDeployParamFile":{"type":"string","description":"Web Deploy Parameter File","ignoreCase":"key"},"OverRideParams":{"type":"string","description":"Override Parameters","ignoreCase":"key"},"CreateWebSite":{"type":"boolean","description":"Create or Update Website","ignoreCase":"key"},"WebSiteName":{"type":"string","description":"Website Name","ignoreCase":"key"},"WebSitePhysicalPath":{"type":"string","description":"Physical Path","ignoreCase":"key"},"WebSitePhysicalPathAuth":{"description":"Physical Path Authentication","ignoreCase":"all","enum":["WebSiteUserPassThrough","WebSiteWindowsAuth"]},"WebSiteAuthUserName":{"type":"string","description":"User Name","ignoreCase":"key"},"WebSiteAuthUserPassword":{"type":"string","description":"Password","ignoreCase":"key"},"AddBinding":{"type":"boolean","description":"Add Binding","ignoreCase":"key"},"AssignDuplicateBinding":{"type":"boolean","description":"Assign Duplicate Binding","ignoreCase":"key"},"Protocol":{"description":"Protocol","ignoreCase":"all","enum":["https","http"]},"IPAddress":{"type":"string","description":"IP Address","ignoreCase":"key"},"Port":{"type":"string","description":"Port","ignoreCase":"key"},"ServerNameIndication":{"type":"boolean","description":"Server Name Indication Required","ignoreCase":"key"},"HostNameWithOutSNI":{"type":"string","description":"Host Name","ignoreCase":"key"},"HostNameWithHttp":{"type":"string","description":"Host Name","ignoreCase":"key"},"HostNameWithSNI":{"type":"string","description":"Host Name","ignoreCase":"key"},"SSLCertThumbPrint":{"type":"string","description":"SSL Certificate Thumb Print","ignoreCase":"key"},"CreateAppPool":{"type":"boolean","description":"Create or Update Application Pool","ignoreCase":"key"},"AppPoolName":{"type":"string","description":"Name","ignoreCase":"key"},"DotNetVersion":{"description":".NET Version","ignoreCase":"all","enum":["v4.0","v2.0","No Managed Code"]},"PipeLineMode":{"description":"Managed Pipeline Mode","ignoreCase":"all","enum":["Integrated","Classic"]},"AppPoolIdentity":{"description":"Identity","ignoreCase":"all","enum":["ApplicationPoolIdentity","LocalService","LocalSystem","NetworkService","SpecificUser"]},"AppPoolUsername":{"type":"string","description":"Username","ignoreCase":"key"},"AppPoolPassword":{"type":"string","description":"Password","ignoreCase":"key"},"AppCmdCommands":{"type":"string","description":"Additional AppCmd.exe Commands","ignoreCase":"key"},"DeployInParallel":{"type":"boolean","description":"Deploy in Parallel","ignoreCase":"key"},"ResourceFilteringMethod":{"description":"Select Machines By","ignoreCase":"all","enum":["machineNames","tags"]},"MachineFilter":{"type":"string","description":"Deploy to Machines","ignoreCase":"key"}},"additionalProperties":false,"required":["EnvironmentName","WebDeployPackage"]}},"deprecationMessage":"IISWebAppDeployment is deprecated - Deploy using MSDeploy, then create/update websites and app pools","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Cloud-based load test\n\nRun a load test in the cloud with Azure Pipelines","ignoreCase":"value","pattern":"^CloudLoadTest@1$"},"inputs":{"description":"Cloud-based load test inputs","properties":{"connectedServiceName":{"type":"string","description":"Azure Pipelines Connection","ignoreCase":"key"},"TestDrop":{"type":"string","description":"Load test files folder","ignoreCase":"key"},"LoadTest":{"type":"string","description":"Load test file","ignoreCase":"key"},"activeRunSettings":{"description":"Active Run Settings","ignoreCase":"all","enum":["useFile","changeActive"]},"runSettingName":{"type":"string","description":"Specify the name of the Run Settings","ignoreCase":"key"},"testContextParameters":{"type":"string","description":"Override load test context parameters","ignoreCase":"key"},"TestSettings":{"type":"string","description":"Test settings file","ignoreCase":"key"},"ThresholdLimit":{"type":"string","description":"Number of permissible threshold violations","ignoreCase":"key"},"MachineType":{"description":"Run load test using","ignoreCase":"all","enum":["0","2"]},"resourceGroupName":{"type":"string","description":"Resource group rig","ignoreCase":"key"},"numOfSelfProvisionedAgents":{"type":"integer","description":"Number of agents to use","ignoreCase":"key"}},"additionalProperties":false,"required":["LoadTest"]}},"deprecationMessage":"CloudLoadTest is deprecated - Run a load test in the cloud with Azure Pipelines","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"1ES Hosted Pool Validation\n\nValidates that pipelines use secure and compliant Azure DevOps pools","ignoreCase":"value","pattern":"^1ESHostedPoolValidation@1$"},"inputs":{"description":"1ES Hosted Pool Validation inputs","properties":{},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Download Artifact Services Drop -preview\n\nDownload from Artifact Services Drop - Internal Preview","ignoreCase":"value","pattern":"^artifactDropDownloadTask@0$"},"inputs":{"description":"Download Artifact Services Drop -preview inputs","properties":{"dropMetadataContainerName":{"type":"string","description":"Drop Metadata Container Name","ignoreCase":"key"},"dropMetadataContainerBuild":{"type":"string","description":"Source Build of Drop Metadata Container","ignoreCase":"key"},"dropServiceURI":{"type":"string","description":"Drop Service Endpoint","ignoreCase":"key"},"buildNumber":{"type":"string","description":"Drop Name","ignoreCase":"key"},"destinationPath":{"type":"string","description":"Download Destination Path","ignoreCase":"key"},"rootPaths":{"type":"string","description":"Root Paths","ignoreCase":"key"},"writable":{"type":"boolean","description":"Make cache writable","ignoreCase":"key"},"dropExePath":{"type":"string","description":"Override drop.exe Path","ignoreCase":"key"},"detailedLog":{"type":"boolean","description":"Verbose Logging","ignoreCase":"key"},"usePat":{"type":"boolean","description":"Use Personal Access Token","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Kubectl tool installer\n\nInstall Kubectl on agent machine","ignoreCase":"value","pattern":"^KubectlInstaller@0$"},"inputs":{"description":"Kubectl tool installer inputs","properties":{"kubectlVersion":{"type":"string","description":"Kubectl Version Spec","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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":{"description":"Command Line\n\nRun a command line with arguments","ignoreCase":"value","pattern":"^CmdLine@1$"},"inputs":{"description":"Command Line inputs","properties":{"filename":{"type":"string","description":"Tool","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingFolder":{"type":"string","description":"Working folder","ignoreCase":"key"},"failOnStandardError":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"}},"additionalProperties":false,"required":["filename"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"NuGet command\n\nDeprecated: 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.","ignoreCase":"value","pattern":"^NuGet@0$"},"inputs":{"description":"NuGet command inputs","properties":{"command":{"type":"string","description":"Command","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"}},"additionalProperties":false,"required":["command"]}},"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.","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Container Build\n\nContainer Build Task","ignoreCase":"value","pattern":"^ContainerBuild@0$"},"inputs":{"description":"Container Build inputs","properties":{"dockerRegistryServiceConnection":{"type":"string","description":"Docker registry service connection","ignoreCase":"key"},"repository":{"type":"string","description":"Container repository","ignoreCase":"key"},"Dockerfile":{"type":"string","description":"Dockerfile","ignoreCase":"key"},"buildContext":{"type":"string","description":"Build context","ignoreCase":"key"},"tags":{"type":"string","description":"Tags","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Send Helix End Telemetry\n\nSend end job telemetry for .NET Core builds","ignoreCase":"value","pattern":"^SendEndTelemetry@0$"},"inputs":{"description":"Send Helix End Telemetry inputs","properties":{"maxRetries":{"type":"string","description":"Maximum number of retry attempts","ignoreCase":"key"},"retryDelay":{"type":"string","description":"Number of seconds to wait between retry attempts","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"NuGet Restore\n\nRestores NuGet packages in preparation for a Visual Studio Build step.","ignoreCase":"value","pattern":"^NuGetRestore@1$"},"inputs":{"description":"NuGet Restore inputs","properties":{"solution":{"type":"string","description":"Path to solution, packages.config, or project.json","ignoreCase":"key"},"selectOrConfig":{"description":"Feeds to use","ignoreCase":"all","enum":["select","config"]},"feed":{"type":"string","description":"Use packages from this Azure Artifacts feed","ignoreCase":"key"},"includeNuGetOrg":{"type":"boolean","description":"Use packages from NuGet.org","ignoreCase":"key"},"nugetConfigPath":{"type":"string","description":"Path to NuGet.config","ignoreCase":"key"},"noCache":{"type":"boolean","description":"Disable local cache","ignoreCase":"key"},"packagesDirectory":{"type":"string","description":"Destination directory","ignoreCase":"key"},"verbosity":{"description":"Verbosity","ignoreCase":"all","enum":["-","Quiet","Normal","Detailed"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"NuGet\n\nRestore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.","ignoreCase":"value","pattern":"^NuGetCommand@2$"},"inputs":{"description":"NuGet inputs","properties":{"command":{"description":"Command","ignoreCase":"all","enum":["restore","pack","push","custom"]},"restoreSolution":{"type":"string","description":"Path to solution, packages.config, or project.json","ignoreCase":"key","aliases":["solution"]},"feedsToUse":{"description":"Feeds to use","ignoreCase":"all","enum":["select","config"],"aliases":["selectOrConfig"]},"vstsFeed":{"type":"string","description":"Use packages from this Azure Artifacts/TFS feed","ignoreCase":"key","aliases":["feedRestore"]},"includeNuGetOrg":{"type":"boolean","description":"Use packages from NuGet.org","ignoreCase":"key"},"nugetConfigPath":{"type":"string","description":"Path to NuGet.config","ignoreCase":"key"},"externalFeedCredentials":{"type":"string","description":"Credentials for feeds outside this organization/collection","ignoreCase":"key","aliases":["externalEndpoints"]},"noCache":{"type":"boolean","description":"Disable local cache","ignoreCase":"key"},"disableParallelProcessing":{"type":"boolean","description":"Disable parallel processing","ignoreCase":"key"},"restoreDirectory":{"type":"string","description":"Destination directory","ignoreCase":"key","aliases":["packagesDirectory"]},"verbosityRestore":{"description":"Verbosity","ignoreCase":"all","enum":["Quiet","Normal","Detailed"]},"packagesToPush":{"type":"string","description":"Path to NuGet package(s) to publish","ignoreCase":"key","aliases":["searchPatternPush"]},"nuGetFeedType":{"description":"Target feed location","ignoreCase":"all","enum":["internal","external"]},"publishVstsFeed":{"type":"string","description":"Target feed","ignoreCase":"key","aliases":["feedPublish"]},"publishPackageMetadata":{"type":"boolean","description":"Publish pipeline metadata","ignoreCase":"key"},"allowPackageConflicts":{"type":"boolean","description":"Allow duplicates to be skipped","ignoreCase":"key"},"publishFeedCredentials":{"type":"string","description":"NuGet server","ignoreCase":"key","aliases":["externalEndpoint"]},"verbosityPush":{"description":"Verbosity","ignoreCase":"all","enum":["Quiet","Normal","Detailed"]},"packagesToPack":{"type":"string","description":"Path to csproj or nuspec file(s) to pack","ignoreCase":"key","aliases":["searchPatternPack"]},"configuration":{"type":"string","description":"Configuration to package","ignoreCase":"key","aliases":["configurationToPack"]},"packDestination":{"type":"string","description":"Package folder","ignoreCase":"key","aliases":["outputDir"]},"versioningScheme":{"description":"Automatic package versioning","ignoreCase":"all","enum":["off","byPrereleaseNumber","byEnvVar","byBuildNumber"]},"includeReferencedProjects":{"type":"boolean","description":"Include referenced projects","ignoreCase":"key"},"versionEnvVar":{"type":"string","description":"Environment variable","ignoreCase":"key"},"majorVersion":{"type":"string","description":"Major","ignoreCase":"key","aliases":["requestedMajorVersion"]},"minorVersion":{"type":"string","description":"Minor","ignoreCase":"key","aliases":["requestedMinorVersion"]},"patchVersion":{"type":"string","description":"Patch","ignoreCase":"key","aliases":["requestedPatchVersion"]},"packTimezone":{"description":"Time zone","ignoreCase":"all","enum":["utc","local"]},"includeSymbols":{"type":"boolean","description":"Create symbols package","ignoreCase":"key"},"toolPackage":{"type":"boolean","description":"Tool Package","ignoreCase":"key"},"buildProperties":{"type":"string","description":"Additional build properties","ignoreCase":"key"},"basePath":{"type":"string","description":"Base path","ignoreCase":"key"},"verbosityPack":{"description":"Verbosity","ignoreCase":"all","enum":["Quiet","Normal","Detailed"]},"arguments":{"type":"string","description":"Command and arguments","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"(deprecated) Docker Publish\n\nInvokes the VS Tools for Docker script with optional overrides","ignoreCase":"value","pattern":"^DockerPublish@0$"},"inputs":{"description":"(deprecated) Docker Publish inputs","properties":{"pathToPubxml":{"type":"string","description":"Path to Pubxml","ignoreCase":"key"},"pathToDockerfile":{"type":"string","description":"Path to Dockerfile","ignoreCase":"key"},"packOutput":{"type":"string","description":"Pack Output Path","ignoreCase":"key"},"serverUrl":{"type":"string","description":"Docker Server URL","ignoreCase":"key"},"imageName":{"type":"string","description":"Docker image name","ignoreCase":"key"},"buildOnly":{"type":"boolean","description":"Build only","ignoreCase":"key"},"hostPort":{"type":"string","description":"Host Port","ignoreCase":"key"},"containerPort":{"type":"string","description":"Container Port","ignoreCase":"key"},"runOptions":{"type":"string","description":"Run Options","ignoreCase":"key"},"appType":{"type":"string","description":"App Type","ignoreCase":"key"},"isWindowsContainer":{"type":"string","description":"Create Windows Container","ignoreCase":"key"},"authOptions":{"type":"string","description":"Auth Options","ignoreCase":"key"},"removeConflictingContainers":{"type":"string","description":"Remove Conflicting Containers","ignoreCase":"key"}},"additionalProperties":false,"required":["pathToDockerfile","packOutput"]}},"deprecationMessage":"DockerPublish is deprecated - Invokes the VS Tools for Docker script with optional overrides","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Delay\n\nDelay further execution of a workflow by a fixed time","ignoreCase":"value","pattern":"^Delay@1$"},"inputs":{"description":"Delay inputs","properties":{"delayForMinutes":{"type":"string","description":"Delay Time (minutes)","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Sign Mac Files\n\nSubmits Mac files to PRSS for signing","ignoreCase":"value","pattern":"^MicroBuildSignMacFiles@1$"},"inputs":{"description":"MicroBuild Sign Mac Files inputs","properties":{"SigningTarget":{"type":"string","description":"Folder or Zip or Dmg to Sign","ignoreCase":"key"},"SigningCert":{"description":"Signing Certificate","ignoreCase":"all","enum":["8001","8021","8003","8023","8020"]},"MacAppName":{"type":"string","description":"Mac Notarization App Name","ignoreCase":"key"},"SigningPluginSource":{"type":"string","description":"Signing Plugin Source","ignoreCase":"key"},"SigningPluginVersion":{"type":"string","description":"Signing Plugin Version","ignoreCase":"key"}},"additionalProperties":false,"required":["SigningTarget","SigningCert"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Sign Mac Files\n\nSubmits Mac files to PRSS for signing","ignoreCase":"value","pattern":"^MicroBuildSignMacFiles@0$"},"inputs":{"description":"MicroBuild Sign Mac Files inputs","properties":{"SigningTarget":{"type":"string","description":"Folder or Zip to Sign","ignoreCase":"key"},"SigningCert":{"description":"Signing Certificate","ignoreCase":"all","enum":["8001","8003"]},"SigningPluginSource":{"type":"string","description":"Signing Plugin Source","ignoreCase":"key"},"SigningPluginVersion":{"type":"string","description":"Signing Plugin Version","ignoreCase":"key"}},"additionalProperties":false,"required":["SigningTarget","SigningCert"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"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":{"description":"Xamarin.iOS\n\nBuild an iOS app with Xamarin on macOS","ignoreCase":"value","pattern":"^XamariniOS@1$"},"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"]},"buildToolOption":{"description":"Build tool","ignoreCase":"all","enum":["xbuild","msbuild"],"aliases":["buildTool"]},"mdtoolFile":{"type":"string","description":"Build tool path","ignoreCase":"key","aliases":["mdtoolLocation"]},"signingOption":{"description":"Override using","ignoreCase":"all","enum":["file","id"],"aliases":["signMethod"]},"signingIdentity":{"type":"string","description":"Signing identity","ignoreCase":"key","aliases":["iosSigningIdentity"]},"signingUnlockDefaultKeychain":{"type":"boolean","description":"Unlock default keychain","ignoreCase":"key","aliases":["unlockDefaultKeychain"]},"signingDefaultKeychainPassword":{"type":"string","description":"Default keychain password","ignoreCase":"key","aliases":["defaultKeychainPassword"]},"signingProvisioningProfileID":{"type":"string","description":"Provisioning profile UUID","ignoreCase":"key","aliases":["provProfileUuid"]},"signingP12File":{"type":"string","description":"P12 certificate file","ignoreCase":"key","aliases":["p12"]},"signingP12Password":{"type":"string","description":"P12 password","ignoreCase":"key","aliases":["p12pwd"]},"signingProvisioningProfileFile":{"type":"string","description":"Provisioning profile file","ignoreCase":"key","aliases":["provProfile"]},"signingRemoveProfile":{"type":"boolean","description":"Remove profile after build","ignoreCase":"key","aliases":["removeProfile"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Ref12 Analyze\n\nAnalyze repository and generate data files to enable semantic code browsing.","ignoreCase":"value","pattern":"^Ref12Analyze@0$"},"inputs":{"description":"Ref12 Analyze inputs","properties":{"codexoutputroot":{"type":"string","description":"Codex Output Root","ignoreCase":"key"},"workflowArguments":{"type":"string","description":"Workflow Arguments","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Publish test results\n\nPublish test results to Azure Pipelines","ignoreCase":"value","pattern":"^PublishTestResults@1$"},"inputs":{"description":"Publish test results inputs","properties":{"testRunner":{"description":"Test Result Format","ignoreCase":"all","enum":["JUnit","NUnit","VSTest","XUnit"]},"testResultsFiles":{"type":"string","description":"Test Results Files","ignoreCase":"key"},"mergeTestResults":{"type":"boolean","description":"Merge Test Results","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":"Publish Test Results\n\nPublish test results to Azure Pipelines","ignoreCase":"value","pattern":"^PublishTestResults@2$"},"inputs":{"description":"Publish Test Results inputs","properties":{"testResultsFormat":{"description":"Test result format","ignoreCase":"all","enum":["JUnit","NUnit","VSTest","XUnit","CTest"],"aliases":["testRunner"]},"testResultsFiles":{"type":"string","description":"Test results files","ignoreCase":"key"},"searchFolder":{"type":"string","description":"Search folder","ignoreCase":"key"},"mergeTestResults":{"type":"boolean","description":"Merge test results","ignoreCase":"key"},"failTaskOnFailedTests":{"type":"boolean","description":"Fail if there are test failures","ignoreCase":"key"},"testRunTitle":{"type":"string","description":"Test run title","ignoreCase":"key"},"buildPlatform":{"type":"string","description":"Build Platform","ignoreCase":"key","aliases":["platform"]},"buildConfiguration":{"type":"string","description":"Build Configuration","ignoreCase":"key","aliases":["configuration"]},"publishRunAttachments":{"type":"boolean","description":"Upload test results files","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure file copy\n\nCopy files to Azure Blob Storage or virtual machines","ignoreCase":"value","pattern":"^AzureFileCopy@1$"},"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"},"AdditionalArguments":{"type":"string","description":"Additional Arguments","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@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@3$"},"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"},"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"},"sasTokenTimeOutInMinutes":{"type":"string","description":"SAS Token Expiration Period In Minutes","ignoreCase":"key"}},"additionalProperties":false,"required":["SourcePath","azureSubscription","Destination","storage"]}},"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":{"description":"MicroBuild Swix Plugin\n\nInstalls and configures the MicroBuild swix plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSwixPlugin@3$"},"inputs":{"description":"MicroBuild Swix Plugin inputs","properties":{"dropName":{"type":"string","description":"Drop Name","ignoreCase":"key"},"dropServiceUri":{"type":"string","description":"VSDrop Service Uri","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Swix Plugin\n\nInstalls and configures the MicroBuild swix plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSwixPlugin@4$"},"inputs":{"description":"MicroBuild Swix Plugin inputs","properties":{"dropName":{"type":"string","description":"Drop Name","ignoreCase":"key"},"dropServiceUri":{"type":"string","description":"VSDrop Service Uri","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Swix Plugin\n\nInstalls and configures the MicroBuild swix plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSwixPlugin@2$"},"inputs":{"description":"MicroBuild Swix Plugin inputs","properties":{"dropName":{"type":"string","description":"Drop Name","ignoreCase":"key"},"dropServiceUri":{"type":"string","description":"VSDrop Service Uri","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Swix Plugin\n\nInstalls and configures the MicroBuild swix plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildSwixPlugin@1$"},"inputs":{"description":"MicroBuild Swix Plugin inputs","properties":{"dropName":{"type":"string","description":"Drop Name","ignoreCase":"key"},"dropServiceUri":{"type":"string","description":"VSDrop Service Uri","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Index sources and publish symbols\n\nIndex your source code and publish symbols to a file share or Azure Artifacts symbol server","ignoreCase":"value","pattern":"^PublishSymbols@2$"},"inputs":{"description":"Index sources and publish symbols inputs","properties":{"SymbolsFolder":{"type":"string","description":"Path to symbols folder","ignoreCase":"key"},"SearchPattern":{"type":"string","description":"Search pattern","ignoreCase":"key"},"IndexSources":{"type":"boolean","description":"Index sources","ignoreCase":"key"},"PublishSymbols":{"type":"boolean","description":"Publish symbols","ignoreCase":"key"},"SymbolServerType":{"description":"Symbol server type","ignoreCase":"all","enum":[" ","TeamServices","FileShare"]},"SymbolsPath":{"type":"string","description":"Path to publish symbols","ignoreCase":"key"},"CompressSymbols":{"type":"boolean","description":"Compress symbols","ignoreCase":"key"},"IndexableFileFormats":{"description":"Symbol file formats to publish","ignoreCase":"all","enum":["Default","Pdb","SourceMap","All"]},"DetailedLog":{"type":"boolean","description":"Verbose logging","ignoreCase":"key"},"TreatNotIndexedAsWarning":{"type":"boolean","description":"Warn if not indexed","ignoreCase":"key"},"SymbolsMaximumWaitTime":{"type":"string","description":"Max wait time (min)","ignoreCase":"key"},"SymbolsProduct":{"type":"string","description":"Product","ignoreCase":"key"},"SymbolsVersion":{"type":"string","description":"Version","ignoreCase":"key"},"SymbolsArtifactName":{"type":"string","description":"Artifact name","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Index Sources & Publish Symbols\n\nIndex your source code and publish symbols to a file share","ignoreCase":"value","pattern":"^PublishSymbols@1$"},"inputs":{"description":"Index Sources & Publish Symbols inputs","properties":{"SymbolsPath":{"type":"string","description":"Path to publish symbols","ignoreCase":"key"},"SearchPattern":{"type":"string","description":"Search pattern","ignoreCase":"key"},"SymbolsFolder":{"type":"string","description":"Path to symbols folder","ignoreCase":"key"},"SkipIndexing":{"type":"boolean","description":"Skip indexing","ignoreCase":"key"},"TreatNotIndexedAsWarning":{"type":"boolean","description":"Warn if not indexed","ignoreCase":"key"},"SymbolsMaximumWaitTime":{"type":"string","description":"Max wait time (min)","ignoreCase":"key"},"SymbolsProduct":{"type":"string","description":"Product","ignoreCase":"key"},"SymbolsVersion":{"type":"string","description":"Version","ignoreCase":"key"},"SymbolsArtifactName":{"type":"string","description":"Artifact name","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Copy files over SSH\n\nCopy files or build artifacts to a remote machine over SSH","ignoreCase":"value","pattern":"^CopyFilesOverSSH@0$"},"inputs":{"description":"Copy files over SSH inputs","properties":{"sshEndpoint":{"type":"string","description":"SSH service connection","ignoreCase":"key"},"sourceFolder":{"type":"string","description":"Source folder","ignoreCase":"key"},"contents":{"type":"string","description":"Contents","ignoreCase":"key"},"targetFolder":{"type":"string","description":"Target folder","ignoreCase":"key"},"isWindowsOnTarget":{"type":"boolean","description":"Target machine running Windows","ignoreCase":"key"},"cleanTargetFolder":{"type":"boolean","description":"Clean target folder","ignoreCase":"key"},"readyTimeout":{"type":"string","description":"SSH handshake timeout","ignoreCase":"key"},"overwrite":{"type":"boolean","description":"Overwrite","ignoreCase":"key"},"failOnEmptySource":{"type":"boolean","description":"Fail if no files found to copy","ignoreCase":"key"},"flattenFolders":{"type":"boolean","description":"Flatten folders","ignoreCase":"key"}},"additionalProperties":false,"required":["sshEndpoint"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Gradle\n\nBuild using a Gradle wrapper script","ignoreCase":"value","pattern":"^Gradle@2$"},"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.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":{"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.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":{"description":"Gradle\n\nBuild using a Gradle wrapper script","ignoreCase":"value","pattern":"^Gradle@1$"},"inputs":{"description":"Gradle inputs","properties":{"gradleWrapperFile":{"type":"string","description":"Gradle Wrapper","ignoreCase":"key","aliases":["wrapperScript"]},"options":{"type":"string","description":"Options","ignoreCase":"key"},"tasks":{"type":"string","description":"Tasks","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["cwd"]},"publishJUnitResults":{"type":"boolean","description":"Publish to TFS/Team Services","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"]},"javaHomeOption":{"description":"Set JAVA_HOME by","ignoreCase":"all","enum":["JDKVersion","Path"],"aliases":["javaHomeSelection"]},"jdkVersionOption":{"description":"JDK Version","ignoreCase":"all","enum":["default","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 Analysis","ignoreCase":"key","aliases":["sqAnalysisEnabled"]},"sonarQubeServiceEndpoint":{"type":"string","description":"SonarQube Endpoint","ignoreCase":"key","aliases":["sqConnectedServiceName"]},"sonarQubeProjectName":{"type":"string","description":"SonarQube Project Name","ignoreCase":"key","aliases":["sqProjectName"]},"sonarQubeProjectKey":{"type":"string","description":"SonarQube Project Key","ignoreCase":"key","aliases":["sqProjectKey"]},"sonarQubeProjectVersion":{"type":"string","description":"SonarQube Project Version","ignoreCase":"key","aliases":["sqProjectVersion"]},"sonarQubeGradlePluginVersion":{"type":"string","description":"SonarQube Gradle Plugin Version","ignoreCase":"key","aliases":["sqGradlePluginVersion"]},"sonarQubeSpecifyDB":{"type":"boolean","description":"The SonarQube server version is lower than 5.2","ignoreCase":"key","aliases":["sqDbDetailsRequired"]},"sonarQubeDBUrl":{"type":"string","description":"Db Connection String","ignoreCase":"key","aliases":["sqDbUrl"]},"sonarQubeDBUsername":{"type":"string","description":"Db Username","ignoreCase":"key","aliases":["sqDbUsername"]},"sonarQubeDBPassword":{"type":"string","description":"Db User Password","ignoreCase":"key","aliases":["sqDbPassword"]},"sonarQubeIncludeFullReport":{"type":"boolean","description":"Include full analysis report in the build summary (SQ 5.3+)","ignoreCase":"key","aliases":["sqAnalysisIncludeFullReport"]},"sonarQubeFailWhenQualityGateFails":{"type":"boolean","description":"Fail the build on quality gate failure (SQ 5.3+)","ignoreCase":"key","aliases":["sqAnalysisBreakBuildIfQualityGateFailed"]},"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"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Replace Tokens\n\nReplaces tokens in a file using RegEx. Values come from any variable defined in the current Environment.","ignoreCase":"value","pattern":"^ReplaceTokens@1$"},"inputs":{"description":"Replace Tokens inputs","properties":{"sourcePath":{"type":"string","description":"Source Path","ignoreCase":"key"},"filePattern":{"type":"string","description":"Target File Pattern","ignoreCase":"key"},"warningsAsErrors":{"type":"boolean","description":"Treat warnings as errors","ignoreCase":"key"},"tokenRegex":{"type":"string","description":"Token Regex","ignoreCase":"key"},"secretTokens":{"type":"string","description":"Secret Tokens (only for TFS 2015)","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Localization Plugin\n\nInstalls and configures the MicroBuild localization plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildLocalizationPlugin@1$"},"inputs":{"description":"MicroBuild Localization Plugin inputs","properties":{"type":{"description":"Localization Type","ignoreCase":"all","enum":["full","hybrid","pseudo"]},"languages":{"type":"string","description":"Languages","ignoreCase":"key"},"manifestPath":{"type":"string","description":"Manifest File (Deprecated)","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Localization Plugin\n\nInstalls and configures the MicroBuild localization plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildLocalizationPlugin@4$"},"inputs":{"description":"MicroBuild Localization Plugin inputs","properties":{"type":{"description":"Localization Type","ignoreCase":"all","enum":["full","hybrid","pseudo"]},"languages":{"type":"string","description":"Languages","ignoreCase":"key"},"lsbuildVersion":{"description":"LSBuild Version","ignoreCase":"all","enum":["V7","V6"]},"manifestPath":{"type":"string","description":"Manifest File (Deprecated)","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Localization Plugin\n\nInstalls and configures the MicroBuild localization plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildLocalizationPlugin@3$"},"inputs":{"description":"MicroBuild Localization Plugin inputs","properties":{"type":{"description":"Localization Type","ignoreCase":"all","enum":["full","hybrid","pseudo"]},"languages":{"type":"string","description":"Languages","ignoreCase":"key"},"manifestPath":{"type":"string","description":"Manifest File (Deprecated)","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Localization Plugin\n\nInstalls and configures the MicroBuild localization plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildLocalizationPlugin@2$"},"inputs":{"description":"MicroBuild Localization Plugin inputs","properties":{"type":{"description":"Localization Type","ignoreCase":"all","enum":["full","hybrid","pseudo"]},"languages":{"type":"string","description":"Languages","ignoreCase":"key"},"manifestPath":{"type":"string","description":"Manifest File (Deprecated)","ignoreCase":"key"},"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"ESRP Malware Scanning\n\nMicrosoft Internal tool for Malware Scanning of files using ESRP Service","ignoreCase":"value","pattern":"^EsrpMalwareScanning@1$"},"inputs":{"description":"ESRP Malware Scanning inputs","properties":{"ConnectedServiceName":{"type":"string","description":"Connection Name","ignoreCase":"key"},"FolderPath":{"type":"string","description":"Root folder path to get input files for scanning","ignoreCase":"key"},"Pattern":{"type":"string","description":"File search pattern to discover to be scanned files inside Root Folder Path variable above","ignoreCase":"key"},"UseMinimatch":{"type":"boolean","description":"Use Minimatch","ignoreCase":"key"},"Region":{"description":"Datacenter","ignoreCase":"all","enum":["PuertoRico","US"]},"SessionTimeout":{"type":"string","description":"Max Session Time (minutes)","ignoreCase":"key"},"ServiceEndpointUrl":{"type":"string","description":"API Endpoint Url","ignoreCase":"key"},"MaxConcurrency":{"type":"string","description":"Max Concurrency","ignoreCase":"key"},"MaxRetryAttempts":{"type":"string","description":"Max Retry Attempts","ignoreCase":"key"},"CleanupTempStorage":{"type":"boolean","description":"Cleanup all temp blob storage","ignoreCase":"key"},"VerboseLogin":{"type":"boolean","description":"Verbose Logs","ignoreCase":"key"},"tlsVersion":{"description":"TLS Version","ignoreCase":"all","enum":["Tls","Tls11","Tls12"]}},"additionalProperties":false,"required":["ConnectedServiceName"]}},"doNotSuggest":false,"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@1$"},"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 ID","ignoreCase":"key","aliases":["destinationId"]}},"additionalProperties":false,"required":["serverEndpoint","appSlug","appFile"]}},"doNotSuggest":false,"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@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"]}},"doNotSuggest":false,"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":{"description":"App Center Distribute\n\nDistribute app builds to testers and users via App Center","ignoreCase":"value","pattern":"^AppCenterDistribute@0$"},"inputs":{"description":"App Center Distribute inputs","properties":{"serverEndpoint":{"type":"string","description":"App Center 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"},"distributionGroupId":{"type":"string","description":"Distribution group ID","ignoreCase":"key"}},"additionalProperties":false,"required":["serverEndpoint","appSlug","appFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"NuGet tool installer\n\nAcquires 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.","ignoreCase":"value","pattern":"^NuGetToolInstaller@1$"},"inputs":{"description":"NuGet tool installer inputs","properties":{"versionSpec":{"type":"string","description":"Version of NuGet.exe to install","ignoreCase":"key"},"checkLatest":{"type":"boolean","description":"Always check for new versions","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"NuGet tool installer\n\nAcquires 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.","ignoreCase":"value","pattern":"^NuGetToolInstaller@0$"},"inputs":{"description":"NuGet tool installer inputs","properties":{"versionSpec":{"type":"string","description":"Version of NuGet.exe to install","ignoreCase":"key"},"checkLatest":{"type":"boolean","description":"Always download the latest matching version","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"(deprecated) Azure Web Deploy\n\nInvokes web deploy to Azure website, substituting any Environment variables into the SetParameters.xml file","ignoreCase":"value","pattern":"^AzureWebDeploy@0$"},"inputs":{"description":"(deprecated) Azure Web Deploy inputs","properties":{"ConnectedServiceName":{"type":"string","description":"Azure Subscription","ignoreCase":"key"},"WebSiteName":{"type":"string","description":"Web App Name","ignoreCase":"key"},"WebSiteLocation":{"description":"Web App Location","ignoreCase":"all","enum":["Australia East","Australia Southeast","Brazil South","Central US","East Asia","East US","East US2","Japan East","Japan West","North Central US","North Europe","South Central US","Southeast Asia","West Europe","West US"]},"Slot":{"type":"string","description":"Slot","ignoreCase":"key"},"PackagePath":{"type":"string","description":"Web Deploy Package Path","ignoreCase":"key"},"AdditionalArguments":{"type":"string","description":"Additional Arguments","ignoreCase":"key"}},"additionalProperties":false,"required":["ConnectedServiceName","WebSiteName","PackagePath"]}},"deprecationMessage":"AzureWebDeploy is deprecated - Invokes web deploy to Azure website, substituting any Environment variables into the SetParameters.xml file","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"OneLocBuild\n\nGeneric LSBuild wrapper which streamlines the localization build process and optionally checks-in resulting localized files to a repo","ignoreCase":"value","pattern":"^OneLocBuild@2$"},"inputs":{"description":"OneLocBuild inputs","properties":{"locProj":{"type":"string","description":"Localization Project","ignoreCase":"key"},"outDir":{"type":"string","description":"Output Directory","ignoreCase":"key"},"lclSource":{"description":"LCL Source","ignoreCase":"all","enum":["lclFilesInRepo","lclFilesfromPackage"]},"lclPackageId":{"type":"string","description":"LCL Package ID","ignoreCase":"key"},"lclPackageVersion":{"description":"LCL Package Version","ignoreCase":"all","enum":["highestLclPackageVersion","lclPackageVersionSetByVariable"]},"lclPackageVersionVariable":{"type":"string","description":"Variable for LCL Package Version","ignoreCase":"key"},"isEnablePseudoLanguagesSelected":{"type":"boolean","description":"Enable localization for pseudo languages","ignoreCase":"key"},"isCreatePrSelected":{"type":"boolean","description":"Create a pull request to check-in localized files to the repo","ignoreCase":"key"},"repoType":{"description":"Repo Type","ignoreCase":"all","enum":["azureReposGit","gitHub"]},"prSourceBranchPrefix":{"type":"string","description":"Pull Request Source Branch Prefix","ignoreCase":"key"},"azureReposGitPatVariable":{"type":"string","description":"Variable for Azure Repos Git PAT","ignoreCase":"key"},"gitHubPatVariable":{"type":"string","description":"Variable for GitHub PAT","ignoreCase":"key"},"isShouldReusePrSelected":{"type":"boolean","description":"Reuse an existing, active pull request if available","ignoreCase":"key"},"isAutoCompletePrSelected":{"type":"boolean","description":"Auto-Complete a pull request","ignoreCase":"key"},"isDeletePrSourceBranchSelected":{"type":"boolean","description":"Delete a source branch after completing a pull request","ignoreCase":"key"},"isUseLfLineEndingsSelected":{"type":"boolean","description":"Use LF line endings when localized files are checked-in","ignoreCase":"key"},"gitHubPrMergeMethod":{"description":"Pull Request Merge Method","ignoreCase":"all","enum":["merge","squash","rebase"]},"isMirrorRepoSelected":{"type":"boolean","description":"Check-in localized files to the mirror repo","ignoreCase":"key"},"gitHubOrganization":{"type":"string","description":"GitHub Organization","ignoreCase":"key"},"adoOrganization":{"type":"string","description":"Azure DevOps Organization URL","ignoreCase":"key"},"adoProject":{"type":"string","description":"Azure DevOps Project","ignoreCase":"key"},"mirrorRepo":{"type":"string","description":"Mirror Repo","ignoreCase":"key"},"mirrorBranch":{"type":"string","description":"Mirror Branch","ignoreCase":"key"},"packageSourceAuth":{"description":"Package Source Authentication","ignoreCase":"all","enum":["credentialProviderAuth","patAuth"]},"patVariable":{"type":"string","description":"Variable for Package PAT","ignoreCase":"key"},"lsBuildPackageId":{"description":"LSBuild Package ID","ignoreCase":"all","enum":["lsBuildXLoc","lsBuildLegacyXLoc"]},"lsBuildXLocPackageVersion":{"type":"string","description":"LSBuild.XLoc Package Version","ignoreCase":"key"},"lsBuildLegacyXLocPackageVersion":{"type":"string","description":"LSBuild.Legacy.XLoc Package Version","ignoreCase":"key"},"lsBuildWarningLevel":{"description":"LSBuild Warning Level","ignoreCase":"all","enum":["0","1","2","3","4"]},"xLocConsoleLoggingLevel":{"description":"XLoc Tool Console Logging Level","ignoreCase":"all","enum":["verbose","debug","information","warning","error","fatal"]},"nugetCliVersion":{"type":"string","description":"NuGet CLI Version","ignoreCase":"key"},"isOutputLocStatusSelected":{"type":"boolean","description":"Output the status of localization completeness","ignoreCase":"key"},"xLocCustomPowerShellScript":{"type":"string","description":"XLoc Tool Custom PowerShell Script","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Jenkins download artifacts\n\nDownload artifacts produced by a Jenkins job","ignoreCase":"value","pattern":"^JenkinsDownloadArtifacts@1$"},"inputs":{"description":"Jenkins download artifacts inputs","properties":{"jenkinsServerConnection":{"type":"string","description":"Jenkins service connection","ignoreCase":"key","aliases":["serverEndpoint"]},"jobName":{"type":"string","description":"Job name","ignoreCase":"key"},"jenkinsJobType":{"type":"string","description":"Jenkins job type","ignoreCase":"key"},"saveTo":{"type":"string","description":"Save to","ignoreCase":"key"},"jenkinsBuild":{"description":"Download artifacts produced by","ignoreCase":"all","enum":["LastSuccessfulBuild","BuildNumber"]},"jenkinsBuildNumber":{"type":"string","description":"Jenkins build number","ignoreCase":"key"},"itemPattern":{"type":"string","description":"Item Pattern","ignoreCase":"key"},"downloadCommitsAndWorkItems":{"type":"boolean","description":"Download Commits and WorkItems","ignoreCase":"key"},"startJenkinsBuildNumber":{"type":"string","description":"Download commits and work items from","ignoreCase":"key"},"artifactDetailsFileNameSuffix":{"type":"string","description":"Commit and WorkItem FileName","ignoreCase":"key"},"propagatedArtifacts":{"type":"boolean","description":"Artifacts are propagated to Azure","ignoreCase":"key"},"artifactProvider":{"description":"Artifact Provider","ignoreCase":"all","enum":["azureStorage"]},"ConnectedServiceNameARM":{"type":"string","description":"Azure Subscription","ignoreCase":"key"},"storageAccountName":{"type":"string","description":"Storage Account Name","ignoreCase":"key"},"containerName":{"type":"string","description":"Container Name","ignoreCase":"key"},"commonVirtualPath":{"type":"string","description":"Common Virtual Path","ignoreCase":"key"}},"additionalProperties":false,"required":["jenkinsServerConnection","jobName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure Functions for container\n\nUpdate a function app with a Docker container","ignoreCase":"value","pattern":"^AzureFunctionAppContainer@1$"},"inputs":{"description":"Azure Functions for container inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"appName":{"type":"string","description":"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"},"imageName":{"type":"string","description":"Image name","ignoreCase":"key"},"containerCommand":{"type":"string","description":"Startup command ","ignoreCase":"key"},"appSettings":{"type":"string","description":"App settings","ignoreCase":"key"},"configurationStrings":{"type":"string","description":"Configuration settings","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","appName","imageName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Decrypt file (OpenSSL)\n\nDecrypt a file using OpenSSL","ignoreCase":"value","pattern":"^DecryptFile@1$"},"inputs":{"description":"Decrypt file (OpenSSL) inputs","properties":{"cipher":{"type":"string","description":"Cypher","ignoreCase":"key"},"inFile":{"type":"string","description":"Encrypted file","ignoreCase":"key"},"passphrase":{"type":"string","description":"Passphrase","ignoreCase":"key"},"outFile":{"type":"string","description":"Decrypted file path","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key","aliases":["cwd"]}},"additionalProperties":false,"required":["inFile","passphrase"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Package and deploy Helm charts\n\nDeploy, configure, update a Kubernetes cluster in Azure Container Service by running helm commands","ignoreCase":"value","pattern":"^HelmDeploy@0$"},"inputs":{"description":"Package and deploy Helm charts inputs","properties":{"connectionType":{"description":"Connection Type","ignoreCase":"all","enum":["Azure Resource Manager","Kubernetes Service Connection","None"]},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["azureSubscriptionEndpoint"]},"azureResourceGroup":{"type":"string","description":"Resource group","ignoreCase":"key"},"kubernetesCluster":{"type":"string","description":"Kubernetes cluster","ignoreCase":"key"},"useClusterAdmin":{"type":"boolean","description":"Use cluster admin credentials","ignoreCase":"key"},"kubernetesServiceConnection":{"type":"string","description":"Kubernetes Service Connection","ignoreCase":"key","aliases":["kubernetesServiceEndpoint"]},"namespace":{"type":"string","description":"Namespace","ignoreCase":"key"},"azureSubscriptionForACR":{"type":"string","description":"Azure subscription for Container Registry","ignoreCase":"key","aliases":["azureSubscriptionEndpointForACR"]},"azureResourceGroupForACR":{"type":"string","description":"Resource group","ignoreCase":"key"},"azureContainerRegistry":{"type":"string","description":"Azure Container Registry","ignoreCase":"key"},"command":{"description":"Command","ignoreCase":"all","enum":["create","delete","expose","get","init","install","login","logout","ls","package","rollback","save","upgrade","uninstall"]},"chartType":{"description":"Chart Type","ignoreCase":"all","enum":["Name","FilePath"]},"chartName":{"type":"string","description":"Chart Name","ignoreCase":"key"},"chartPath":{"type":"string","description":"Chart Path","ignoreCase":"key"},"chartVersion":{"type":"string","description":"Version","ignoreCase":"key","aliases":["version"]},"releaseName":{"type":"string","description":"Release Name","ignoreCase":"key"},"overrideValues":{"type":"string","description":"Set Values","ignoreCase":"key"},"valueFile":{"type":"string","description":"Value File","ignoreCase":"key"},"destination":{"type":"string","description":"Destination","ignoreCase":"key"},"canaryImage":{"type":"boolean","description":"Use canary image version.","ignoreCase":"key","aliases":["canaryimage"]},"upgradeTiller":{"type":"boolean","description":"Upgrade Tiller","ignoreCase":"key","aliases":["upgradetiller"]},"updateDependency":{"type":"boolean","description":"Update Dependency","ignoreCase":"key","aliases":["updatedependency"]},"save":{"type":"boolean","description":"Save","ignoreCase":"key"},"install":{"type":"boolean","description":"Install if release not present.","ignoreCase":"key"},"recreate":{"type":"boolean","description":"Recreate Pods.","ignoreCase":"key"},"resetValues":{"type":"boolean","description":"Reset Values.","ignoreCase":"key"},"force":{"type":"boolean","description":"Force","ignoreCase":"key"},"waitForExecution":{"type":"boolean","description":"Wait","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"enableTls":{"type":"boolean","description":"Enable TLS","ignoreCase":"key"},"caCert":{"type":"string","description":"CA certificate","ignoreCase":"key"},"certificate":{"type":"string","description":"Certificate","ignoreCase":"key"},"privatekey":{"type":"string","description":"Key","ignoreCase":"key"},"tillerNamespace":{"type":"string","description":"Tiller namespace","ignoreCase":"key","aliases":["tillernamespace"]},"failOnStderr":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"},"publishPipelineMetadata":{"type":"boolean","description":"Publish pipeline metadata","ignoreCase":"key"},"chartNameForACR":{"type":"string","description":"Chart Name For Azure Container Registry","ignoreCase":"key"},"chartPathForACR":{"type":"string","description":"Chart Path for Azure Container Registry","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscriptionForACR","azureResourceGroupForACR","azureContainerRegistry"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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"}},"additionalProperties":false,"required":["certSecureFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Install Apple Certificate\n\nInstall an Apple certificate required to build on a macOS agent","ignoreCase":"value","pattern":"^InstallAppleCertificate@1$"},"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"}},"additionalProperties":false,"required":["certSecureFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Install Apple Certificate\n\nInstall an Apple certificate required to build on a macOS agent","ignoreCase":"value","pattern":"^InstallAppleCertificate@0$"},"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"}},"additionalProperties":false,"required":["certSecureFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"ESRP Code Signing\n\nMicrosoft Internal tool for Code Signing files using ESRP Service","ignoreCase":"value","pattern":"^EsrpCodeSigning@1$"},"inputs":{"description":"ESRP Code Signing inputs","properties":{"ConnectedServiceName":{"type":"string","description":"Connection Name","ignoreCase":"key"},"FolderPath":{"type":"string","description":"Root folder path to get input files for signing","ignoreCase":"key"},"signType":{"description":"Sign Categories","ignoreCase":"all","enum":["regularSigning","batchSigning"]},"Pattern":{"type":"string","description":"File search pattern to discover to be signed files inside RootFolder variable","ignoreCase":"key"},"UseMinimatch":{"type":"boolean","description":"Use Minimatch","ignoreCase":"key"},"batchSignPolicyFile":{"type":"string","description":"BatchSign Policy File Input","ignoreCase":"key"},"ciPolicyFile":{"type":"string","description":"CI Policy File Input","ignoreCase":"key"},"guardianToolTimeout":{"type":"string","description":"Max Guardian Tool Run Time (minutes)","ignoreCase":"key"},"signConfigType":{"description":"Signing Configurations","ignoreCase":"all","enum":["legacyCops","inlineSignParams"]},"CertificateId":{"type":"string","description":"Certificate Id","ignoreCase":"key"},"OpusName":{"type":"string","description":"Product Name","ignoreCase":"key"},"OpusInfo":{"type":"string","description":"Product info url","ignoreCase":"key"},"inlineOperation":{"type":"string","description":"Inline Signing Configurations","ignoreCase":"key"},"SessionTimeout":{"type":"string","description":"Max Session Time (minutes)","ignoreCase":"key"},"ServiceEndpointUrl":{"type":"string","description":"API Endpoint Url","ignoreCase":"key"},"MaxConcurrency":{"type":"string","description":"Max Concurrency","ignoreCase":"key"},"MaxRetryAttempts":{"type":"string","description":"Max Retry Attempts","ignoreCase":"key"},"CleanupTempStorage":{"type":"boolean","description":"Cleanup all temp blob storage","ignoreCase":"key"},"VerboseLogin":{"type":"boolean","description":"Verbose Logs","ignoreCase":"key"},"tlsVersion":{"description":"TLS Version","ignoreCase":"all","enum":["Tls","Tls11","Tls12"]}},"additionalProperties":false,"required":["ConnectedServiceName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Invoke Azure Function\n\nInvoke an Azure Function","ignoreCase":"value","pattern":"^AzureFunction@1$"},"inputs":{"description":"Invoke Azure Function inputs","properties":{"function":{"type":"string","description":"Azure function URL","ignoreCase":"key"},"key":{"type":"string","description":"Function key","ignoreCase":"key"},"method":{"description":"Method","ignoreCase":"all","enum":["OPTIONS","GET","HEAD","POST","PUT","DELETE","TRACE","PATCH"]},"headers":{"type":"string","description":"Headers","ignoreCase":"key"},"queryParameters":{"type":"string","description":"Query parameters","ignoreCase":"key"},"body":{"type":"string","description":"Body","ignoreCase":"key"},"waitForCompletion":{"description":"Completion event","ignoreCase":"all","enum":["true","false"]},"successCriteria":{"type":"string","description":"Success criteria","ignoreCase":"key"}},"additionalProperties":false,"required":["function","key"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Invoke Azure Function\n\nInvoke Azure function as a part of your process.","ignoreCase":"value","pattern":"^AzureFunction@0$"},"inputs":{"description":"Invoke Azure Function inputs","properties":{"function":{"type":"string","description":"Azure function url","ignoreCase":"key"},"key":{"type":"string","description":"Function key","ignoreCase":"key"},"method":{"description":"Method","ignoreCase":"all","enum":["OPTIONS","GET","HEAD","POST","PUT","DELETE","TRACE","PATCH"]},"headers":{"type":"string","description":"Headers","ignoreCase":"key"},"queryParameters":{"type":"string","description":"Query parameters","ignoreCase":"key"},"body":{"type":"string","description":"Body","ignoreCase":"key"},"waitForCompletion":{"description":"Complete based on","ignoreCase":"all","enum":["true","false"]},"successCriteria":{"type":"string","description":"Success criteria","ignoreCase":"key"}},"additionalProperties":false,"required":["function","key"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Nuget Security Analysis\n\nA task to scan for vulnerabilities in nuget files.","ignoreCase":"value","pattern":"^nuget-security-analysis@0$"},"inputs":{"description":"Nuget Security Analysis inputs","properties":{},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"DacPac Schema Compare\n\nProvides a report on database model changes since the last build","ignoreCase":"value","pattern":"^DacPacReport@1$"},"inputs":{"description":"DacPac Schema Compare inputs","properties":{"dropName":{"type":"string","description":"Drop Name","ignoreCase":"key"},"dacpacName":{"type":"string","description":"DacPac Name","ignoreCase":"key"},"targetDacPacPath":{"type":"string","description":"Compiled DacPac Path","ignoreCase":"key"},"extraArgs":{"type":"string","description":"Extra SQLPackage args","ignoreCase":"key"},"reverse":{"type":"boolean","description":"Reverse Comparison","ignoreCase":"key"},"userSqlPackagePath":{"type":"string","description":"SQL Package exe filepath","ignoreCase":"key"}},"additionalProperties":false,"required":["dacpacName","targetDacPacPath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Download GitHub Release\n\nDownloads a GitHub Release from a repository","ignoreCase":"value","pattern":"^DownloadGitHubRelease@0$"},"inputs":{"description":"Download GitHub Release inputs","properties":{"connection":{"type":"string","description":"GitHub Connection","ignoreCase":"key"},"userRepository":{"type":"string","description":"Repository","ignoreCase":"key"},"defaultVersionType":{"description":"Default version","ignoreCase":"all","enum":["latest","specificVersion","specificTag"]},"version":{"type":"string","description":"Release","ignoreCase":"key"},"itemPattern":{"type":"string","description":"Item Pattern","ignoreCase":"key"},"downloadPath":{"type":"string","description":"Destination directory","ignoreCase":"key"}},"additionalProperties":false,"required":["connection","userRepository"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"SSH\n\nRun shell commands or a script on a remote machine using SSH","ignoreCase":"value","pattern":"^SSH@0$"},"inputs":{"description":"SSH inputs","properties":{"sshEndpoint":{"type":"string","description":"SSH service connection","ignoreCase":"key"},"runOptions":{"description":"Run","ignoreCase":"all","enum":["commands","script","inline"]},"commands":{"type":"string","description":"Commands","ignoreCase":"key"},"scriptPath":{"type":"string","description":"Shell script path","ignoreCase":"key"},"inline":{"type":"string","description":"Inline Script","ignoreCase":"key"},"interpreterCommand":{"type":"string","description":"Interpreter command","ignoreCase":"key"},"args":{"type":"string","description":"Arguments","ignoreCase":"key"},"failOnStdErr":{"type":"boolean","description":"Fail on STDERR","ignoreCase":"key"},"interactiveSession":{"type":"boolean","description":"Enable interactive session","ignoreCase":"key"},"readyTimeout":{"type":"string","description":"SSH handshake timeout","ignoreCase":"key"}},"additionalProperties":false,"required":["sshEndpoint"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Publish Pipeline Artifacts\n\nPublish (upload) a file or directory as a named artifact for the current run","ignoreCase":"value","pattern":"^PublishPipelineArtifact@1$"},"inputs":{"description":"Publish Pipeline Artifacts inputs","properties":{"targetPath":{"type":"string","description":"File or directory path","ignoreCase":"key","aliases":["path"]},"artifact":{"type":"string","description":"Artifact name","ignoreCase":"key","aliases":["artifactName"]},"publishLocation":{"description":"Artifact publish location","ignoreCase":"all","enum":["pipeline","filepath"],"aliases":["artifactType"]},"fileSharePath":{"type":"string","description":"File share path","ignoreCase":"key"},"parallel":{"type":"boolean","description":"Parallel copy","ignoreCase":"key"},"parallelCount":{"type":"integer","description":"Parallel count","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Publish pipeline artifact\n\nPublish a local directory or file as a named artifact for the current pipeline","ignoreCase":"value","pattern":"^PublishPipelineArtifact@0$"},"inputs":{"description":"Publish pipeline artifact inputs","properties":{"artifactName":{"type":"string","description":"The name of this artifact","ignoreCase":"key"},"targetPath":{"type":"string","description":"Path to publish","ignoreCase":"key"}},"additionalProperties":false,"required":["targetPath"]}},"deprecationMessage":"PublishPipelineArtifact is deprecated - Publish a local directory or file as a named artifact for the current pipeline","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"SonarQube for MSBuild - Begin Analysis\n\n[DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis","ignoreCase":"value","pattern":"^SonarQubePreBuild@1$"},"inputs":{"description":"SonarQube for MSBuild - Begin Analysis inputs","properties":{"projectKey":{"type":"string","description":"Project Key","ignoreCase":"key"},"projectName":{"type":"string","description":"Project Name","ignoreCase":"key"},"projectVersion":{"type":"string","description":"Project Version","ignoreCase":"key"},"connectedServiceName":{"type":"string","description":"SonarQube Endpoint","ignoreCase":"key"},"dbUrl":{"type":"string","description":"Db Connection String","ignoreCase":"key"},"dbUsername":{"type":"string","description":"Db UserName","ignoreCase":"key"},"dbPassword":{"type":"string","description":"Db User Password","ignoreCase":"key"},"cmdLineArgs":{"type":"string","description":"Additional Settings","ignoreCase":"key"},"configFile":{"type":"string","description":"Settings File","ignoreCase":"key"},"includeFullReport":{"type":"boolean","description":"Include full analysis report in the build summary (SQ 5.3+)","ignoreCase":"key"},"breakBuild":{"type":"boolean","description":"Fail the build on quality gate failure (SQ 5.3+)","ignoreCase":"key"}},"additionalProperties":false,"required":["projectKey","projectName","connectedServiceName"]}},"deprecationMessage":"SonarQubePreBuild is deprecated - [DEPRECATED] Fetch the Quality Profile from SonarQube to configure the analysis","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Build VS Bootstrapper\n\nBuilds a VS Bootstrapper including the changes of the manifests from one or more components","ignoreCase":"value","pattern":"^MicroBuildBuildVSBootstrapper@2$"},"inputs":{"description":"MicroBuild Build VS Bootstrapper inputs","properties":{"channelName":{"type":"string","description":"VS Channel","ignoreCase":"key"},"vsMajorVersion":{"type":"string","description":"VS Major Version","ignoreCase":"key"},"manifests":{"type":"string","description":"Overlay Manifests","ignoreCase":"key"},"outputFolder":{"type":"string","description":"Bootstrapper Folder","ignoreCase":"key"},"buildBranch":{"type":"string","description":"VS Branch","ignoreCase":"key"},"buildNumber":{"type":"string","description":"VS Build Number","ignoreCase":"key"},"bootstrapperCoreVersion":{"type":"string","description":"Bootstrapper Core Version","ignoreCase":"key"},"bootstrapperCoreFeedSource":{"type":"string","description":"Bootstrapper NuGet Feed","ignoreCase":"key"},"bootstrapperCoreDependenciesFeedSource":{"type":"string","description":"Bootstrapper Dependencies NuGet Feed","ignoreCase":"key"},"nugetOrgPublicFeedSource":{"type":"string","description":"NuGet.org feed location","ignoreCase":"key"}},"additionalProperties":false,"required":["manifests","outputFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Build VS Bootstrapper\n\nBuilds a VS Bootstrapper including the changes of the manifests from one or more components","ignoreCase":"value","pattern":"^MicroBuildBuildVSBootstrapper@1$"},"inputs":{"description":"MicroBuild Build VS Bootstrapper inputs","properties":{"channelName":{"type":"string","description":"VS Channel","ignoreCase":"key"},"vsMajorVersion":{"type":"string","description":"VS Major Version","ignoreCase":"key"},"manifests":{"type":"string","description":"Overlay Manifests","ignoreCase":"key"},"outputFolder":{"type":"string","description":"Bootstrapper Folder","ignoreCase":"key"},"buildBranch":{"type":"string","description":"VS Branch","ignoreCase":"key"},"buildNumber":{"type":"string","description":"VS Build Number","ignoreCase":"key"},"bootstrapperCoreVersion":{"type":"string","description":"Bootstrapper Core Version","ignoreCase":"key"},"bootstrapperCoreFeedSource":{"type":"string","description":"Bootstrapper NuGet Feed","ignoreCase":"key"},"bootstrapperCoreDependenciesFeedSource":{"type":"string","description":"Bootstrapper Dependencies NuGet Feed","ignoreCase":"key"},"nugetOrgPublicFeedSource":{"type":"string","description":"NuGet.org feed location","ignoreCase":"key"}},"additionalProperties":false,"required":["manifests","outputFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Download artifacts from file share\n\nDownload artifacts from a file share, like \\\\share\\drop","ignoreCase":"value","pattern":"^DownloadFileshareArtifacts@1$"},"inputs":{"description":"Download artifacts from file share inputs","properties":{"filesharePath":{"type":"string","description":"File share path","ignoreCase":"key"},"artifactName":{"type":"string","description":"Artifact name","ignoreCase":"key"},"itemPattern":{"type":"string","description":"Matching pattern","ignoreCase":"key"},"downloadPath":{"type":"string","description":"Download path","ignoreCase":"key"},"parallelizationLimit":{"type":"string","description":"Parallelization limit","ignoreCase":"key"}},"additionalProperties":false,"required":["filesharePath","artifactName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Kubectl\n\nDeploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands","ignoreCase":"value","pattern":"^Kubernetes@1$"},"inputs":{"description":"Kubectl inputs","properties":{"connectionType":{"description":"Service connection type","ignoreCase":"all","enum":["Azure Resource Manager","Kubernetes Service Connection","None"]},"kubernetesServiceEndpoint":{"type":"string","description":"Kubernetes service connection","ignoreCase":"key"},"azureSubscriptionEndpoint":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"azureResourceGroup":{"type":"string","description":"Resource group","ignoreCase":"key"},"kubernetesCluster":{"type":"string","description":"Kubernetes cluster","ignoreCase":"key"},"useClusterAdmin":{"type":"boolean","description":"Use cluster admin credentials","ignoreCase":"key"},"namespace":{"type":"string","description":"Namespace","ignoreCase":"key"},"command":{"description":"Command","ignoreCase":"all","enum":["apply","create","delete","exec","expose","get","login","logout","logs","run","set","top"]},"useConfigurationFile":{"type":"boolean","description":"Use configuration","ignoreCase":"key"},"configurationType":{"description":"Configuration type","ignoreCase":"all","enum":["configuration","inline"]},"configuration":{"type":"string","description":"File path","ignoreCase":"key"},"inline":{"type":"string","description":"Inline configuration","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"secretType":{"description":"Type of secret","ignoreCase":"all","enum":["dockerRegistry","generic"]},"secretArguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"containerRegistryType":{"description":"Container registry type","ignoreCase":"all","enum":["Azure Container Registry","Container Registry"]},"dockerRegistryEndpoint":{"type":"string","description":"Docker registry service connection","ignoreCase":"key"},"azureSubscriptionEndpointForSecrets":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"azureContainerRegistry":{"type":"string","description":"Azure container registry","ignoreCase":"key"},"secretName":{"type":"string","description":"Secret name","ignoreCase":"key"},"forceUpdate":{"type":"boolean","description":"Force update secret","ignoreCase":"key"},"configMapName":{"type":"string","description":"ConfigMap name","ignoreCase":"key"},"forceUpdateConfigMap":{"type":"boolean","description":"Force update configmap","ignoreCase":"key"},"useConfigMapFile":{"type":"boolean","description":"Use file","ignoreCase":"key"},"configMapFile":{"type":"string","description":"ConfigMap file","ignoreCase":"key"},"configMapArguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"versionOrLocation":{"description":"Kubectl","ignoreCase":"all","enum":["version","location"]},"versionSpec":{"type":"string","description":"Version spec","ignoreCase":"key"},"checkLatest":{"type":"boolean","description":"Check for latest version","ignoreCase":"key"},"specifyLocation":{"type":"string","description":"Path to kubectl","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key","aliases":["cwd"]},"outputFormat":{"description":"Output format","ignoreCase":"all","enum":["json","yaml","none"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Kubectl\n\nDeploy, configure, update a Kubernetes cluster in Azure Container Service by running kubectl commands","ignoreCase":"value","pattern":"^Kubernetes@0$"},"inputs":{"description":"Kubectl inputs","properties":{"kubernetesServiceConnection":{"type":"string","description":"Kubernetes service connection","ignoreCase":"key","aliases":["kubernetesServiceEndpoint"]},"namespace":{"type":"string","description":"Namespace","ignoreCase":"key"},"command":{"description":"Command","ignoreCase":"all","enum":["apply","create","delete","exec","expose","get","logs","run","set","top"]},"useConfigurationFile":{"type":"boolean","description":"Use Configuration files","ignoreCase":"key"},"configuration":{"type":"string","description":"Configuration file","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"secretType":{"description":"Type of secret","ignoreCase":"all","enum":["dockerRegistry","generic"]},"secretArguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"containerRegistryType":{"description":"Container Registry type","ignoreCase":"all","enum":["Azure Container Registry","Container Registry"]},"dockerRegistryConnection":{"type":"string","description":"Docker Registry service connection","ignoreCase":"key","aliases":["dockerRegistryEndpoint"]},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["azureSubscriptionEndpoint"]},"azureContainerRegistry":{"type":"string","description":"Azure Container Registry","ignoreCase":"key"},"secretName":{"type":"string","description":"Secret name","ignoreCase":"key"},"forceUpdate":{"type":"boolean","description":"Force update secret","ignoreCase":"key"},"configMapName":{"type":"string","description":"ConfigMap name","ignoreCase":"key"},"forceUpdateConfigMap":{"type":"boolean","description":"Force update configmap","ignoreCase":"key"},"useConfigMapFile":{"type":"boolean","description":"Use file","ignoreCase":"key"},"configMapFile":{"type":"string","description":"ConfigMap file","ignoreCase":"key"},"configMapArguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"versionOrLocation":{"description":"Kubectl","ignoreCase":"all","enum":["version","location"]},"versionSpec":{"type":"string","description":"Version spec","ignoreCase":"key"},"checkLatest":{"type":"boolean","description":"Check for latest version","ignoreCase":"key"},"specifyLocation":{"type":"string","description":"Path to Kubectl","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key","aliases":["cwd"]},"outputFormat":{"description":"Output format","ignoreCase":"all","enum":["json","yaml"]},"kubectlOutput":{"type":"string","description":"Output variable name","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure IoT Edge\n\nBuild and deploy an Azure IoT Edge image","ignoreCase":"value","pattern":"^AzureIoTEdge@2$"},"inputs":{"description":"Azure IoT Edge inputs","properties":{"action":{"description":"Action","ignoreCase":"all","enum":["Build module images","Push module images","Generate deployment manifest","Deploy to IoT Edge devices"]},"deploymentFilePath":{"type":"string","description":"Deployment file","ignoreCase":"key"},"azureSubscription":{"type":"string","description":"Azure subscription contains IoT Hub","ignoreCase":"key","aliases":["connectedServiceNameARM"]},"iothubname":{"type":"string","description":"IoT Hub name","ignoreCase":"key"},"deploymentid":{"type":"string","description":"IoT Edge deployment ID","ignoreCase":"key"},"priority":{"type":"string","description":"IoT Edge deployment priority","ignoreCase":"key"},"deviceOption":{"description":"Choose single/multiple device","ignoreCase":"all","enum":["Single Device","Multiple Devices"]},"deviceId":{"type":"string","description":"IoT Edge device ID","ignoreCase":"key"},"targetcondition":{"type":"string","description":"IoT Edge device target condition","ignoreCase":"key"},"containerregistrytype":{"description":"Container registry type","ignoreCase":"all","enum":["Azure Container Registry","Generic Container Registry"]},"dockerRegistryConnection":{"type":"string","description":"Docker Registry Connection","ignoreCase":"key","aliases":["dockerRegistryEndpoint"]},"azureSubscriptionEndpoint":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"azureContainerRegistry":{"type":"string","description":"Azure Container Registry","ignoreCase":"key"},"templateFilePath":{"type":"string","description":".template.json file","ignoreCase":"key"},"defaultPlatform":{"description":"Default platform","ignoreCase":"all","enum":["amd64","windows-amd64","arm32v7","arm64v8"]},"fillRegistryCredential":{"description":"Add registry credential to deployment manifest","ignoreCase":"all","enum":["true","false"]},"deploymentManifestOutputPath":{"type":"string","description":"Output path","ignoreCase":"key"},"validateGeneratedDeploymentManifest":{"description":"Validate the schema of generated deployment manifest","ignoreCase":"all","enum":["true","false"]},"bypassModules":{"type":"string","description":"Bypass module(s)","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Service Fabric Compose deploy\n\nDeploy a Docker Compose application to an Azure Service Fabric cluster","ignoreCase":"value","pattern":"^ServiceFabricComposeDeploy@0$"},"inputs":{"description":"Service Fabric Compose deploy inputs","properties":{"clusterConnection":{"type":"string","description":"Cluster Service Connection","ignoreCase":"key","aliases":["serviceConnectionName"]},"composeFilePath":{"type":"string","description":"Compose File Path","ignoreCase":"key"},"applicationName":{"type":"string","description":"Application Name","ignoreCase":"key"},"registryCredentials":{"description":"Registry Credentials Source","ignoreCase":"all","enum":["AzureResourceManagerEndpoint","ContainerRegistryEndpoint","UsernamePassword","None"]},"dockerRegistryConnection":{"type":"string","description":"Docker Registry Service Connection","ignoreCase":"key","aliases":["dockerRegistryEndpointName"]},"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["azureSubscriptionEndpoint"]},"registryUserName":{"type":"string","description":"Registry User Name","ignoreCase":"key"},"registryPassword":{"type":"string","description":"Registry Password","ignoreCase":"key"},"passwordEncrypted":{"type":"boolean","description":"Password Encrypted","ignoreCase":"key"},"upgrade":{"type":"boolean","description":"Upgrade","ignoreCase":"key"},"deployTimeoutSec":{"type":"string","description":"Deploy Timeout (s)","ignoreCase":"key"},"removeTimeoutSec":{"type":"string","description":"Remove Timeout (s)","ignoreCase":"key"},"getStatusTimeoutSec":{"type":"string","description":"Get Status Timeout (s)","ignoreCase":"key"}},"additionalProperties":false,"required":["clusterConnection"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Android signing\n\nSign and align Android APK files","ignoreCase":"value","pattern":"^AndroidSigning@2$"},"inputs":{"description":"Android signing inputs","properties":{"apkFiles":{"type":"string","description":"APK files","ignoreCase":"key","aliases":["files"]},"jarsign":{"type":"boolean","description":"Sign the APK","ignoreCase":"key"},"jarsignerKeystoreFile":{"type":"string","description":"Keystore file","ignoreCase":"key","aliases":["keystoreFile"]},"jarsignerKeystorePassword":{"type":"string","description":"Keystore password","ignoreCase":"key","aliases":["keystorePass"]},"jarsignerKeystoreAlias":{"type":"string","description":"Alias","ignoreCase":"key","aliases":["keystoreAlias"]},"jarsignerKeyPassword":{"type":"string","description":"Key password","ignoreCase":"key","aliases":["keyPass"]},"jarsignerArguments":{"type":"string","description":"Jarsigner arguments","ignoreCase":"key"},"zipalign":{"type":"boolean","description":"Zipalign","ignoreCase":"key"},"zipalignFile":{"type":"string","description":"Zipalign location","ignoreCase":"key","aliases":["zipalignLocation"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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":"Android signing\n\nSign and align Android APK files","ignoreCase":"value","pattern":"^AndroidSigning@3$"},"inputs":{"description":"Android signing inputs","properties":{"apkFiles":{"type":"string","description":"APK files","ignoreCase":"key","aliases":["files"]},"apksign":{"type":"boolean","description":"Sign the APK","ignoreCase":"key"},"apksignerKeystoreFile":{"type":"string","description":"Keystore file","ignoreCase":"key","aliases":["keystoreFile"]},"apksignerKeystorePassword":{"type":"string","description":"Keystore password","ignoreCase":"key","aliases":["keystorePass"]},"apksignerKeystoreAlias":{"type":"string","description":"Alias","ignoreCase":"key","aliases":["keystoreAlias"]},"apksignerKeyPassword":{"type":"string","description":"Key password","ignoreCase":"key","aliases":["keyPass"]},"apksignerVersion":{"type":"string","description":"apksigner version","ignoreCase":"key"},"apksignerArguments":{"type":"string","description":"apksigner arguments","ignoreCase":"key"},"apksignerFile":{"type":"string","description":"apksigner location","ignoreCase":"key","aliases":["apksignerLocation"]},"zipalign":{"type":"boolean","description":"Zipalign","ignoreCase":"key"},"zipalignVersion":{"type":"string","description":"Zipalign version","ignoreCase":"key"},"zipalignFile":{"type":"string","description":"Zipalign location","ignoreCase":"key","aliases":["zipalignLocation"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"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":{"description":"Download Pipeline Artifacts\n\nDownload build and pipeline artifacts","ignoreCase":"value","pattern":"^DownloadPipelineArtifact@2$"},"inputs":{"description":"Download Pipeline Artifacts inputs","properties":{"buildType":{"description":"Download artifacts produced by","ignoreCase":"all","enum":["current","specific"],"aliases":["source"]},"project":{"type":"string","description":"Project","ignoreCase":"key"},"definition":{"type":"string","description":"Build pipeline","ignoreCase":"key","aliases":["pipeline"]},"specificBuildWithTriggering":{"type":"boolean","description":"When appropriate, download artifacts from the triggering build.","ignoreCase":"key","aliases":["preferTriggeringPipeline"]},"buildVersionToDownload":{"description":"Build version to download","ignoreCase":"all","enum":["latest","latestFromBranch","specific"],"aliases":["runVersion"]},"branchName":{"type":"string","description":"Branch name","ignoreCase":"key","aliases":["runBranch"]},"pipelineId":{"type":"string","description":"Build","ignoreCase":"key","aliases":["runId","buildId"]},"tags":{"type":"string","description":"Build Tags","ignoreCase":"key"},"allowPartiallySucceededBuilds":{"type":"boolean","description":"Download artifacts from partially succeeded builds.","ignoreCase":"key"},"allowFailedBuilds":{"type":"boolean","description":"Download artifacts from failed builds.","ignoreCase":"key"},"artifactName":{"type":"string","description":"Artifact name","ignoreCase":"key","aliases":["artifact"]},"itemPattern":{"type":"string","description":"Matching patterns","ignoreCase":"key","aliases":["patterns"]},"targetPath":{"type":"string","description":"Destination directory","ignoreCase":"key","aliases":["path","downloadPath"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Use Python version\n\nUse the specified version of Python from the tool cache, optionally adding it to the PATH","ignoreCase":"value","pattern":"^UsePythonVersion@0$"},"inputs":{"description":"Use Python version inputs","properties":{"versionSpec":{"type":"string","description":"Version spec","ignoreCase":"key"},"addToPath":{"type":"boolean","description":"Add to PATH","ignoreCase":"key"},"architecture":{"description":"Architecture","ignoreCase":"all","enum":["x86","x64"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Accessibility Insights Azure DevOps Task\n\nScan accessibility issues in an Azure DevOps pipeline","ignoreCase":"value","pattern":"^accessibility-insights@1$"},"inputs":{"description":"Accessibility Insights Azure DevOps Task inputs","properties":{"repoServiceConnectionName":{"type":"string","description":"Azure Repos Connection","ignoreCase":"key"},"outputDir":{"type":"string","description":"Output Directory","ignoreCase":"key"},"siteDir":{"type":"string","description":"Site Directory","ignoreCase":"key"},"scanUrlRelativePath":{"type":"string","description":"Scan URL Relative Path","ignoreCase":"key"},"chromePath":{"type":"string","description":"Chrome Path","ignoreCase":"key"},"url":{"type":"string","description":"Website URL","ignoreCase":"key"},"maxUrls":{"type":"integer","description":"Maximum number of URLs","ignoreCase":"key"},"discoveryPatterns":{"type":"string","description":"Discovery Patterns","ignoreCase":"key"},"inputFile":{"type":"string","description":"Input File","ignoreCase":"key"},"inputUrls":{"type":"string","description":"Input URLs","ignoreCase":"key"},"localhostPort":{"type":"integer","description":"Localhost Port","ignoreCase":"key"},"scanTimeout":{"type":"integer","description":"Scan Timeout","ignoreCase":"key"},"failOnAccessibilityError":{"type":"boolean","description":"Fail on Accessibility Error","ignoreCase":"key"},"baselineFile":{"type":"string","description":"Baseline File Path","ignoreCase":"key"},"singleWorker":{"type":"boolean","description":"Uses a single crawler worker.","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Upload Azure DevOps Drop\n\nUploads a Folder to the Azure DevOps Drop Service","ignoreCase":"value","pattern":"^MicroBuildUploadVstsDropFolder@2$"},"inputs":{"description":"MicroBuild Upload Azure DevOps Drop inputs","properties":{"DropFolder":{"type":"string","description":"Drop Folder","ignoreCase":"key"},"DropName":{"type":"string","description":"Drop Name","ignoreCase":"key"},"AccessToken":{"type":"string","description":"Drop Service Access Token","ignoreCase":"key"},"DropServiceUri":{"type":"string","description":"Drop Service Uri","ignoreCase":"key"},"VSDropServiceUri":{"type":"string","description":"VSDrop Service Uri","ignoreCase":"key"}},"additionalProperties":false,"required":["DropFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Upload Azure DevOps Drop\n\nUploads a Folder to the Azure DevOps Drop Service","ignoreCase":"value","pattern":"^MicroBuildUploadVstsDropFolder@1$"},"inputs":{"description":"MicroBuild Upload Azure DevOps Drop inputs","properties":{"DropFolder":{"type":"string","description":"Drop Folder","ignoreCase":"key"},"DropName":{"type":"string","description":"Drop Name","ignoreCase":"key"},"AccessToken":{"type":"string","description":"Drop Service Access Token","ignoreCase":"key"},"DropServiceUri":{"type":"string","description":"Drop Service Uri","ignoreCase":"key"},"VSDropServiceUri":{"type":"string","description":"VSDrop Service Uri","ignoreCase":"key"}},"additionalProperties":false,"required":["DropFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Service Fabric PowerShell\n\nRun a PowerShell script in the context of an Azure Service Fabric cluster connection","ignoreCase":"value","pattern":"^ServiceFabricPowerShell@1$"},"inputs":{"description":"Service Fabric PowerShell inputs","properties":{"clusterConnection":{"type":"string","description":"Cluster Service Connection","ignoreCase":"key","aliases":["serviceConnectionName"]},"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":["clusterConnection"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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@2$"},"inputs":{"description":"Visual Studio Test inputs","properties":{"testSelector":{"description":"Select tests using","ignoreCase":"all","enum":["testAssemblies","testPlan","testRun"]},"testAssemblyVer2":{"type":"string","description":"Test files","ignoreCase":"key"},"testPlan":{"type":"string","description":"Test plan","ignoreCase":"key"},"testSuite":{"type":"string","description":"Test suite","ignoreCase":"key"},"testConfiguration":{"type":"string","description":"Test configuration","ignoreCase":"key"},"tcmTestRun":{"type":"string","description":"Test Run","ignoreCase":"key"},"searchFolder":{"type":"string","description":"Search folder","ignoreCase":"key"},"resultsFolder":{"type":"string","description":"Test results folder","ignoreCase":"key"},"testFiltercriteria":{"type":"string","description":"Test filter criteria","ignoreCase":"key"},"runOnlyImpactedTests":{"type":"boolean","description":"Run only impacted tests","ignoreCase":"key"},"runAllTestsAfterXBuilds":{"type":"string","description":"Number of builds after which all tests should be run","ignoreCase":"key"},"uiTests":{"type":"boolean","description":"Test mix contains UI tests","ignoreCase":"key"},"vstestLocationMethod":{"description":"Select test platform using","ignoreCase":"all","enum":["version","location"]},"vsTestVersion":{"description":"Test platform version","ignoreCase":"all","enum":["latest","16.0","15.0","14.0","toolsInstaller"]},"vstestLocation":{"type":"string","description":"Path to vstest.console.exe","ignoreCase":"key"},"runSettingsFile":{"type":"string","description":"Settings file","ignoreCase":"key"},"overrideTestrunParameters":{"type":"string","description":"Override test run parameters","ignoreCase":"key"},"pathtoCustomTestAdapters":{"type":"string","description":"Path to custom test adapters","ignoreCase":"key"},"runInParallel":{"type":"boolean","description":"Run tests in parallel on multi-core machines","ignoreCase":"key"},"runTestsInIsolation":{"type":"boolean","description":"Run tests in isolation","ignoreCase":"key"},"codeCoverageEnabled":{"type":"boolean","description":"Code coverage enabled","ignoreCase":"key"},"otherConsoleOptions":{"type":"string","description":"Other console options","ignoreCase":"key"},"distributionBatchType":{"description":"Batch tests","ignoreCase":"all","enum":["basedOnTestCases","basedOnExecutionTime","basedOnAssembly"]},"batchingBasedOnAgentsOption":{"description":"Batch options","ignoreCase":"all","enum":["autoBatchSize","customBatchSize"]},"customBatchSizeValue":{"type":"string","description":"Number of tests per batch","ignoreCase":"key"},"batchingBasedOnExecutionTimeOption":{"description":"Batch options","ignoreCase":"all","enum":["autoBatchSize","customTimeBatchSize"]},"customRunTimePerBatchValue":{"type":"string","description":"Running time (sec) per batch","ignoreCase":"key"},"dontDistribute":{"type":"boolean","description":"Replicate tests instead of distributing when multiple agents are used in the job","ignoreCase":"key"},"testRunTitle":{"type":"string","description":"Test run title","ignoreCase":"key"},"platform":{"type":"string","description":"Build platform","ignoreCase":"key"},"configuration":{"type":"string","description":"Build configuration","ignoreCase":"key"},"publishRunAttachments":{"type":"boolean","description":"Upload test attachments","ignoreCase":"key"},"failOnMinTestsNotRun":{"type":"boolean","description":"Fail the task if a minimum number of tests are not run.","ignoreCase":"key"},"minimumExpectedTests":{"type":"string","description":"Minimum # of tests","ignoreCase":"key"},"diagnosticsEnabled":{"type":"boolean","description":"Collect advanced diagnostics in case of catastrophic failures","ignoreCase":"key"},"collectDumpOn":{"description":"Collect process dump and attach to test run report","ignoreCase":"all","enum":["onAbortOnly","always","never"]},"rerunFailedTests":{"type":"boolean","description":"Rerun failed tests","ignoreCase":"key"},"rerunType":{"description":"Do not rerun if test failures exceed specified threshold","ignoreCase":"all","enum":["basedOnTestFailurePercentage","basedOnTestFailureCount"]},"rerunFailedThreshold":{"type":"string","description":"% failure","ignoreCase":"key"},"rerunFailedTestCasesMaxLimit":{"type":"string","description":"# of failed tests","ignoreCase":"key"},"rerunMaxAttempts":{"type":"string","description":"Maximum # of attempts","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Manual validation\n\n[PREVIEW] Pause a pipeline run to wait for manual interaction. Works only with YAML pipelines.","ignoreCase":"value","pattern":"^ManualValidation@0$"},"inputs":{"description":"Manual validation inputs","properties":{"notifyUsers":{"type":"string","description":"Notify users","ignoreCase":"key"},"instructions":{"type":"string","description":"Instructions","ignoreCase":"key"},"onTimeout":{"description":"On timeout","ignoreCase":"all","enum":["reject","resume"]}},"additionalProperties":false,"required":["notifyUsers"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Promote Nuget Packages\n\nPromote nuget packages to a view in VS and VS-CoreXTFeeds","ignoreCase":"value","pattern":"^MicroBuildPromoteNugetPackages@2$"},"inputs":{"description":"MicroBuild Promote Nuget Packages inputs","properties":{"AccessToken":{"type":"string","description":"Access Token to Modify the Feed","ignoreCase":"key"},"PackageConfigFiles":{"type":"string","description":"Full Paths of Packages Config Files","ignoreCase":"key"},"SolutionFiles":{"type":"string","description":"Full Path of Solution Files Containing Package References","ignoreCase":"key"},"View":{"type":"string","description":"View Name","ignoreCase":"key"}},"additionalProperties":false,"required":["View"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Ant\n\nBuild with Apache Ant","ignoreCase":"value","pattern":"^Ant@1$"},"inputs":{"description":"Ant inputs","properties":{"buildFile":{"type":"string","description":"Ant build file","ignoreCase":"key","aliases":["antBuildFile"]},"options":{"type":"string","description":"Options","ignoreCase":"key"},"targets":{"type":"string","description":"Target(s)","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"},"codeCoverageToolOptions":{"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"]},"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"]},"antHomeDirectory":{"type":"string","description":"Set ANT_HOME path","ignoreCase":"key","aliases":["antHomeUserInputPath"]},"javaHomeOption":{"description":"Set JAVA_HOME by","ignoreCase":"all","enum":["JDKVersion","Path"],"aliases":["javaHomeSelection"]},"jdkVersionOption":{"description":"JDK version","ignoreCase":"all","enum":["default","1.11","1.10","1.9","1.8","1.7","1.6"],"aliases":["jdkVersion"]},"jdkUserInputDirectory":{"type":"string","description":"JDK path","ignoreCase":"key","aliases":["jdkUserInputPath"]},"jdkArchitectureOption":{"description":"JDK architecture","ignoreCase":"all","enum":["x86","x64"],"aliases":["jdkArchitecture"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Visual Studio test agent deployment\n\nDeprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests","ignoreCase":"value","pattern":"^DeployVisualStudioTestAgent@2$"},"inputs":{"description":"Visual Studio test agent deployment inputs","properties":{"testMachines":{"type":"string","description":"Machines","ignoreCase":"key"},"adminUserName":{"type":"string","description":"Admin login","ignoreCase":"key"},"adminPassword":{"type":"string","description":"Admin password","ignoreCase":"key"},"winRmProtocol":{"description":"Protocol","ignoreCase":"all","enum":["Http","Https"]},"testCertificate":{"type":"boolean","description":"Test Certificate","ignoreCase":"key"},"machineUserName":{"type":"string","description":"Username","ignoreCase":"key"},"machinePassword":{"type":"string","description":"Password","ignoreCase":"key"},"runAsProcess":{"type":"boolean","description":"Run UI tests","ignoreCase":"key"},"isDataCollectionOnly":{"type":"boolean","description":"Enable data collection only","ignoreCase":"key"},"testPlatform":{"description":"Test agent version","ignoreCase":"all","enum":["15.0","14.0"]},"agentLocation":{"type":"string","description":"Test agent location","ignoreCase":"key"},"updateTestAgent":{"type":"boolean","description":"Update test agent","ignoreCase":"key"}},"additionalProperties":false,"required":["testMachines","adminUserName","adminPassword","machineUserName","machinePassword"]}},"deprecationMessage":"DeployVisualStudioTestAgent is deprecated - Deprecated: Instead, use the 'Visual Studio Test' task to run unit and functional tests","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Visual Studio Test Agent Deployment\n\nDeploy and configure Test Agent to run tests on a set of machines","ignoreCase":"value","pattern":"^DeployVisualStudioTestAgent@1$"},"inputs":{"description":"Visual Studio Test Agent Deployment inputs","properties":{"testMachineGroup":{"type":"string","description":"Machines","ignoreCase":"key"},"adminUserName":{"type":"string","description":"Admin Login","ignoreCase":"key"},"adminPassword":{"type":"string","description":"Admin Password","ignoreCase":"key"},"winRmProtocol":{"description":"Protocol","ignoreCase":"all","enum":["Http","Https"]},"testCertificate":{"type":"boolean","description":"Test Certificate","ignoreCase":"key"},"resourceFilteringMethod":{"description":"Select Machines By","ignoreCase":"all","enum":["machineNames","tags"]},"testMachines":{"type":"string","description":"Filter Criteria","ignoreCase":"key"},"machineUserName":{"type":"string","description":"Username","ignoreCase":"key"},"machinePassword":{"type":"string","description":"Password","ignoreCase":"key"},"runAsProcess":{"type":"boolean","description":"Interactive Process","ignoreCase":"key"},"agentLocation":{"type":"string","description":"Test Agent Location","ignoreCase":"key"},"updateTestAgent":{"type":"boolean","description":"Update Test Agent","ignoreCase":"key"},"isDataCollectionOnly":{"type":"boolean","description":"Enable Data Collection Only","ignoreCase":"key"}},"additionalProperties":false,"required":["testMachineGroup","machineUserName","machinePassword"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Conda environment\n\nThis task is deprecated. Use `conda` directly in script to work with Anaconda environments.","ignoreCase":"value","pattern":"^CondaEnvironment@1$"},"inputs":{"description":"Conda environment inputs","properties":{"createCustomEnvironment":{"type":"boolean","description":"Create a custom environment","ignoreCase":"key"},"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"},"installOptions":{"type":"string","description":"Other options for `conda install`","ignoreCase":"key"},"createOptions":{"type":"string","description":"Other options for `conda create`","ignoreCase":"key"},"cleanEnvironment":{"type":"boolean","description":"Clean the environment","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"deprecationMessage":"CondaEnvironment is deprecated - This task is deprecated. Use `conda` directly in script to work with Anaconda environments.","doNotSuggest":true,"firstProperty":["task"],"required":["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":{"description":"Batch script\n\nRun a Windows command or batch script and optionally allow it to change the environment","ignoreCase":"value","pattern":"^BatchScript@1$"},"inputs":{"description":"Batch script inputs","properties":{"filename":{"type":"string","description":"Path","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"modifyEnvironment":{"type":"boolean","description":"Modify Environment","ignoreCase":"key"},"workingFolder":{"type":"string","description":"Working folder","ignoreCase":"key"},"failOnStandardError":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"}},"additionalProperties":false,"required":["filename"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Download Github Npm Package\n\nInstall npm packages from GitHub.","ignoreCase":"value","pattern":"^DownloadGithubNpmPackage@1$"},"inputs":{"description":"Download Github Npm Package inputs","properties":{"packageName":{"type":"string","description":"Package Name","ignoreCase":"key"},"version":{"type":"string","description":"Package Version","ignoreCase":"key"},"externalRegistryCredentials":{"type":"string","description":"Credentials for registry from GitHub","ignoreCase":"key","aliases":["externalEndpoints"]},"installDirectory":{"type":"string","description":"Destination directory","ignoreCase":"key","aliases":["packagesDirectory"]}},"additionalProperties":false,"required":["packageName","version","externalRegistryCredentials"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Visual Studio build\n\nBuild with MSBuild and set the Visual Studio version property","ignoreCase":"value","pattern":"^VSBuild@1$"},"inputs":{"description":"Visual Studio build inputs","properties":{"solution":{"type":"string","description":"Solution","ignoreCase":"key"},"vsVersion":{"description":"Visual Studio Version","ignoreCase":"all","enum":["latest","17.0","16.0","15.0","14.0","12.0","11.0"]},"msbuildArgs":{"type":"string","description":"MSBuild Arguments","ignoreCase":"key"},"platform":{"type":"string","description":"Platform","ignoreCase":"key"},"configuration":{"type":"string","description":"Configuration","ignoreCase":"key"},"clean":{"type":"boolean","description":"Clean","ignoreCase":"key"},"maximumCpuCount":{"type":"boolean","description":"Build in Parallel","ignoreCase":"key"},"restoreNugetPackages":{"type":"boolean","description":"Restore NuGet Packages","ignoreCase":"key"},"msbuildArchitecture":{"description":"MSBuild Architecture","ignoreCase":"all","enum":["x86","x64"]},"logProjectEvents":{"type":"boolean","description":"Record Project Details","ignoreCase":"key"},"createLogFile":{"type":"boolean","description":"Create Log File","ignoreCase":"key"},"logFileVerbosity":{"description":"Log File Verbosity","ignoreCase":"all","enum":["quiet","minimal","normal","detailed","diagnostic"]},"enableDefaultLogger":{"type":"boolean","description":"Enable Default Logger","ignoreCase":"key"},"customVersion":{"type":"string","description":"Custom Version","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure Key Vault\n\nDownload Azure Key Vault secrets","ignoreCase":"value","pattern":"^AzureKeyVault@1$"},"inputs":{"description":"Azure Key Vault inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"KeyVaultName":{"type":"string","description":"Key vault","ignoreCase":"key"},"SecretsFilter":{"description":"Secrets filter","ignoreCase":"all","enum":["EditableOptions"]},"RunAsPreJob":{"description":"Make secrets available to whole job","ignoreCase":"all","enum":["EditableOptions"]}},"additionalProperties":false,"required":["azureSubscription","KeyVaultName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure Key Vault\n\nDownload Azure Key Vault secrets","ignoreCase":"value","pattern":"^AzureKeyVault@2$"},"inputs":{"description":"Azure Key Vault inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"KeyVaultName":{"type":"string","description":"Key vault","ignoreCase":"key"},"SecretsFilter":{"description":"Secrets filter","ignoreCase":"all","enum":["EditableOptions"]},"RunAsPreJob":{"description":"Make secrets available to whole job","ignoreCase":"all","enum":["EditableOptions"]}},"additionalProperties":false,"required":["azureSubscription","KeyVaultName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"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","ignoreCase":"value","pattern":"^DotNetCoreInstaller@1$"},"inputs":{"description":".NET Core sdk/runtime installer inputs","properties":{"packageType":{"description":"Package to install","ignoreCase":"all","enum":["runtime","sdk"]},"version":{"type":"string","description":"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,"required":[]}},"deprecationMessage":"DotNetCoreInstaller is deprecated - Acquire a specific version of the .NET Core SDK from the internet or local cache and add it to the PATH","doNotSuggest":true,"firstProperty":["task"],"required":["task"]},{"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.","ignoreCase":"value","pattern":"^UseDotNet@2$"},"inputs":{"description":"Use .NET Core inputs","properties":{"packageType":{"description":"Package to install","ignoreCase":"all","enum":["runtime","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,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"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","ignoreCase":"value","pattern":"^DotNetCoreInstaller@0$"},"inputs":{"description":".NET Core SDK/runtime installer inputs","properties":{"packageType":{"description":"Package to install","ignoreCase":"all","enum":["runtime","sdk"]},"version":{"type":"string","description":"Version","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure App Service manage\n\nStart, stop, restart, slot swap, slot delete, install site extensions or enable continuous monitoring for an Azure App Service","ignoreCase":"value","pattern":"^AzureAppServiceManage@0$"},"inputs":{"description":"Azure App Service manage inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"Action":{"description":"Action","ignoreCase":"all","enum":["Swap Slots","Start Azure App Service","Stop Azure App Service","Restart Azure App Service","Start Swap With Preview","Complete Swap","Cancel Swap","Delete Slot","Install Extensions","Enable Continuous Monitoring","Start all continuous webjobs","Stop all continuous webjobs"]},"WebAppName":{"type":"string","description":"App Service name","ignoreCase":"key"},"SpecifySlotOrASE":{"type":"boolean","description":"Specify Slot or App Service Environment","ignoreCase":"key","aliases":["SpecifySlot"]},"ResourceGroupName":{"type":"string","description":"Resource group","ignoreCase":"key"},"SourceSlot":{"type":"string","description":"Source Slot","ignoreCase":"key"},"SwapWithProduction":{"type":"boolean","description":"Swap with Production","ignoreCase":"key"},"TargetSlot":{"type":"string","description":"Target Slot","ignoreCase":"key"},"PreserveVnet":{"type":"boolean","description":"Preserve Vnet","ignoreCase":"key"},"Slot":{"type":"string","description":"Slot","ignoreCase":"key"},"ExtensionsList":{"type":"string","description":"Install Extensions","ignoreCase":"key"},"OutputVariable":{"type":"string","description":"Output variable","ignoreCase":"key"},"AppInsightsResourceGroupName":{"type":"string","description":"Resource Group name for Application Insights","ignoreCase":"key"},"ApplicationInsightsResourceName":{"type":"string","description":"Application Insights resource name","ignoreCase":"key"},"ApplicationInsightsWebTestName":{"type":"string","description":"Application Insights web test name","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","WebAppName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Install Azure Func Core Tools\n\nInstall Azure Func Core Tools","ignoreCase":"value","pattern":"^FuncToolsInstaller@0$"},"inputs":{"description":"Install Azure Func Core Tools inputs","properties":{"version":{"type":"string","description":"Version","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"File transform\n\nReplace tokens with variable values in XML or JSON configuration files","ignoreCase":"value","pattern":"^FileTransform@1$"},"inputs":{"description":"File transform inputs","properties":{"folderPath":{"type":"string","description":"Package or folder","ignoreCase":"key"},"enableXmlTransform":{"type":"boolean","description":"XML transformation","ignoreCase":"key"},"xmlTransformationRules":{"type":"string","description":"Transformation rules","ignoreCase":"key"},"fileType":{"description":"File format","ignoreCase":"all","enum":["xml","json"]},"targetFiles":{"type":"string","description":"Target files","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"File transform\n\nReplace tokens with variable values in XML or JSON configuration files","ignoreCase":"value","pattern":"^FileTransform@2$"},"inputs":{"description":"File transform inputs","properties":{"folderPath":{"type":"string","description":"Package or folder","ignoreCase":"key"},"xmlTransformationRules":{"type":"string","description":"XML Transformation rules","ignoreCase":"key"},"jsonTargetFiles":{"type":"string","description":"JSON target files","ignoreCase":"key"},"xmlTargetFiles":{"type":"string","description":"XML target files","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Mac Codesign Verification\n\nVerifies that mac files have been correctly codesigned. This can only be used on Mac hosts.","ignoreCase":"value","pattern":"^MicroBuildMacSignVerify@0$"},"inputs":{"description":"MicroBuild Mac Codesign Verification inputs","properties":{"Directories":{"type":"string","description":"Directories to Verify","ignoreCase":"key"},"AppIdentity":{"type":"string","description":"Application ID","ignoreCase":"key"}},"additionalProperties":false,"required":["Directories","AppIdentity"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Extract files\n\nExtract a variety of archive and compression files such as .7z, .rar, .tar.gz, and .zip","ignoreCase":"value","pattern":"^ExtractFiles@1$"},"inputs":{"description":"Extract files inputs","properties":{"archiveFilePatterns":{"type":"string","description":"Archive file patterns","ignoreCase":"key"},"destinationFolder":{"type":"string","description":"Destination folder","ignoreCase":"key"},"cleanDestinationFolder":{"type":"boolean","description":"Clean destination folder before extracting","ignoreCase":"key"},"overwriteExistingFiles":{"type":"boolean","description":"Overwrite existing files","ignoreCase":"key"},"pathToSevenZipTool":{"type":"string","description":"Path to 7z utility","ignoreCase":"key"}},"additionalProperties":false,"required":["destinationFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Xamarin.Android\n\nBuild an Android app with Xamarin","ignoreCase":"value","pattern":"^XamarinAndroid@1$"},"inputs":{"description":"Xamarin.Android inputs","properties":{"projectFile":{"type":"string","description":"Project","ignoreCase":"key","aliases":["project"]},"target":{"type":"string","description":"Target","ignoreCase":"key"},"outputDirectory":{"type":"string","description":"Output directory","ignoreCase":"key","aliases":["outputDir"]},"configuration":{"type":"string","description":"Configuration","ignoreCase":"key"},"createAppPackage":{"type":"boolean","description":"Create app package","ignoreCase":"key"},"clean":{"type":"boolean","description":"Clean","ignoreCase":"key"},"msbuildLocationOption":{"description":"MSBuild","ignoreCase":"all","enum":["version","location"],"aliases":["msbuildLocationMethod"]},"msbuildVersionOption":{"description":"MSBuild version","ignoreCase":"all","enum":["latest","17.0","16.0","15.0","14.0","12.0","4.0"],"aliases":["msbuildVersion"]},"msbuildFile":{"type":"string","description":"MSBuild location","ignoreCase":"key","aliases":["msbuildLocation"]},"msbuildArchitectureOption":{"description":"MSBuild architecture","ignoreCase":"all","enum":["x86","x64"],"aliases":["msbuildArchitecture"]},"msbuildArguments":{"type":"string","description":"Additional arguments","ignoreCase":"key"},"jdkOption":{"description":"Select JDK to use for the build","ignoreCase":"all","enum":["JDKVersion","Path"],"aliases":["jdkSelection"]},"jdkVersionOption":{"description":"JDK version","ignoreCase":"all","enum":["default","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"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Manifest Generator Task\n\nCreates a manifest.json and bsi.json for all the files in a folder. This generated manifest can be used to validate the contents of the folder in the future.","ignoreCase":"value","pattern":"^ManifestGeneratorTask@0$"},"inputs":{"description":"Manifest Generator Task inputs","properties":{"BuildDropPath":{"type":"string","description":"The root folder for which the manifest has to be generated.","ignoreCase":"key"},"ManifestDirPath":{"type":"string","description":"The path of the directory where the generated manifest files will be placed. If this parameter is not specified, the files will be placed in {BuildDropPath}/_manifest directory.","ignoreCase":"key"},"BuildComponentPath":{"type":"string","description":"The folder that contains the build's components/packages.","ignoreCase":"key"},"Verbosity":{"description":"The verbosity of the output generated by the manifest generator.","ignoreCase":"all","enum":["Verbose","Debug","Information","Warning","Error","Fatal"]},"PackageName":{"type":"string","description":"The name of the package this SBOM describes.","ignoreCase":"key"},"PackageVersion":{"type":"string","description":"The version of the package this SBOM describes.","ignoreCase":"key"},"DockerImagesToScan":{"type":"string","description":"Comma separated list of docker image names or hashes to be scanned for packages, ex: ubuntu:16.04, 56bab49eef2ef07505f6a1b0d5bd3a601dfc3c76ad4460f24c91d6fa298369ab.","ignoreCase":"key"},"ConfigFilePath":{"type":"string","description":"The json file that contains the configuration for the Manifest Tool.","ignoreCase":"key"}},"additionalProperties":false,"required":["BuildDropPath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Powershell++ (deprecated)\n\n(Deprecated) Use the PowerShell task version 2 for online scripts","ignoreCase":"value","pattern":"^Powershellpp@0$"},"inputs":{"description":"Powershell++ (deprecated) inputs","properties":{"type":{"description":"Type","ignoreCase":"all","enum":["InlineScript","FilePath"]},"scriptName":{"type":"string","description":"Script filename","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingFolder":{"type":"string","description":"Working folder","ignoreCase":"key"},"script":{"type":"string","description":"Script","ignoreCase":"key"}},"additionalProperties":false,"required":["type"]}},"deprecationMessage":"Powershellpp is deprecated - (Deprecated) Use the PowerShell task version 2 for online scripts","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Copy and Publish Build Artifacts\n\n[DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead","ignoreCase":"value","pattern":"^CopyPublishBuildArtifacts@1$"},"inputs":{"description":"Copy and Publish Build Artifacts inputs","properties":{"CopyRoot":{"type":"string","description":"Copy Root","ignoreCase":"key"},"Contents":{"type":"string","description":"Contents","ignoreCase":"key"},"ArtifactName":{"type":"string","description":"Artifact Name","ignoreCase":"key"},"ArtifactType":{"description":"Artifact Type","ignoreCase":"all","enum":["Container","FilePath"]},"TargetPath":{"type":"string","description":"Path","ignoreCase":"key"}},"additionalProperties":false,"required":["Contents","ArtifactName","ArtifactType"]}},"deprecationMessage":"CopyPublishBuildArtifacts is deprecated - [DEPRECATED] Use the Copy Files task and the Publish Build Artifacts task instead","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Bash or CMD\n\nExecute Bash on POSIX, CMD on Windows","ignoreCase":"value","pattern":"^BashOrCmd@0$"},"inputs":{"description":"Bash or CMD inputs","properties":{"bash":{"type":"string","description":"Bash script","ignoreCase":"key"},"cmd":{"type":"string","description":"CMD script","ignoreCase":"key"}},"additionalProperties":false,"required":["bash","cmd"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Download package\n\nDownload a package from a package management feed in Azure Artifacts","ignoreCase":"value","pattern":"^DownloadPackage@1$"},"inputs":{"description":"Download package inputs","properties":{"packageType":{"description":"Package Type","ignoreCase":"all","enum":["maven","npm","nuget","pypi","upack"]},"feed":{"type":"string","description":"Feed","ignoreCase":"key"},"view":{"type":"string","description":"View","ignoreCase":"key"},"definition":{"type":"string","description":"Package","ignoreCase":"key"},"version":{"type":"string","description":"Version","ignoreCase":"key"},"files":{"type":"string","description":"Files","ignoreCase":"key"},"extract":{"type":"boolean","description":"Extract package contents","ignoreCase":"key"},"downloadPath":{"type":"string","description":"Destination directory","ignoreCase":"key"}},"additionalProperties":false,"required":["feed","definition","version"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Download package\n\nDownload a package from a package management feed in Azure Artifacts","ignoreCase":"value","pattern":"^DownloadPackage@0$"},"inputs":{"description":"Download package inputs","properties":{"feed":{"type":"string","description":"Feed","ignoreCase":"key"},"definition":{"type":"string","description":"Package","ignoreCase":"key"},"version":{"type":"string","description":"Version","ignoreCase":"key"},"downloadPath":{"type":"string","description":"Destination directory","ignoreCase":"key"}},"additionalProperties":false,"required":["feed","definition","version"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"MicroBuild Static Drop\n\nThis task is deprecated.","ignoreCase":"value","pattern":"^MicroBuildStaticDrop@1$"},"inputs":{"description":"MicroBuild Static Drop inputs","properties":{"CopyRoot":{"type":"string","description":"Copy Root","ignoreCase":"key"},"Contents":{"type":"string","description":"Contents","ignoreCase":"key"},"ArtifactName":{"type":"string","description":"Artifact Name","ignoreCase":"key"},"TargetPath":{"type":"string","description":"Path","ignoreCase":"key"}},"additionalProperties":false,"required":["Contents"]}},"deprecationMessage":"MicroBuildStaticDrop is deprecated - This task is deprecated.","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure resource group deployment\n\nDeploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines","ignoreCase":"value","pattern":"^AzureResourceGroupDeployment@2$"},"inputs":{"description":"Azure resource group deployment inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"action":{"description":"Action","ignoreCase":"all","enum":["Create Or Update Resource Group","Select Resource Group","Start","Stop","StopWithDeallocate","Restart","Delete","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"]},"enableDeploymentPrerequisites":{"description":"Enable prerequisites","ignoreCase":"all","enum":["None","ConfigureVMwithWinRM","ConfigureVMWithDGAgent"]},"teamServicesConnection":{"type":"string","description":"Azure Pipelines service connection","ignoreCase":"key","aliases":["deploymentGroupEndpoint"]},"teamProject":{"type":"string","description":"Team project","ignoreCase":"key","aliases":["project"]},"deploymentGroupName":{"type":"string","description":"Deployment Group","ignoreCase":"key"},"copyAzureVMTags":{"type":"boolean","description":"Copy Azure VM tags to agents","ignoreCase":"key"},"runAgentServiceAsUser":{"type":"boolean","description":"Run agent service as a user","ignoreCase":"key"},"userName":{"type":"string","description":"User name","ignoreCase":"key"},"password":{"type":"string","description":"Password","ignoreCase":"key"},"outputVariable":{"type":"string","description":"VM details for WinRM","ignoreCase":"key"},"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"}},"additionalProperties":false,"required":["azureSubscription","resourceGroupName"]}},"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":{"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"}},"additionalProperties":false,"required":["azureResourceManagerConnection"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Invoke REST API\n\nInvoke REST API as a part of your process.","ignoreCase":"value","pattern":"^InvokeRESTAPI@0$"},"inputs":{"description":"Invoke REST API inputs","properties":{"serviceConnection":{"type":"string","description":"Generic endpoint","ignoreCase":"key","aliases":["connectedServiceName"]},"method":{"description":"Method","ignoreCase":"all","enum":["OPTIONS","GET","HEAD","POST","PUT","DELETE","TRACE","PATCH"]},"headers":{"type":"string","description":"Headers","ignoreCase":"key"},"body":{"type":"string","description":"Body","ignoreCase":"key"},"urlSuffix":{"type":"string","description":"Url suffix string","ignoreCase":"key"},"waitForCompletion":{"description":"Complete based on","ignoreCase":"all","enum":["true","false"]},"successCriteria":{"type":"string","description":"Success criteria","ignoreCase":"key"}},"additionalProperties":false,"required":["serviceConnection"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Invoke REST API\n\nInvoke a REST API as a part of your pipeline.","ignoreCase":"value","pattern":"^InvokeRESTAPI@1$"},"inputs":{"description":"Invoke REST API inputs","properties":{"connectionType":{"description":"Connection type","ignoreCase":"all","enum":["connectedServiceName","connectedServiceNameARM"],"aliases":["connectedServiceNameSelector"]},"serviceConnection":{"type":"string","description":"Generic service connection","ignoreCase":"key","aliases":["connectedServiceName","genericService"]},"azureServiceConnection":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["connectedServiceNameARM","azureSubscription"]},"method":{"description":"Method","ignoreCase":"all","enum":["OPTIONS","GET","HEAD","POST","PUT","DELETE","TRACE","PATCH"]},"headers":{"type":"string","description":"Headers","ignoreCase":"key"},"body":{"type":"string","description":"Body","ignoreCase":"key"},"urlSuffix":{"type":"string","description":"URL suffix and parameters","ignoreCase":"key"},"waitForCompletion":{"description":"Completion event","ignoreCase":"all","enum":["true","false"]},"successCriteria":{"type":"string","description":"Success criteria","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Archive Files\n\nArchive files using compression formats such as .7z, .rar, .tar.gz, and .zip.","ignoreCase":"value","pattern":"^ArchiveFiles@1$"},"inputs":{"description":"Archive Files inputs","properties":{"rootFolder":{"type":"string","description":"Root folder (or file) to archive","ignoreCase":"key"},"includeRootFolder":{"type":"boolean","description":"Prefix root folder name to archive paths","ignoreCase":"key"},"archiveType":{"description":"Archive type","ignoreCase":"all","enum":["default","7z","tar","wim"]},"tarCompression":{"description":"Tar compression","ignoreCase":"all","enum":["gz","bz2","xz","none"]},"archiveFile":{"type":"string","description":"Archive file to create","ignoreCase":"key"},"replaceExistingArchive":{"type":"boolean","description":"Replace existing archive","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Archive files\n\nCompress files into .7z, .tar.gz, or .zip","ignoreCase":"value","pattern":"^ArchiveFiles@2$"},"inputs":{"description":"Archive files inputs","properties":{"rootFolderOrFile":{"type":"string","description":"Root folder or file to archive","ignoreCase":"key"},"includeRootFolder":{"type":"boolean","description":"Prepend root folder name to archive paths","ignoreCase":"key"},"archiveType":{"description":"Archive type","ignoreCase":"all","enum":["zip","7z","tar","wim"]},"sevenZipCompression":{"description":"7z compression","ignoreCase":"all","enum":["ultra","maximum","normal","fast","fastest","none"]},"tarCompression":{"description":"Tar compression","ignoreCase":"all","enum":["gz","bz2","xz","none"]},"archiveFile":{"type":"string","description":"Archive file to create","ignoreCase":"key"},"replaceExistingArchive":{"type":"boolean","description":"Replace existing archive","ignoreCase":"key"},"verbose":{"type":"boolean","description":"Force verbose output","ignoreCase":"key"},"quiet":{"type":"boolean","description":"Force quiet output","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"GitHub Comment\n\nWrite a comment to your Github entity i.e. issue or a Pull Request (PR)","ignoreCase":"value","pattern":"^GitHubComment@0$"},"inputs":{"description":"GitHub Comment inputs","properties":{"gitHubConnection":{"type":"string","description":"GitHub connection (OAuth or PAT)","ignoreCase":"key"},"repositoryName":{"type":"string","description":"Repository","ignoreCase":"key"},"id":{"type":"string","description":"ID of the github pr/issue","ignoreCase":"key"},"comment":{"type":"string","description":"Comment","ignoreCase":"key"}},"additionalProperties":false,"required":["gitHubConnection"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Copy files\n\nCopy files from a source folder to a target folder using patterns matching file paths (not folder paths)","ignoreCase":"value","pattern":"^CopyFiles@2$"},"inputs":{"description":"Copy files inputs","properties":{"SourceFolder":{"type":"string","description":"Source Folder","ignoreCase":"key"},"Contents":{"type":"string","description":"Contents","ignoreCase":"key"},"TargetFolder":{"type":"string","description":"Target Folder","ignoreCase":"key"},"CleanTargetFolder":{"type":"boolean","description":"Clean Target Folder","ignoreCase":"key"},"OverWrite":{"type":"boolean","description":"Overwrite","ignoreCase":"key"},"flattenFolders":{"type":"boolean","description":"Flatten Folders","ignoreCase":"key"},"preserveTimestamp":{"type":"boolean","description":"Preserve Target Timestamp","ignoreCase":"key"},"retryCount":{"type":"string","description":"Retry count to copy the file","ignoreCase":"key"},"delayBetweenRetries":{"type":"string","description":"Delay between two retries.","ignoreCase":"key"},"ignoreMakeDirErrors":{"type":"boolean","description":"Ignore errors during creation of target folder.","ignoreCase":"key"}},"additionalProperties":false,"required":["TargetFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Copy Files\n\nCopy files from source folder to target folder using minimatch patterns (The minimatch patterns will only match file paths, not folder paths)","ignoreCase":"value","pattern":"^CopyFiles@1$"},"inputs":{"description":"Copy Files inputs","properties":{"SourceFolder":{"type":"string","description":"Source Folder","ignoreCase":"key"},"Contents":{"type":"string","description":"Contents","ignoreCase":"key"},"TargetFolder":{"type":"string","description":"Target Folder","ignoreCase":"key"},"CleanTargetFolder":{"type":"boolean","description":"Clean Target Folder","ignoreCase":"key"},"OverWrite":{"type":"boolean","description":"Overwrite","ignoreCase":"key"},"flattenFolders":{"type":"boolean","description":"Flatten Folders","ignoreCase":"key"}},"additionalProperties":false,"required":["TargetFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure Database for MySQL deployment\n\nRun your scripts and make changes to your Azure Database for MySQL","ignoreCase":"value","pattern":"^AzureMysqlDeployment@1$"},"inputs":{"description":"Azure Database for MySQL deployment inputs","properties":{"azureSubscription":{"type":"string","description":"Azure Subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"ServerName":{"type":"string","description":"Host Name","ignoreCase":"key"},"DatabaseName":{"type":"string","description":"Database Name","ignoreCase":"key"},"SqlUsername":{"type":"string","description":"Server Admin Login","ignoreCase":"key"},"SqlPassword":{"type":"string","description":"Password","ignoreCase":"key"},"TaskNameSelector":{"description":"Type","ignoreCase":"all","enum":["SqlTaskFile","InlineSqlTask"]},"SqlFile":{"type":"string","description":"MySQL Script","ignoreCase":"key"},"SqlInline":{"type":"string","description":"Inline MySQL Script","ignoreCase":"key"},"SqlAdditionalArguments":{"type":"string","description":"Additional MySQL Arguments","ignoreCase":"key"},"IpDetectionMethod":{"description":"Specify Firewall Rules Using","ignoreCase":"all","enum":["AutoDetect","IPAddressRange"]},"StartIpAddress":{"type":"string","description":"Start IP Address","ignoreCase":"key"},"EndIpAddress":{"type":"string","description":"End IP Address","ignoreCase":"key"},"DeleteFirewallRule":{"type":"boolean","description":"Delete Rule After Task Ends","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","ServerName","SqlUsername","SqlPassword"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"npm\n\nInstall and publish npm packages, or run an npm command. Supports npmjs.com and authenticated registries like Azure Artifacts.","ignoreCase":"value","pattern":"^Npm@1$"},"inputs":{"description":"npm inputs","properties":{"command":{"description":"Command","ignoreCase":"all","enum":["ci","install","publish","custom"]},"workingDir":{"type":"string","description":"Working folder that contains package.json","ignoreCase":"key"},"verbose":{"type":"boolean","description":"Verbose logging","ignoreCase":"key"},"customCommand":{"type":"string","description":"Command and arguments","ignoreCase":"key"},"customRegistry":{"description":"Registries to use","ignoreCase":"all","enum":["useNpmrc","useFeed"]},"customFeed":{"type":"string","description":"Use packages from this Azure Artifacts/TFS registry","ignoreCase":"key"},"customEndpoint":{"type":"string","description":"Credentials for registries outside this organization/collection","ignoreCase":"key"},"publishRegistry":{"description":"Registry location","ignoreCase":"all","enum":["useExternalRegistry","useFeed"]},"publishFeed":{"type":"string","description":"Target registry","ignoreCase":"key"},"publishPackageMetadata":{"type":"boolean","description":"Publish pipeline metadata","ignoreCase":"key"},"publishEndpoint":{"type":"string","description":"External Registry","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"npm\n\nRun an npm command. Use NpmAuthenticate@0 task for latest capabilities.","ignoreCase":"value","pattern":"^Npm@0$"},"inputs":{"description":"npm inputs","properties":{"cwd":{"type":"string","description":"working folder","ignoreCase":"key"},"command":{"type":"string","description":"npm command","ignoreCase":"key"},"arguments":{"type":"string","description":"arguments","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Drop Validator Task\n\nValidates a given drop against a manifest generated at build time to verify the integrity of the drop.","ignoreCase":"value","pattern":"^DropValidatorTask@0$"},"inputs":{"description":"Drop Validator Task inputs","properties":{"BuildDropPath":{"type":"string","description":"The root folder of the drop.","ignoreCase":"key"},"ManifestDirPath":{"type":"string","description":"The path of the directory where the manifest will be validated. If this parameter is not specified, the manifest will be validated in {BuildDropPath}/_manifest directory.","ignoreCase":"key"},"OutputPath":{"type":"string","description":"The path where the generated output file is placed.","ignoreCase":"key"},"ValidateSignature":{"type":"boolean","description":"If checked we will verify the signature of the manifest using the provided catalog file.","ignoreCase":"key"},"Verbosity":{"description":"The verbosity of the output generated by the drop validator.","ignoreCase":"all","enum":["Verbose","Debug","Information","Warning","Error","Fatal"]},"ConfigFilePath":{"type":"string","description":"The json file that contains the configuration for the Manifest Tool.","ignoreCase":"key"},"RootPathFilter":{"type":"string","description":"If you're downloading only a part of the drop using the '-r' or 'root' parameter in the drop client, specify the same string value here in order to skip validating paths that are not downloaded.","ignoreCase":"key"}},"additionalProperties":false,"required":["BuildDropPath","OutputPath"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Deploy Azure Static Web App\n\n[PREVIEW] Build and deploy an Azure Static Web App","ignoreCase":"value","pattern":"^AzureStaticWebApp@0$"},"inputs":{"description":"Deploy Azure Static Web App inputs","properties":{"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key","aliases":["cwd","rootDirectory"]},"app_location":{"type":"string","description":"App location","ignoreCase":"key"},"app_build_command":{"type":"string","description":"App build command","ignoreCase":"key"},"output_location":{"type":"string","description":"Output location","ignoreCase":"key"},"api_location":{"type":"string","description":"Api location","ignoreCase":"key"},"api_build_command":{"type":"string","description":"Api build command","ignoreCase":"key"},"routes_location":{"type":"string","description":"Routes location","ignoreCase":"key"},"config_file_location":{"type":"string","description":"Config file location","ignoreCase":"key"},"skip_app_build":{"type":"boolean","description":"Skip app build","ignoreCase":"key"},"verbose":{"type":"boolean","description":"Verbose","ignoreCase":"key"},"build_timeout_in_minutes":{"type":"integer","description":"Build timeout in minutes","ignoreCase":"key"},"azure_static_web_apps_api_token":{"type":"string","description":"Azure Static Web Apps api token","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"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Node.js tool installer\n\nFinds or downloads and caches the specified version spec of Node.js and adds it to the PATH","ignoreCase":"value","pattern":"^NodeTool@0$"},"inputs":{"description":"Node.js tool installer inputs","properties":{"versionSpec":{"type":"string","description":"Version Spec","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":{"description":"UnZip A package\n\nUnZip a package","ignoreCase":"value","pattern":"^unzip@0$"},"inputs":{"description":"UnZip A package inputs","properties":{"pathToZipFile":{"type":"string","description":"Path to the zip file","ignoreCase":"key"},"pathToZipFolder":{"type":"string","description":"Path to folder","ignoreCase":"key"}},"additionalProperties":false,"required":["pathToZipFile","pathToZipFolder"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"[Deprecated] SQL Server database deploy\n\nDeploy a SQL Server database using DACPAC","ignoreCase":"value","pattern":"^SqlServerDacpacDeployment@1$"},"inputs":{"description":"[Deprecated] SQL Server database deploy 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"},"DacpacFile":{"type":"string","description":"DACPAC File","ignoreCase":"key"},"TargetMethod":{"description":"Specify SQL Using","ignoreCase":"all","enum":["server","connectionString","publishProfile"]},"ServerName":{"type":"string","description":"Server Name","ignoreCase":"key"},"DatabaseName":{"type":"string","description":"Database Name","ignoreCase":"key"},"SqlUsername":{"type":"string","description":"SQL Username","ignoreCase":"key"},"SqlPassword":{"type":"string","description":"SQL Password","ignoreCase":"key"},"ConnectionString":{"type":"string","description":"Connection String","ignoreCase":"key"},"PublishProfile":{"type":"string","description":"Publish Profile","ignoreCase":"key"},"AdditionalArguments":{"type":"string","description":"Additional Arguments","ignoreCase":"key"},"DeployInParallel":{"type":"boolean","description":"Deploy in Parallel","ignoreCase":"key"},"ResourceFilteringMethod":{"description":"Select Machines By","ignoreCase":"all","enum":["machineNames","tags"]},"MachineFilter":{"type":"string","description":"Deploy to Machines","ignoreCase":"key"}},"additionalProperties":false,"required":["EnvironmentName","DacpacFile"]}},"deprecationMessage":"SqlServerDacpacDeployment is deprecated - Deploy a SQL Server database using DACPAC","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Visual Studio test platform installer\n\nAcquire the test platform from nuget.org or the tool cache. Satisfies the ‘vstest’ demand and can be used for running tests and collecting diagnostic data using the Visual Studio Test task.","ignoreCase":"value","pattern":"^VisualStudioTestPlatformInstaller@1$"},"inputs":{"description":"Visual Studio test platform installer inputs","properties":{"packageFeedSelector":{"description":"Package Feed","ignoreCase":"all","enum":["nugetOrg","customFeed","netShare"]},"versionSelector":{"description":"Version","ignoreCase":"all","enum":["latestPreRelease","latestStable","specificVersion"]},"testPlatformVersion":{"type":"string","description":"Test Platform Version","ignoreCase":"key"},"customFeed":{"type":"string","description":"Package Source","ignoreCase":"key"},"username":{"type":"string","description":"User Name","ignoreCase":"key"},"password":{"type":"string","description":"Password","ignoreCase":"key"},"netShare":{"type":"string","description":"UNC Path","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Publish To Azure Service Bus\n\nSends a message to Azure Service Bus using a service connection (no agent is required)","ignoreCase":"value","pattern":"^PublishToAzureServiceBus@1$"},"inputs":{"description":"Publish To Azure Service Bus inputs","properties":{"azureSubscription":{"type":"string","description":"Azure Service Bus service connection","ignoreCase":"key","aliases":["connectedServiceName"]},"messageBody":{"type":"string","description":"Message body","ignoreCase":"key"},"sessionId":{"type":"string","description":"Session Id","ignoreCase":"key"},"signPayload":{"type":"boolean","description":"Sign the Message","ignoreCase":"key"},"certificateString":{"type":"string","description":"Certificate Variable","ignoreCase":"key"},"signatureKey":{"type":"string","description":"Signature Property Key","ignoreCase":"key"},"waitForCompletion":{"type":"boolean","description":"Wait for task completion","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Publish To Azure Service Bus\n\nSends a message to azure service bus using a service connection (no agent required).","ignoreCase":"value","pattern":"^PublishToAzureServiceBus@0$"},"inputs":{"description":"Publish To Azure Service Bus inputs","properties":{"azureSubscription":{"type":"string","description":"Azure service bus connection","ignoreCase":"key","aliases":["connectedServiceName"]},"messageBody":{"type":"string","description":"Message body","ignoreCase":"key"},"waitForCompletion":{"type":"boolean","description":"Wait for task completion","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Deploy to Kubernetes\n\nUse Kubernetes manifest files to deploy to clusters or even bake the manifest files to be used for deployments using Helm charts","ignoreCase":"value","pattern":"^KubernetesManifest@0$"},"inputs":{"description":"Deploy to Kubernetes inputs","properties":{"action":{"description":"Action","ignoreCase":"all","enum":["bake","createSecret","delete","deploy","patch","promote","scale","reject"]},"kubernetesServiceConnection":{"type":"string","description":"Kubernetes service connection","ignoreCase":"key"},"namespace":{"type":"string","description":"Namespace","ignoreCase":"key"},"strategy":{"description":"Strategy","ignoreCase":"all","enum":["canary","none"]},"trafficSplitMethod":{"description":"Traffic split method","ignoreCase":"all","enum":["pod","smi"]},"percentage":{"type":"string","description":"Percentage","ignoreCase":"key"},"baselineAndCanaryReplicas":{"type":"string","description":"Baseline and canary replicas","ignoreCase":"key"},"manifests":{"type":"string","description":"Manifests","ignoreCase":"key"},"containers":{"type":"string","description":"Containers","ignoreCase":"key"},"imagePullSecrets":{"type":"string","description":"ImagePullSecrets","ignoreCase":"key"},"renderType":{"description":"Render Engine","ignoreCase":"all","enum":["helm","kompose","kustomize"]},"dockerComposeFile":{"type":"string","description":"Path to docker compose file","ignoreCase":"key"},"helmChart":{"type":"string","description":"Helm Chart","ignoreCase":"key"},"releaseName":{"type":"string","description":"Helm Release Name","ignoreCase":"key"},"overrideFiles":{"type":"string","description":"Override Files","ignoreCase":"key"},"overrides":{"type":"string","description":"Overrides","ignoreCase":"key"},"kustomizationPath":{"type":"string","description":"Kustomization Path","ignoreCase":"key"},"resourceToPatch":{"description":"Resource to patch","ignoreCase":"all","enum":["file","name"]},"resourceFileToPatch":{"type":"string","description":"File path","ignoreCase":"key"},"kind":{"description":"Kind","ignoreCase":"all","enum":["deployment","replicaset","statefulset"]},"name":{"type":"string","description":"Name","ignoreCase":"key"},"replicas":{"type":"string","description":"Replica count","ignoreCase":"key"},"mergeStrategy":{"description":"Merge Strategy","ignoreCase":"all","enum":["json","merge","strategic"]},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"patch":{"type":"string","description":"Patch","ignoreCase":"key"},"secretType":{"description":"Type of secret","ignoreCase":"all","enum":["dockerRegistry","generic"]},"secretName":{"type":"string","description":"Secret name","ignoreCase":"key"},"secretArguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"dockerRegistryEndpoint":{"type":"string","description":"Docker registry service connection","ignoreCase":"key"},"rolloutStatusTimeout":{"type":"string","description":"Timeout for rollout status","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Download build artifacts\n\nDownload files that were saved as artifacts of a completed build","ignoreCase":"value","pattern":"^DownloadBuildArtifacts@1$"},"inputs":{"description":"Download build artifacts 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"]},"allowPartiallySucceededBuilds":{"type":"boolean","description":"Download artifacts even from partially succeeded builds.","ignoreCase":"key"},"branchName":{"type":"string","description":"Branch name","ignoreCase":"key"},"buildId":{"type":"string","description":"Build","ignoreCase":"key"},"tags":{"type":"string","description":"Build Tags","ignoreCase":"key"},"downloadType":{"description":"Download type","ignoreCase":"all","enum":["single","specific"]},"artifactName":{"type":"string","description":"Artifact name","ignoreCase":"key"},"itemPattern":{"type":"string","description":"Matching pattern","ignoreCase":"key"},"downloadPath":{"type":"string","description":"Destination directory","ignoreCase":"key"},"parallelizationLimit":{"type":"string","description":"Parallelization limit","ignoreCase":"key"},"checkDownloadedFiles":{"type":"boolean","description":"Check downloaded files","ignoreCase":"key"},"retryDownloadCount":{"type":"string","description":"Retry count","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Download build artifacts\n\nDownload files that were saved as artifacts of a completed build","ignoreCase":"value","pattern":"^DownloadBuildArtifacts@0$"},"inputs":{"description":"Download build artifacts 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"]},"allowPartiallySucceededBuilds":{"type":"boolean","description":"Download artifacts even from partially succeeded builds.","ignoreCase":"key"},"branchName":{"type":"string","description":"Branch name","ignoreCase":"key"},"buildId":{"type":"string","description":"Build","ignoreCase":"key"},"tags":{"type":"string","description":"Build Tags","ignoreCase":"key"},"downloadType":{"description":"Download type","ignoreCase":"all","enum":["single","specific"]},"artifactName":{"type":"string","description":"Artifact name","ignoreCase":"key"},"itemPattern":{"type":"string","description":"Matching pattern","ignoreCase":"key"},"downloadPath":{"type":"string","description":"Destination directory","ignoreCase":"key"},"cleanDestinationFolder":{"type":"boolean","description":"Clean destination folder","ignoreCase":"key"},"parallelizationLimit":{"type":"string","description":"Parallelization limit","ignoreCase":"key"},"checkDownloadedFiles":{"type":"boolean","description":"Check downloaded files","ignoreCase":"key"},"retryDownloadCount":{"type":"string","description":"Retry count","ignoreCase":"key"},"extractTars":{"type":"boolean","description":"Extract all files that are stored inside tar archives","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"CocoaPods\n\nInstall CocoaPods dependencies for Swift and Objective-C Cocoa projects","ignoreCase":"value","pattern":"^CocoaPods@0$"},"inputs":{"description":"CocoaPods inputs","properties":{"workingDirectory":{"type":"string","description":"Working directory","ignoreCase":"key","aliases":["cwd"]},"forceRepoUpdate":{"type":"boolean","description":"Force repo update","ignoreCase":"key"},"projectDirectory":{"type":"string","description":"Project directory","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Archive Symbols\n\nArchives symbols on Symweb.","ignoreCase":"value","pattern":"^MicroBuildArchiveSymbols@1$"},"inputs":{"description":"MicroBuild Archive Symbols inputs","properties":{"SymbolsFeatureName":{"type":"string","description":"Feature Name","ignoreCase":"key"},"SymbolsSymwebProject":{"description":"Symweb Project","ignoreCase":"all","enum":["VS","CLR","DDE"]},"SymbolsUncPath":{"type":"string","description":"UNC Path to Symbols","ignoreCase":"key"},"SymbolsEmailContacts":{"type":"string","description":"Team Contacts","ignoreCase":"key"},"SubmitToInternet":{"type":"boolean","description":"Submit to Internet","ignoreCase":"key"},"CreateBuildArtifact":{"type":"boolean","description":"Create Build Artifact","ignoreCase":"key"},"SymbolsAgentPath":{"type":"string","description":"Agent Path to Symbols","ignoreCase":"key"},"ExcludeAgentFolders":{"type":"string","description":"Exclude Agent Folders","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure Spring Cloud\n\nDeploy applications to Azure Spring Cloud and manage deployments.","ignoreCase":"value","pattern":"^AzureSpringCloud@0$"},"inputs":{"description":"Azure Spring Cloud inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"Action":{"description":"Action","ignoreCase":"all","enum":["Deploy","Set Production","Delete Staging Deployment"]},"AzureSpringCloud":{"type":"string","description":"Azure Spring Cloud Name","ignoreCase":"key"},"AppName":{"type":"string","description":"App","ignoreCase":"key"},"UseStagingDeployment":{"type":"boolean","description":"Use Staging Deployment","ignoreCase":"key"},"CreateNewDeployment":{"type":"boolean","description":"Create a new staging deployment if one does not exist.","ignoreCase":"key"},"DeploymentName":{"type":"string","description":"Deployment","ignoreCase":"key"},"Package":{"type":"string","description":"Package or folder","ignoreCase":"key"},"EnvironmentVariables":{"type":"string","description":"Environment Variables","ignoreCase":"key"},"JvmOptions":{"type":"string","description":"JVM Options","ignoreCase":"key"},"RuntimeVersion":{"description":"Runtime Version","ignoreCase":"all","enum":["Java_8","Java_11","NetCore_31"]},"DotNetCoreMainEntryPath":{"type":"string","description":"Main Entry Path","ignoreCase":"key"},"Version":{"type":"string","description":"Version","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","AzureSpringCloud","AppName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure Web App\n\nDeploy an Azure Web App for Linux or Windows","ignoreCase":"value","pattern":"^AzureWebApp@1$"},"inputs":{"description":"Azure Web App inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key"},"appType":{"description":"App type","ignoreCase":"all","enum":["webApp","webAppLinux"]},"appName":{"type":"string","description":"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"},"customDeployFolder":{"type":"string","description":"Custom Deploy Folder","ignoreCase":"key"},"runtimeStack":{"type":"string","description":"Runtime stack","ignoreCase":"key"},"startUpCommand":{"type":"string","description":"Startup command ","ignoreCase":"key"},"customWebConfig":{"type":"string","description":"Generate web.config parameters for Python, Node.js, Go and Java apps","ignoreCase":"key"},"appSettings":{"type":"string","description":"App settings","ignoreCase":"key"},"configurationStrings":{"type":"string","description":"Configuration settings","ignoreCase":"key"},"deploymentMethod":{"description":"Deployment method","ignoreCase":"all","enum":["auto","zipDeploy","runFromPackage"]}},"additionalProperties":false,"required":["azureSubscription","appType","appName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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":{"description":"Azure CLI\n\nRun Azure CLI commands against an Azure subscription in a PowerShell Core/Shell script when running on Linux agent or PowerShell/PowerShell Core/Batch script when running on Windows agent.","ignoreCase":"value","pattern":"^AzureCLI@2$"},"inputs":{"description":"Azure CLI inputs","properties":{"azureSubscription":{"type":"string","description":"Azure Resource Manager connection","ignoreCase":"key","aliases":["connectedServiceNameARM"]},"scriptType":{"description":"Script Type","ignoreCase":"all","enum":["ps","pscore","batch","bash"]},"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":"Script Arguments","ignoreCase":"key","aliases":["scriptArguments"]},"powerShellErrorActionPreference":{"description":"ErrorActionPreference","ignoreCase":"all","enum":["stop","continue","silentlyContinue"]},"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"},"powerShellIgnoreLASTEXITCODE":{"type":"boolean","description":"Ignore $LASTEXITCODE","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","scriptType"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure CLI Preview\n\nRun a Shell or Batch script with Azure CLI commands against an azure subscription","ignoreCase":"value","pattern":"^AzureCLI@0$"},"inputs":{"description":"Azure CLI Preview inputs","properties":{"connectedServiceNameSelector":{"description":"Azure Connection Type","ignoreCase":"all","enum":["connectedServiceName","connectedServiceNameARM"]},"connectedServiceNameARM":{"type":"string","description":"AzureRM Subscription","ignoreCase":"key"},"connectedServiceName":{"type":"string","description":"Azure Classic Subscription","ignoreCase":"key"},"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"},"args":{"type":"string","description":"Arguments","ignoreCase":"key"},"cwd":{"type":"string","description":"Working Directory","ignoreCase":"key"},"failOnStandardError":{"type":"boolean","description":"Fail on Standard Error","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild VC Error Codes Plugin\n\nInstalls and configures the MicroBuild VC Error Codes plugin for use during the build","ignoreCase":"value","pattern":"^MicroBuildVCErrorCodesPlugin@2$"},"inputs":{"description":"MicroBuild VC Error Codes Plugin inputs","properties":{"version":{"type":"string","description":"Plugin Version Override","ignoreCase":"key"},"feedSource":{"type":"string","description":"NuGet feed location where the plugin is located","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Azure Cosmos DB Emulator\n\nCreate and start an Azure Cosmos DB Emulator container for testing","ignoreCase":"value","pattern":"^CosmosDbEmulator@2$"},"inputs":{"description":"Azure Cosmos DB Emulator inputs","properties":{"containerName":{"type":"string","description":"Container Name","ignoreCase":"key"},"enableAPI":{"type":"string","description":"API","ignoreCase":"key"},"portMapping":{"type":"string","description":"Port mapping","ignoreCase":"key"},"hostDirectory":{"type":"string","description":"Host Directory","ignoreCase":"key"},"consistency":{"description":"Consistency Level","ignoreCase":"all","enum":["BoundedStaleness","Eventual","Session","Strong"]},"partitionCount":{"type":"string","description":"Number of 10GB data partitions to allocate","ignoreCase":"key"},"defaultPartitionCount":{"type":"string","description":"Number of 10GB partitions to reserve per partitioned collection","ignoreCase":"key"},"simulateRateLimiting":{"type":"boolean","description":"Simulate Rate Limiting","ignoreCase":"key"},"trace":{"type":"boolean","description":"Enable Tracing","ignoreCase":"key"},"startingTimeout":{"type":"string","description":"Emulator Start Timeout","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Codesign Verification\n\nVerifies that files have been correctly codesigned","ignoreCase":"value","pattern":"^MicroBuildCodesignVerify@2$"},"inputs":{"description":"MicroBuild Codesign Verification inputs","properties":{"TargetFolders":{"type":"string","description":"Folders to Verify","ignoreCase":"key"},"WhiteListPathForCerts":{"type":"string","description":"Location of WhiteList File for Authenticode Certificates","ignoreCase":"key"},"WhiteListPathForSigs":{"type":"string","description":"Location of WhiteList File for Strong Name Signatures","ignoreCase":"key"},"ExcludeSNVerify":{"type":"boolean","description":"Exclude Strong Name Verification","ignoreCase":"key"},"ExcludeFolders":{"type":"string","description":"Folders to Exclude","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"MicroBuild Codesign Verification\n\nVerifies that files have been correctly codesigned","ignoreCase":"value","pattern":"^MicroBuildCodesignVerify@3$"},"inputs":{"description":"MicroBuild Codesign Verification inputs","properties":{"TargetFolders":{"type":"string","description":"Folders to Verify","ignoreCase":"key"},"ApprovalListPathForCerts":{"type":"string","description":"Location of approval list File for Authenticode Certificates","ignoreCase":"key"},"ApprovalListPathForSigs":{"type":"string","description":"Location of approval list File for Strong Name Signatures","ignoreCase":"key"},"ExcludeSNVerify":{"type":"boolean","description":"Exclude Strong Name Verification","ignoreCase":"key"},"ExcludeFolders":{"type":"string","description":"Folders to Exclude","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"GitHub Release\n\nCreate, edit, or delete a GitHub release","ignoreCase":"value","pattern":"^GitHubRelease@1$"},"inputs":{"description":"GitHub Release inputs","properties":{"gitHubConnection":{"type":"string","description":"GitHub connection (OAuth or PAT)","ignoreCase":"key"},"repositoryName":{"type":"string","description":"Repository","ignoreCase":"key"},"action":{"description":"Action","ignoreCase":"all","enum":["create","edit","delete"]},"target":{"type":"string","description":"Target","ignoreCase":"key"},"tagSource":{"description":"Tag source","ignoreCase":"all","enum":["gitTag","userSpecifiedTag"]},"tagPattern":{"type":"string","description":"Tag Pattern","ignoreCase":"key"},"tag":{"type":"string","description":"Tag","ignoreCase":"key"},"title":{"type":"string","description":"Release title","ignoreCase":"key"},"releaseNotesSource":{"description":"Release notes source","ignoreCase":"all","enum":["filePath","inline"]},"releaseNotesFilePath":{"type":"string","description":"Release notes file path","ignoreCase":"key"},"releaseNotesInline":{"type":"string","description":"Release notes","ignoreCase":"key"},"assets":{"type":"string","description":"Assets","ignoreCase":"key"},"assetUploadMode":{"description":"Asset upload mode","ignoreCase":"all","enum":["delete","replace"]},"isDraft":{"type":"boolean","description":"Draft release","ignoreCase":"key"},"isPreRelease":{"type":"boolean","description":"Pre-release","ignoreCase":"key"},"addChangeLog":{"type":"boolean","description":"Add changelog","ignoreCase":"key"},"changeLogCompareToRelease":{"description":"Compare to","ignoreCase":"all","enum":["lastFullRelease","lastNonDraftRelease","lastNonDraftReleaseByTag"]},"changeLogCompareToReleaseTag":{"type":"string","description":"Release Tag","ignoreCase":"key"},"changeLogType":{"description":"Changelog type","ignoreCase":"all","enum":["commitBased","issueBased"]},"changeLogLabels":{"type":"string","description":"Categories","ignoreCase":"key"}},"additionalProperties":false,"required":["gitHubConnection"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"GitHub Release\n\nCreate, edit, or delete a GitHub release","ignoreCase":"value","pattern":"^GitHubRelease@0$"},"inputs":{"description":"GitHub Release inputs","properties":{"gitHubConnection":{"type":"string","description":"GitHub connection (OAuth or PAT)","ignoreCase":"key"},"repositoryName":{"type":"string","description":"Repository","ignoreCase":"key"},"action":{"description":"Action","ignoreCase":"all","enum":["create","edit","delete"]},"target":{"type":"string","description":"Target","ignoreCase":"key"},"tagSource":{"description":"Tag source","ignoreCase":"all","enum":["auto","manual"]},"tagPattern":{"type":"string","description":"Tag Pattern","ignoreCase":"key"},"tag":{"type":"string","description":"Tag","ignoreCase":"key"},"title":{"type":"string","description":"Release title","ignoreCase":"key"},"releaseNotesSource":{"description":"Release notes source","ignoreCase":"all","enum":["file","input"]},"releaseNotesFile":{"type":"string","description":"Release notes file path","ignoreCase":"key"},"releaseNotes":{"type":"string","description":"Release notes","ignoreCase":"key"},"assets":{"type":"string","description":"Assets","ignoreCase":"key"},"assetUploadMode":{"description":"Asset upload mode","ignoreCase":"all","enum":["delete","replace"]},"isDraft":{"type":"boolean","description":"Draft release","ignoreCase":"key"},"isPreRelease":{"type":"boolean","description":"Pre-release","ignoreCase":"key"},"addChangeLog":{"type":"boolean","description":"Add changelog","ignoreCase":"key"},"changeLogCompareToRelease":{"description":"Compare to","ignoreCase":"all","enum":["lastFullRelease","lastNonDraftRelease","lastNonDraftReleaseByTag"]},"changeLogCompareToReleaseTag":{"type":"string","description":"Release Tag","ignoreCase":"key"},"changeLogType":{"description":"Changelog type","ignoreCase":"all","enum":["commitBased","issueBased"]},"changeLogLabels":{"type":"string","description":"Categories","ignoreCase":"key"}},"additionalProperties":false,"required":["gitHubConnection"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"cURL Upload Files\n\nUse cURL to upload files with FTP, FTPS, SFTP, HTTP, and more.","ignoreCase":"value","pattern":"^cURLUploader@1$"},"inputs":{"description":"cURL Upload Files inputs","properties":{"files":{"type":"string","description":"Files","ignoreCase":"key"},"username":{"type":"string","description":"Username","ignoreCase":"key"},"password":{"type":"string","description":"Password","ignoreCase":"key"},"url":{"type":"string","description":"URL","ignoreCase":"key"},"options":{"type":"string","description":"Optional Arguments","ignoreCase":"key"},"redirectStderr":{"type":"boolean","description":"Redirect Standard Error to Standard Out","ignoreCase":"key"}},"additionalProperties":false,"required":["files","url"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"cURL upload files\n\nUse cURL's supported protocols to upload files","ignoreCase":"value","pattern":"^cURLUploader@2$"},"inputs":{"description":"cURL upload files inputs","properties":{"files":{"type":"string","description":"Files","ignoreCase":"key"},"authType":{"description":"Authentication Method","ignoreCase":"all","enum":["ServiceEndpoint","UserAndPass"]},"serviceEndpoint":{"type":"string","description":"Service Connection","ignoreCase":"key"},"username":{"type":"string","description":"Username","ignoreCase":"key"},"password":{"type":"string","description":"Password","ignoreCase":"key"},"url":{"type":"string","description":"URL","ignoreCase":"key"},"remotePath":{"type":"string","description":"Remote Directory","ignoreCase":"key"},"options":{"type":"string","description":"Optional Arguments","ignoreCase":"key"},"redirectStderr":{"type":"boolean","description":"Redirect Standard Error to Standard Out","ignoreCase":"key"}},"additionalProperties":false,"required":["files"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure App Service Settings\n\nUpdate/Add App settings an Azure Web App for Linux or Windows","ignoreCase":"value","pattern":"^AzureAppServiceSettings@1$"},"inputs":{"description":"Azure App Service Settings inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"appName":{"type":"string","description":"App Service name","ignoreCase":"key"},"resourceGroupName":{"type":"string","description":"Resource group","ignoreCase":"key"},"slotName":{"type":"string","description":"Slot","ignoreCase":"key"},"appSettings":{"type":"string","description":"App settings","ignoreCase":"key"},"generalSettings":{"type":"string","description":"General settings","ignoreCase":"key"},"connectionStrings":{"type":"string","description":"Connection Strings","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","appName","resourceGroupName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Universal packages\n\nDownload or publish Universal Packages","ignoreCase":"value","pattern":"^UniversalPackages@0$"},"inputs":{"description":"Universal packages inputs","properties":{"command":{"description":"Command","ignoreCase":"all","enum":["download","publish"]},"downloadDirectory":{"type":"string","description":"Destination directory","ignoreCase":"key","aliases":["downloadDirectory"]},"feedsToUse":{"description":"Feed location","ignoreCase":"all","enum":["internal","external"],"aliases":["internalOrExternalDownload"]},"externalFeedCredentials":{"type":"string","description":"organization/collection connection","ignoreCase":"key","aliases":["externalEndpoint"]},"vstsFeed":{"type":"string","description":"Feed","ignoreCase":"key","aliases":["feedListDownload"]},"vstsFeedPackage":{"type":"string","description":"Package name","ignoreCase":"key","aliases":["packageListDownload"]},"vstsPackageVersion":{"type":"string","description":"Version","ignoreCase":"key","aliases":["versionListDownload"]},"feedDownloadExternal":{"type":"string","description":"Feed (or Project/Feed if the feed was created in a project)","ignoreCase":"key"},"packageDownloadExternal":{"type":"string","description":"Package name","ignoreCase":"key"},"versionDownloadExternal":{"type":"string","description":"Version","ignoreCase":"key"},"publishDirectory":{"type":"string","description":"Path to file(s) to publish","ignoreCase":"key","aliases":["publishDirectory"]},"feedsToUsePublish":{"description":"Feed location","ignoreCase":"all","enum":["internal","external"],"aliases":["internalOrExternalPublish"]},"publishFeedCredentials":{"type":"string","description":"organization/collection connection","ignoreCase":"key","aliases":["externalEndpoints"]},"vstsFeedPublish":{"type":"string","description":"Destination Feed","ignoreCase":"key","aliases":["feedListPublish"]},"publishPackageMetadata":{"type":"boolean","description":"Publish pipeline metadata","ignoreCase":"key"},"vstsFeedPackagePublish":{"type":"string","description":"Package name","ignoreCase":"key","aliases":["packageListPublish"]},"feedPublishExternal":{"type":"string","description":"Feed (or Project/Feed if the feed was created in a project)","ignoreCase":"key"},"packagePublishExternal":{"type":"string","description":"Package name","ignoreCase":"key"},"versionOption":{"description":"Version","ignoreCase":"all","enum":["major","minor","patch","custom"],"aliases":["versionPublishSelector"]},"versionPublish":{"type":"string","description":"Custom version","ignoreCase":"key"},"packagePublishDescription":{"type":"string","description":"Description","ignoreCase":"key"},"verbosity":{"description":"Verbosity","ignoreCase":"all","enum":["None","Trace","Debug","Information","Warning","Error","Critical"]},"publishedPackageVar":{"type":"string","description":"Package Output Variable","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Check Azure Policy compliance\n\nSecurity and compliance assessment for Azure Policy","ignoreCase":"value","pattern":"^AzurePolicyCheckGate@0$"},"inputs":{"description":"Check Azure Policy compliance inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"ResourceGroupName":{"type":"string","description":"Resource group","ignoreCase":"key"},"Resources":{"type":"string","description":"Resource name","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","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":{"description":"MicroBuild Retain Azure DevOps Drops\n\nRetains one or more Azure DevOps Drops permanently","ignoreCase":"value","pattern":"^MicroBuildRetainVstsDrops@1$"},"inputs":{"description":"MicroBuild Retain Azure DevOps Drops inputs","properties":{"DropNames":{"type":"string","description":"Drop Names","ignoreCase":"key"},"AccessToken":{"type":"string","description":"Drop Service Access Token","ignoreCase":"key"},"DropServiceUri":{"type":"string","description":"Drop Service Uri","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["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":{"description":"Bash\n\nRun a Bash script on macOS, Linux, or Windows","ignoreCase":"value","pattern":"^Bash@3$"},"inputs":{"description":"Bash inputs","properties":{"targetType":{"description":"Type","ignoreCase":"all","enum":["filePath","inline"]},"filePath":{"type":"string","description":"Script Path","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"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"},"bashEnvValue":{"type":"string","description":"Set value for BASH_ENV environment variable","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Publish build artifacts\n\nPublish build artifacts to Azure Pipelines or a Windows file share","ignoreCase":"value","pattern":"^PublishBuildArtifacts@1$"},"inputs":{"description":"Publish build artifacts inputs","properties":{"PathtoPublish":{"type":"string","description":"Path to publish","ignoreCase":"key"},"ArtifactName":{"type":"string","description":"Artifact name","ignoreCase":"key"},"publishLocation":{"description":"Artifact publish location","ignoreCase":"all","enum":["Container","FilePath"],"aliases":["ArtifactType"]},"TargetPath":{"type":"string","description":"File share path","ignoreCase":"key"},"Parallel":{"type":"boolean","description":"Parallel copy","ignoreCase":"key"},"ParallelCount":{"type":"integer","description":"Parallel count","ignoreCase":"key"},"FileCopyOptions":{"type":"string","description":"File copy options","ignoreCase":"key"},"StoreAsTar":{"type":"boolean","description":"Tar the artifact before uploading","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Install SSH key\n\nInstall an SSH key prior to a build or deployment","ignoreCase":"value","pattern":"^InstallSSHKey@0$"},"inputs":{"description":"Install SSH key inputs","properties":{"knownHostsEntry":{"type":"string","description":"Known Hosts Entry","ignoreCase":"key","aliases":["hostName"]},"sshPublicKey":{"type":"string","description":"SSH Public Key","ignoreCase":"key"},"sshPassphrase":{"type":"string","description":"SSH Passphrase","ignoreCase":"key"},"sshKeySecureFile":{"type":"string","description":"SSH Key","ignoreCase":"key"},"addEntryToConfig":{"type":"boolean","description":"Add entry to SSH config","ignoreCase":"key"},"configHostAlias":{"type":"string","description":"Alias","ignoreCase":"key"},"configHostname":{"type":"string","description":"Host name","ignoreCase":"key"},"configUser":{"type":"string","description":"User","ignoreCase":"key"},"configPort":{"type":"string","description":"Port","ignoreCase":"key"}},"additionalProperties":false,"required":["knownHostsEntry","sshKeySecureFile"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure VM scale set deployment\n\nDeploy a virtual machine scale set image","ignoreCase":"value","pattern":"^AzureVmssDeployment@0$"},"inputs":{"description":"Azure VM scale set deployment inputs","properties":{"azureSubscription":{"type":"string","description":"Azure subscription","ignoreCase":"key","aliases":["ConnectedServiceName"]},"action":{"description":"Action","ignoreCase":"all","enum":["Update image","Configure application startup"]},"vmssName":{"type":"string","description":"Virtual Machine scale set name","ignoreCase":"key"},"vmssOsType":{"description":"OS type","ignoreCase":"all","enum":["Windows","Linux"]},"imageUrl":{"type":"string","description":"Image URL","ignoreCase":"key"},"customScriptsDirectory":{"type":"string","description":"Custom script directory","ignoreCase":"key"},"customScript":{"type":"string","description":"Command","ignoreCase":"key"},"customScriptArguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"customScriptsStorageAccount":{"type":"string","description":"Azure storage account where custom scripts will be uploaded","ignoreCase":"key"},"skipArchivingCustomScripts":{"type":"boolean","description":"Skip Archiving custom scripts","ignoreCase":"key"}},"additionalProperties":false,"required":["azureSubscription","vmssName","vmssOsType","imageUrl"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Tag Build or Release\n\nAdds tags to a build or release","ignoreCase":"value","pattern":"^tagBuildOrRelease@0$"},"inputs":{"description":"Tag Build or Release inputs","properties":{"type":{"description":"Type","ignoreCase":"all","enum":["Build","Release"]},"tags":{"type":"string","description":"Tags","ignoreCase":"key"}},"additionalProperties":false,"required":["tags"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure App Service: Classic (Deprecated)\n\nCreate or update Azure App Service using Azure PowerShell","ignoreCase":"value","pattern":"^AzureWebPowerShellDeployment@1$"},"inputs":{"description":"Azure App Service: Classic (Deprecated) inputs","properties":{"ConnectedServiceName":{"type":"string","description":"Azure Subscription (Classic)","ignoreCase":"key"},"WebSiteLocation":{"type":"string","description":"Web App Location","ignoreCase":"key"},"WebSiteName":{"type":"string","description":"Web App Name","ignoreCase":"key"},"Slot":{"type":"string","description":"Slot","ignoreCase":"key"},"Package":{"type":"string","description":"Web Deploy Package","ignoreCase":"key"},"doNotDelete":{"type":"boolean","description":"Set DoNotDelete flag","ignoreCase":"key"},"AdditionalArguments":{"type":"string","description":"Additional Arguments","ignoreCase":"key"}},"additionalProperties":false,"required":["ConnectedServiceName","WebSiteLocation","WebSiteName","Package"]}},"deprecationMessage":"AzureWebPowerShellDeployment is deprecated - Create or update Azure App Service using Azure PowerShell","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Azure Cloud Service deployment\n\nDeploy an Azure Cloud Service","ignoreCase":"value","pattern":"^AzureCloudPowerShellDeployment@1$"},"inputs":{"description":"Azure Cloud Service deployment inputs","properties":{"azureClassicSubscription":{"type":"string","description":"Azure subscription (Classic)","ignoreCase":"key","aliases":["ConnectedServiceName"]},"EnableAdvancedStorageOptions":{"type":"boolean","description":"Enable ARM storage support","ignoreCase":"key"},"StorageAccount":{"type":"string","description":"Storage account (Classic)","ignoreCase":"key"},"ARMConnectedServiceName":{"type":"string","description":"Azure subscription (ARM)","ignoreCase":"key"},"ARMStorageAccount":{"type":"string","description":"Storage account (ARM)","ignoreCase":"key"},"ServiceName":{"type":"string","description":"Service name","ignoreCase":"key"},"ServiceLocation":{"type":"string","description":"Service location","ignoreCase":"key"},"CsPkg":{"type":"string","description":"CsPkg","ignoreCase":"key"},"CsCfg":{"type":"string","description":"CsCfg","ignoreCase":"key"},"slotName":{"type":"string","description":"Environment (Slot)","ignoreCase":"key","aliases":["Slot"]},"DeploymentLabel":{"type":"string","description":"Deployment label","ignoreCase":"key"},"AppendDateTimeToLabel":{"type":"boolean","description":"Append current date and time","ignoreCase":"key"},"AllowUpgrade":{"type":"boolean","description":"Allow upgrade","ignoreCase":"key"},"SimultaneousUpgrade":{"type":"boolean","description":"Simultaneous upgrade","ignoreCase":"key"},"ForceUpgrade":{"type":"boolean","description":"Force upgrade","ignoreCase":"key"},"VerifyRoleInstanceStatus":{"type":"boolean","description":"Verify role instance status","ignoreCase":"key"},"DiagnosticStorageAccountKeys":{"type":"string","description":"Diagnostic storage account keys","ignoreCase":"key"},"NewServiceCustomCertificates":{"type":"string","description":"Custom certificates to import","ignoreCase":"key"},"NewServiceAdditionalArguments":{"type":"string","description":"Additional arguments","ignoreCase":"key"},"NewServiceAffinityGroup":{"type":"string","description":"Affinity group","ignoreCase":"key"}},"additionalProperties":false,"required":["azureClassicSubscription","ServiceName","ServiceLocation","CsPkg","CsCfg"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Delete files\n\nDelete folders, or files matching a pattern","ignoreCase":"value","pattern":"^DeleteFiles@1$"},"inputs":{"description":"Delete files inputs","properties":{"SourceFolder":{"type":"string","description":"Source Folder","ignoreCase":"key"},"Contents":{"type":"string","description":"Contents","ignoreCase":"key"},"RemoveSourceFolder":{"type":"boolean","description":"Remove SourceFolder","ignoreCase":"key"},"RemoveDotFiles":{"type":"boolean","description":"Remove files starting with a dot","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"gulp\n\nRun the gulp Node.js streaming task-based build system","ignoreCase":"value","pattern":"^gulp@1$"},"inputs":{"description":"gulp inputs","properties":{"gulpFile":{"type":"string","description":"gulp File Path","ignoreCase":"key"},"targets":{"type":"string","description":"gulp Task(s)","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["cwd"]},"gulpjs":{"type":"string","description":"gulp.js location","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"},"enableCodeCoverage":{"type":"boolean","description":"Enable code Coverage","ignoreCase":"key"},"testFramework":{"description":"Test Framework","ignoreCase":"all","enum":["Mocha","Jasmine"]},"srcFiles":{"type":"string","description":"Source Files","ignoreCase":"key"},"testFiles":{"type":"string","description":"Test Script Files","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"gulp\n\nRun the gulp Node.js streaming task-based build system","ignoreCase":"value","pattern":"^gulp@0$"},"inputs":{"description":"gulp inputs","properties":{"gulpFile":{"type":"string","description":"gulp File Path","ignoreCase":"key"},"targets":{"type":"string","description":"gulp Task(s)","ignoreCase":"key"},"arguments":{"type":"string","description":"Arguments","ignoreCase":"key"},"workingDirectory":{"type":"string","description":"Working Directory","ignoreCase":"key","aliases":["cwd"]},"gulpjs":{"type":"string","description":"gulp.js location","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"},"enableCodeCoverage":{"type":"boolean","description":"Enable code Coverage","ignoreCase":"key"},"testFramework":{"description":"Test Framework","ignoreCase":"all","enum":["Mocha","Jasmine"]},"srcFiles":{"type":"string","description":"Source Files","ignoreCase":"key"},"testFiles":{"type":"string","description":"Test Script Files","ignoreCase":"key"}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]},{"properties":{"task":{"description":"Cloud-based web performance test\n\nRun a quick web performance test in the cloud with Azure Pipelines","ignoreCase":"value","pattern":"^QuickPerfTest@1$"},"inputs":{"description":"Cloud-based web performance test inputs","properties":{"connectedServiceName":{"type":"string","description":"Azure Pipelines Connection","ignoreCase":"key"},"websiteUrl":{"type":"string","description":"Website URL","ignoreCase":"key"},"testName":{"type":"string","description":"Test Name","ignoreCase":"key"},"vuLoad":{"description":"User Load","ignoreCase":"all","enum":["25","50","100","250"]},"runDuration":{"description":"Run Duration (sec)","ignoreCase":"all","enum":["60","120","180","240","300"]},"geoLocation":{"description":"Load Location","ignoreCase":"all","enum":["Default","Australia East","Australia Southeast","Brazil South","Central India","Central US","East Asia","East US 2","East US","Japan East","Japan West","North Central US","North Europe","South Central US","South India","Southeast Asia","West Europe","West US"]},"machineType":{"description":"Run load test using","ignoreCase":"all","enum":["0","2"]},"resourceGroupName":{"type":"string","description":"Resource group rig","ignoreCase":"key"},"numOfSelfProvisionedAgents":{"type":"integer","description":"No. of agents to use","ignoreCase":"key"},"avgResponseTimeThreshold":{"type":"string","description":"Fail test if Avg.Response Time(ms) exceeds","ignoreCase":"key"}},"additionalProperties":false,"required":["websiteUrl","testName"]}},"deprecationMessage":"QuickPerfTest is deprecated - Run a quick web performance test in the cloud with Azure Pipelines","doNotSuggest":true,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"IIS web app manage\n\nCreate or update websites, web apps, virtual directories, or application pools","ignoreCase":"value","pattern":"^IISWebAppManagementOnMachineGroup@0$"},"inputs":{"description":"IIS web app manage inputs","properties":{"EnableIIS":{"type":"boolean","description":"Enable IIS","ignoreCase":"key"},"IISDeploymentType":{"description":"Configuration type","ignoreCase":"all","enum":["IISWebsite","IISWebApplication","IISVirtualDirectory","IISApplicationPool"]},"ActionIISWebsite":{"description":"Action","ignoreCase":"all","enum":["CreateOrUpdateWebsite","StartWebsite","StopWebsite"]},"ActionIISApplicationPool":{"description":"Action","ignoreCase":"all","enum":["CreateOrUpdateAppPool","StartAppPool","StopAppPool","RecycleAppPool"]},"StartStopWebsiteName":{"type":"string","description":"Website name","ignoreCase":"key"},"WebsiteName":{"type":"string","description":"Website name","ignoreCase":"key"},"WebsitePhysicalPath":{"type":"string","description":"Physical path","ignoreCase":"key"},"WebsitePhysicalPathAuth":{"description":"Physical path authentication","ignoreCase":"all","enum":["WebsiteUserPassThrough","WebsiteWindowsAuth"]},"WebsiteAuthUserName":{"type":"string","description":"Username","ignoreCase":"key"},"WebsiteAuthUserPassword":{"type":"string","description":"Password","ignoreCase":"key"},"AddBinding":{"type":"boolean","description":"Add binding","ignoreCase":"key"},"Protocol":{"description":"Protocol","ignoreCase":"all","enum":["https","http"]},"IPAddress":{"type":"string","description":"IP address","ignoreCase":"key"},"Port":{"type":"string","description":"Port","ignoreCase":"key"},"ServerNameIndication":{"type":"boolean","description":"Server Name Indication required","ignoreCase":"key"},"HostNameWithOutSNI":{"type":"string","description":"Host name","ignoreCase":"key"},"HostNameWithHttp":{"type":"string","description":"Host name","ignoreCase":"key"},"HostNameWithSNI":{"type":"string","description":"Host name","ignoreCase":"key"},"SSLCertThumbPrint":{"type":"string","description":"SSL certificate thumbprint","ignoreCase":"key"},"Bindings":{"type":"string","description":"Add bindings","ignoreCase":"key"},"CreateOrUpdateAppPoolForWebsite":{"type":"boolean","description":"Create or update app pool","ignoreCase":"key"},"ConfigureAuthenticationForWebsite":{"type":"boolean","description":"Configure authentication","ignoreCase":"key"},"AppPoolNameForWebsite":{"type":"string","description":"Name","ignoreCase":"key"},"DotNetVersionForWebsite":{"description":".NET version","ignoreCase":"all","enum":["v4.0","v2.0","No Managed Code"]},"PipeLineModeForWebsite":{"description":"Managed pipeline mode","ignoreCase":"all","enum":["Integrated","Classic"]},"AppPoolIdentityForWebsite":{"description":"Identity","ignoreCase":"all","enum":["ApplicationPoolIdentity","LocalService","LocalSystem","NetworkService","SpecificUser"]},"AppPoolUsernameForWebsite":{"type":"string","description":"Username","ignoreCase":"key"},"AppPoolPasswordForWebsite":{"type":"string","description":"Password","ignoreCase":"key"},"AnonymousAuthenticationForWebsite":{"type":"boolean","description":"Anonymous authentication","ignoreCase":"key"},"BasicAuthenticationForWebsite":{"type":"boolean","description":"Basic authentication","ignoreCase":"key"},"WindowsAuthenticationForWebsite":{"type":"boolean","description":"Windows authentication","ignoreCase":"key"},"ParentWebsiteNameForVD":{"type":"string","description":"Parent website name","ignoreCase":"key"},"VirtualPathForVD":{"type":"string","description":"Virtual path","ignoreCase":"key"},"PhysicalPathForVD":{"type":"string","description":"Physical path","ignoreCase":"key"},"VDPhysicalPathAuth":{"description":"Physical path authentication","ignoreCase":"all","enum":["VDUserPassThrough","VDWindowsAuth"]},"VDAuthUserName":{"type":"string","description":"Username","ignoreCase":"key"},"VDAuthUserPassword":{"type":"string","description":"Password","ignoreCase":"key"},"ParentWebsiteNameForApplication":{"type":"string","description":"Parent website name","ignoreCase":"key"},"VirtualPathForApplication":{"type":"string","description":"Virtual path","ignoreCase":"key"},"PhysicalPathForApplication":{"type":"string","description":"Physical path","ignoreCase":"key"},"ApplicationPhysicalPathAuth":{"description":"Physical path authentication","ignoreCase":"all","enum":["ApplicationUserPassThrough","ApplicationWindowsAuth"]},"ApplicationAuthUserName":{"type":"string","description":"Username","ignoreCase":"key"},"ApplicationAuthUserPassword":{"type":"string","description":"Password","ignoreCase":"key"},"CreateOrUpdateAppPoolForApplication":{"type":"boolean","description":"Create or update app pool","ignoreCase":"key"},"AppPoolNameForApplication":{"type":"string","description":"Name","ignoreCase":"key"},"DotNetVersionForApplication":{"description":".NET version","ignoreCase":"all","enum":["v4.0","v2.0","No Managed Code"]},"PipeLineModeForApplication":{"description":"Managed pipeline mode","ignoreCase":"all","enum":["Integrated","Classic"]},"AppPoolIdentityForApplication":{"description":"Identity","ignoreCase":"all","enum":["ApplicationPoolIdentity","LocalService","LocalSystem","NetworkService","SpecificUser"]},"AppPoolUsernameForApplication":{"type":"string","description":"Username","ignoreCase":"key"},"AppPoolPasswordForApplication":{"type":"string","description":"Password","ignoreCase":"key"},"AppPoolName":{"type":"string","description":"Name","ignoreCase":"key"},"DotNetVersion":{"description":".NET version","ignoreCase":"all","enum":["v4.0","v2.0","No Managed Code"]},"PipeLineMode":{"description":"Managed pipeline mode","ignoreCase":"all","enum":["Integrated","Classic"]},"AppPoolIdentity":{"description":"Identity","ignoreCase":"all","enum":["ApplicationPoolIdentity","LocalService","LocalSystem","NetworkService","SpecificUser"]},"AppPoolUsername":{"type":"string","description":"Username","ignoreCase":"key"},"AppPoolPassword":{"type":"string","description":"Password","ignoreCase":"key"},"StartStopRecycleAppPoolName":{"type":"string","description":"Application pool name","ignoreCase":"key"},"AppCmdCommands":{"type":"string","description":"Additional appcmd.exe commands","ignoreCase":"key"}},"additionalProperties":false,"required":["WebsiteName","Bindings","AppPoolNameForWebsite","ParentWebsiteNameForVD","VirtualPathForVD","ParentWebsiteNameForApplication","VirtualPathForApplication","AppPoolNameForApplication","AppPoolName"]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task","inputs"]},{"properties":{"task":{"description":"Docker CLI installer\n\nInstall Docker CLI on agent machine.","ignoreCase":"value","pattern":"^DockerInstaller@0$"},"inputs":{"description":"Docker CLI installer inputs","properties":{"dockerVersion":{"type":"string","description":"Docker Version","ignoreCase":"key"},"releaseType":{"description":"Release type","ignoreCase":"all","enum":["stable","edge","test","nightly"]}},"additionalProperties":false,"required":[]}},"doNotSuggest":false,"firstProperty":["task"],"required":["task"]}]}}} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index ccc3ec8cb..85a3417f6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -17,12 +17,14 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - // Create a temp profile that has no extensions / user settings. - // This allows us to only have the C# extension + the dotnet runtime installer extension dependency. - "--profile-temp", - "${workspaceRoot}/test/integrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace", + // Launch VSCode using a specific profile to ensure that user settings are not used. + // This profile must be imported into vscode before running this launch configuration. + // The profile can be found under /test/csharp-standalone-profile. + "--profile", + "csharp-standalone-profile", + "${workspaceRoot}/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace", "--extensionDevelopmentPath=${workspaceRoot}", - "--extensionTestsPath=${workspaceRoot}/out/test/integrationTests" + "--extensionTestsPath=${workspaceRoot}/out/test/lsptoolshost/integrationTests" ], "env": { "CODE_EXTENSIONS_PATH": "${workspaceRoot}", @@ -40,12 +42,14 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - // Create a temp profile that has no extensions / user settings. - // This allows us to only have the C# extension + the dotnet runtime installer extension dependency. - "--profile-temp", - "${workspaceRoot}/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/lsp_tools_host_BasicRazorApp2_1.code-workspace", + // Launch VSCode using a specific profile to ensure that user settings are not used. + // This profile must be imported into vscode before running this launch configuration. + // The profile can be found under /test/csharp-standalone-profile. + "--profile", + "csharp-standalone-profile", + "${workspaceRoot}/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/lsp_tools_host_BasicRazorApp2_1.code-workspace", "--extensionDevelopmentPath=${workspaceRoot}", - "--extensionTestsPath=${workspaceRoot}/out/test/razorIntegrationTests" + "--extensionTestsPath=${workspaceRoot}/out/test/razor/razorIntegrationTests" ], "env": { "CODE_EXTENSIONS_PATH": "${workspaceRoot}", @@ -63,12 +67,14 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - // Create a temp profile that has no extensions / user settings. - // This allows us to only have the C# extension + the dotnet runtime installer extension dependency. - "--profile-temp", - "${workspaceRoot}/omnisharptest/omnisharpIntegrationTests/testAssets/${input:omnisharpAssetName}/.vscode/omnisharp_${input:omnisharpAssetName}.code-workspace", + // Launch VSCode using a specific profile to ensure that user settings are not used. + // This profile must be imported into vscode before running this launch configuration. + // The profile can be found under /test/csharp-standalone-profile. + "--profile", + "csharp-standalone-profile", + "${workspaceRoot}/test/omnisharp/omnisharpIntegrationTests/testAssets/${input:omnisharpAssetName}/.vscode/omnisharp_${input:omnisharpAssetName}.code-workspace", "--extensionDevelopmentPath=${workspaceRoot}", - "--extensionTestsPath=${workspaceRoot}/out/omnisharptest/omnisharpIntegrationTests" + "--extensionTestsPath=${workspaceRoot}/out/test/omnisharp/omnisharpIntegrationTests" ], "env": { "CODE_EXTENSIONS_PATH": "${workspaceRoot}", @@ -86,12 +92,14 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - // Create a temp profile that has no extensions / user settings. - // This allows us to only have the C# extension + the dotnet runtime installer extension dependency. - "--profile-temp", - "${workspaceRoot}/omnisharptest/omnisharpIntegrationTests/testAssets/${input:omnisharpAssetName}/.vscode/omnisharp_lsp_${input:omnisharpAssetName}.code-workspace", + // Launch VSCode using a specific profile to ensure that user settings are not used. + // This profile must be imported into vscode before running this launch configuration. + // The profile can be found under /test/csharp-standalone-profile. + "--profile", + "csharp-standalone-profile", + "${workspaceRoot}/test/omnisharp/omnisharpIntegrationTests/testAssets/${input:omnisharpAssetName}/.vscode/omnisharp_lsp_${input:omnisharpAssetName}.code-workspace", "--extensionDevelopmentPath=${workspaceRoot}", - "--extensionTestsPath=${workspaceRoot}/out/omnisharptest/omnisharpIntegrationTests" + "--extensionTestsPath=${workspaceRoot}/out/test/omnisharp/omnisharpIntegrationTests" ], "env": { "CODE_EXTENSIONS_PATH": "${workspaceRoot}", diff --git a/.vscodeignore b/.vscodeignore index dacfc4c57..b4e55e60b 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -14,11 +14,10 @@ .vscode-test/** coverage/** out/** -server/** +msbuild/** src/** tasks/** test/** -omnisharptest/** __mocks__/** jest.config.ts baseJestConfig.ts @@ -34,6 +33,9 @@ azure-pipelines .editorconfig .gitignore CODEOWNERS +Directory.Build.props +global.json +NuGet.config gulpfile.ts !install.Lock ISSUE_TEMPLATE diff --git a/CHANGELOG.md b/CHANGELOG.md index 4efee44ae..a6e135efa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,18 +4,54 @@ - Debug from .csproj and .sln [#5876](https://github.com/dotnet/vscode-csharp/issues/5876) # Latest +* Add signing support to VSIX (PR: [#7490](https://github.com/dotnet/vscode-csharp/pull/7490)) +* Update Debugger to v2.47.0 (PR: [#7547](https://github.com/dotnet/vscode-csharp/pull/7547)) + * Adds in support for .NET 9 Break for Async User-Unhandled +* Do not inject 'debugConsoleVerbosity' for 'coreclr' (PR: [#7546](https://github.com/dotnet/vscode-csharp/pull/7546)) +* Do not auto surround `<`, `[` and `(` in XAML. (PR: [#7540](https://github.com/dotnet/vscode-csharp/pull/7540)) +* Fix resolve fix all code action (PR: [#7536](https://github.com/dotnet/vscode-csharp/pull/7536)) +* Update Roslyn to 4.12.0-3.24463.6 (PR: [#7564](https://github.com/dotnet/vscode-csharp/pull/7564)) + * Fix order modifiers code action not showing up in vscode (PR: [#75092](https://github.com/dotnet/roslyn/pull/75092)) + * Log unit test output (PR: [#75084](https://github.com/dotnet/roslyn/pull/75084)) + * Fix issue where closing sourcelink document threw if not opened (PR: [#75046](https://github.com/dotnet/roslyn/pull/75046)) + * Expose sourcelink option to VSCode (PR: [#75044](https://github.com/dotnet/roslyn/pull/75044)) + * Report source generator failures in Hot Reload diagnostics (PR: [#75029](https://github.com/dotnet/roslyn/pull/75029)) + * Fix issue navigating from source link documents (PR: [#75030](https://github.com/dotnet/roslyn/pull/75030)) +* Bump xamltools to 17.12.35311.18 (PR: [#7549](https://github.com/dotnet/vscode-csharp/pull/7549)) + * XAML color swatches + +# 2.47.x +* Update Roslyn to 4.12.0-3.24456.2 (PR: [#7525](https://github.com/dotnet/vscode-csharp/pull/7525)) + * Avoid BuildHost crash in Mono due to missing types (PR: [#74994](https://github.com/dotnet/roslyn/pull/74994)) +* Turn off word suggestions in XAML completions (PR: [#7516](https://github.com/dotnet/vscode-csharp/pull/7516)) +* Bump xamltools to 17.12.35305.252 (PR: [#7521](https://github.com/dotnet/vscode-csharp/pull/7521)) + * XAML editor enabled various lightbulbs related to x:DataType, BindingContext and Bindings. + +# 2.46.x +* Update Roslyn to 4.12.0-3.24430.2 (PR: [#7496](https://github.com/dotnet/vscode-csharp/pull/7496)) +* Bump Razor to 9.0.0-preview.24427.2 (PR: [#7471](https://github.com/dotnet/vscode-csharp/pull/7471)) + * Suppress unique ids (#10791) (PR: [#10791](https://github.com/dotnet/razor/pull/10791)) + * Self-versioned documents (#10747) (PR: [#10747](https://github.com/dotnet/razor/pull/10747)) + * Remove ItemCollection from CodeRenderingContext (#10764) (PR: [#10764](https://github.com/dotnet/razor/pull/10764)) + * Moving formatting service to common layer (#10761) (PR: [#10761](https://github.com/dotnet/razor/pull/10761)) + * Allow LSP and cohosting to provide specialized methods to get a syntax tree (#10765) (PR: [#10765](https://github.com/dotnet/razor/pull/10765)) + * Update NOTICE.txt (#10768) (PR: [#10768](https://github.com/dotnet/razor/pull/10768)) + * Allow @@ as a fallback (#10752) (PR: [#10752](https://github.com/dotnet/razor/pull/10752)) + * Support component rename from an end tag (#10762) (PR: [#10762](https://github.com/dotnet/razor/pull/10762)) +* Bump xamltools to 17.12.35230.10 (PR: [#7493](https://github.com/dotnet/vscode-csharp/pull/7493)) + +# 2.45.25 * Bump Roslyn to 4.12.0-2.24461.7 (PR: [#7544](https://github.com/dotnet/vscode-csharp/pull/7544)) * Fix crash when closing source link documents (PR: [#75047](https://github.com/dotnet/roslyn/pull/75047)) * Add option to disable source link (PR: [#75047](https://github.com/dotnet/roslyn/pull/75047)) * Fix issue navigating from source link documents (PR: [#75033](https://github.com/dotnet/roslyn/pull/75033)) * Fix exception applying fix all code action (PR: [#7537](https://github.com/dotnet/vscode-csharp/pull/7537)) -# 2.45.20 +# 2.45.17 * Fix check for rzls being present (PR: [#7462](https://github.com/dotnet/vscode-csharp/pull/7462)) * Bump Razor to 9.0.0-preview.24418.1 (PR: [#7456](https://github.com/dotnet/vscode-csharp/pull/7456)) * Don't add already known documents to the misc files project (#10753) (PR: [#10753](https://github.com/dotnet/razor/pull/10753)) * Remove ItemCollection from TagHelperDescriptorProviderContext (#10720) (PR: [#10720](https://github.com/dotnet/razor/pull/10720)) - * Cohost inlay hint support (#10672) (PR: [#10672](https://github.com/dotnet/razor/pull/10672)) * Fix excerpt service to allow for multi line verbatim strings (#10675) (PR: [#10675](https://github.com/dotnet/razor/pull/10675)) * Fix attribute parsing recovery (#10620) (PR: [#10620](https://github.com/dotnet/razor/pull/10620)) * Turn off trailing whitespace triming in strings (#10646) (PR: [#10646](https://github.com/dotnet/razor/pull/10646)) @@ -32,7 +68,7 @@ * Added XAML Hot Reload support for x:FactoryMethod and x:Arguments * Bump xamltools to 17.12.35304.30 (PR: [#7507](https://github.com/dotnet/vscode-csharp/pull/7508)) -# 2.44.x +# 2.44.19 * Bump Roslyn to 4.12.0-2.24416.3 (PR: [#7448](https://github.com/dotnet/vscode-csharp/pull/7448)) * Use EnableCodeStyleSeverity instead of AnalysisLevel to control new diagnostic severity behavior (PR: [#73843](https://github.com/dotnet/roslyn/pull/73843)) * Cleanup LSP error reporting (PR: [#74530](https://github.com/dotnet/roslyn/pull/74530)) @@ -59,7 +95,7 @@ * Task 2187810: [VS Code] Add OnEnter rules to indent tags (PR: [#7426](https://github.com/dotnet/vscode-csharp/pull/7426)) * Fix completion handler bug that causes language server to crash (#7401) (PR: [#7406](https://github.com/dotnet/vscode-csharp/pull/7406)) -# 2.41.x +# 2.41.26 * Bump Roslyn to 4.12.0-1.24376.3 (PR: [#7393](https://github.com/dotnet/vscode-csharp/pull/7393)) * Fix race condition in LSP FindAllReferences when linked files were involved.(PR: [#74566](https://github.com/dotnet/roslyn/pull/74566)) * Fix dll load issue when loading Razor projects in VSCode (PR: [#74570](https://github.com/dotnet/roslyn/pull/74570)) @@ -86,7 +122,7 @@ * `dotnet.implementType.insertionBehavior` to `dotnet.typeMembers.memberInsertionLocation` * `dotnet.implementType.propertyGenerationBehavior` to `dotnet.typeMembers.propertyGenerationBehavior` -# 2.39.x +# 2.39.29 * Add language status bar item displaying project context for open files (PR: [#7321](https://github.com/dotnet/vscode-csharp/pull/7321), PR: [#7333](https://github.com/dotnet/vscode-csharp/pull/7333)) * Add language status bar item for workspace status (C# standalone) (PR: [#7254](https://github.com/dotnet/vscode-csharp/pull/7254), PR: [#7329])https://github.com/dotnet/vscode-csharp/pull/7329)) * Update Razor to 9.0.0-preview.24365.1 (PR: [#7354](https://github.com/dotnet/vscode-csharp/pull/7354)) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93b8c2810..d885f3285 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ Setting up your local development environment for the vscode-csharp repository i Before you start, make sure you have the following software installed on your machine: -* Node.js v18 ([v18.17.0 LTS](https://nodejs.org/en/blog/release/v18.17.0)). +* Node.js v20 ([v20.17.0 LTS](https://nodejs.org/en/blog/release/v20.17.0)). * Note - Building with higher major versions of Node.js is not advised - it may work but we do not test it. * Npm (The version shipped with node is fine) * .NET 8.0 SDK (dotnet should be on your path) @@ -36,9 +36,10 @@ Follow these steps to build, run, and test the repository: #### Building 1. Run `npm i` - This command installs the project dependencies. -2. Run `npm i -g gulp` - This command installs Gulp globally. -3. Run `gulp installDependencies` - This command downloads the various dependencies as specified by the version in the [package.json](package.json) file. -4. Run `code .` - This command opens the project in Visual Studio Code. +2. Run `vsts-npm-auth -config .npmrc` - This command will configure your credentials for the next command. +3. Run `npm i -g gulp` - This command installs Gulp globally. +4. Run `gulp installDependencies` - This command downloads the various dependencies as specified by the version in the [package.json](package.json) file. +5. Run `code .` - This command opens the project in Visual Studio Code. #### Running @@ -50,12 +51,16 @@ After completing the build steps: #### Testing -To run tests: +To run all tests, execute `npm run test`. -1. Execute `npm run test` or press F5 in VS Code with the "Launch Tests" debug configuration selected. -2. For integration tests, select either of the two 'current file' integration tests (one for roslyn and one for razor), from the drop-down and press F5 to start debugging: -- For Roslyn Server: `Launch Current File slnWithCsproj Integration Tests` -- For Razor Server: `Launch Current File BasicRazorApp2_1 Integration Tests` +To debug unit tests locally, press F5 in VS Code with the "Launch Tests" debug configuration selected. + +To debug integration tests +1. Import the `csharp-standalone-profile.code-profile` in VSCode to setup a clean profile in which to run integration tests. This must be imported at least once to use the launch configurations. +2. Open any integration test file and F5 launch with the correct launch configuration selected. + - For integration tests inside `test/lsptoolshost`, use `Launch Current File slnWithCsproj Integration Tests` + - For integration tests inside `test/razor`, use `Launch Current File BasicRazorApp2_1 Integration Tests` + - For integration tests inside `test/omnisharp`, use one of the `Omnisharp:` current file profiles These will allow you to actually debug the test, but the 'Razor integration tests' configuration does not. @@ -141,6 +146,11 @@ Or, in VSCode settings (`Ctrl+,`): 3. Enable `razor.languageServer.debug`. 4. Set `razor.server.trace` to `Debug`. This gives you more detailed log messages in the output window. +### Updating NPM packages +We use the .NET eng AzDo artifacts feed https://dnceng.pkgs.visualstudio.com/public/_packaging/dotnet-public-npm/npm/registry/ with upstreams to the public npm registry. +Auth is required in order to pull new packages from the upstream. This can be done by running `vsts-npm-auth -config .npmrc`. +If you need to renew authorization, you can force it via `vsts-npm-auth -config .npmrc -F` + ## Creating VSIX Packages for the Extension To package this extension, we need to create VSIX Packages. The VSIX packages can be created using the gulp command `gulp vsix:release:package`. This will create all the platform specific VSIXs that you can then install manually in VSCode. diff --git a/Directory.Build.props b/Directory.Build.props index e539c06ca..3720f4d06 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,5 +1,6 @@ + $(MSBuildThisFileDirectory) - + - ../out/.nuget/ - - $(RestorePackagesPath)obj/ - - $(LowestSupportedTargetFramework) + ../../out/.nuget/ + netstandard2.0 true diff --git a/msbuild/signing/SIGNING.md b/msbuild/signing/SIGNING.md new file mode 100644 index 000000000..4928a851c --- /dev/null +++ b/msbuild/signing/SIGNING.md @@ -0,0 +1,32 @@ +# Overview +The C# extension needs to be signed with MSFT signatures in order to be uploaded to the marketplace. + +Server side components should be signed when those artifacts are generated (e.g. Roslyn build signs Roslyn artifacts). However we also need to sign the artifacts we generate in the extension- +1. The extension JS code. +2. The VSIX's we produce +3. For MSFT publishing, we must also generate a signed manifest. + +Official builds are responsible for signing. We only real sign builds from the `prerelease` or `release` branches, everything else is test signed. + +## Signing Steps + +### Signing JS +As part of packaging, the extension TS/JS code is compiled/minified into the `dist/` folder which gets distributed inside the VSIX. The contents of `dist/` are generated by the `vscode:prepublish` NPM target, which is run by `vsce` during packaging. + +After the JS code is generated, but before it gets packaged we need to sign it. This is handled by running the `gulp signJs` target as a part of `vscode:prepublish`. Internally the gulp task delegates to the `signJs/signJs.proj` project to configure what and how to sign using MicroBuild. + +### Signing VSIX +Once we've generated the VSIX with the signed JS contents, we also need to sign the VSIX. VSIX signing for VSCode is a bit different from VS. Instead of submitting the VSIX itself to be signed, we submit a copy of the manifest file to the signing service. + +To do this, as the last step of VSIX packaging (in `gulp vsix:release:package`) we call out to `vsce generate-manifest` to generate the manifest file for each VSIX. Once the task is finished, every `.vsix` will be paired with a `.manifest` file inside the `vsix/` folder. + +The next step is to copy the manifest file to a `.signature.p7s` file which gets submitted to the signing service (and replaced with the signed version). The `signVsix.proj` (invoked via the `gulp signVsix` task) copies and transforms the manifest file and submits it to the signing service. + +Finally, when we actually publish the extension, we must pass upload the vsix, manifest file, and signed signature file to `vsce`. + +# Running test signing locally +To test various signing workflows, you may need to run signing locally. + +1. Run `gulp installSignPlugin` - this will install the MicroBuild signing plugin to your global nuget packages directory. This is required to make the signing targets on the various signing projects actually run. In CI, this is installed via a pipeline step. +2. To test JS signing, run `npm run vscode:prepublish` (or the `gulp signJs` task to skip generation of `dist/`). You can verify the JS is signed by checking for the 'Digital Signatures' tab on the file properties in Windows. The binlog, in `out/logs/signJs.binlog` will have details on the signing that took place. If you do not see a 'Sign' target running, then signing did not run. +3. To test VSIX signing, first generate the VSIX's as normal. Then run the `gulp signVsix` target. If signing ran successfully, the VSIX's should be updated in-place and have a `package/services/digital-signature` folder inside of them. For more details on the signing, see the `out/logs/signVsix.binlog`. \ No newline at end of file diff --git a/msbuild/signing/signJs/signJs.proj b/msbuild/signing/signJs/signJs.proj new file mode 100644 index 000000000..c2cd51806 --- /dev/null +++ b/msbuild/signing/signJs/signJs.proj @@ -0,0 +1,25 @@ + + + netstandard2.0 + false + false + true + false + $(JSOutputPath) + true + + + + + + + + test + + + + + MicrosoftSHA2 + + + \ No newline at end of file diff --git a/msbuild/signing/signVsix/signVsix.proj b/msbuild/signing/signVsix/signVsix.proj new file mode 100644 index 000000000..820294384 --- /dev/null +++ b/msbuild/signing/signVsix/signVsix.proj @@ -0,0 +1,34 @@ + + + netstandard2.0 + false + false + true + false + $(RepoRoot)vsix\ + + + + + + + + test + + + + + + + + + + + + VSCodePublisher + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 80a329351..07c4d5575 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,9 +60,9 @@ "@types/yauzl": "2.10.0", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", - "@vscode/l10n-dev": "^0.0.30", + "@vscode/l10n-dev": "^0.0.35", "@vscode/test-electron": "2.3.8", - "@vscode/vsce": "2.21.0", + "@vscode/vsce": "3.0.0", "archiver": "5.3.0", "del": "3.0.0", "eslint": "^8.43.0", @@ -96,7 +96,7 @@ "vscode-oniguruma": "^1.6.1", "vscode-textmate": "^6.0.0", "vscode-uri": "^3.0.7", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.6.0" }, "engines": { @@ -116,6 +116,380 @@ "node": ">=6.0.0" } }, + "node_modules/@azure-rest/ai-translation-text": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure-rest/ai-translation-text/-/ai-translation-text-1.0.0.tgz", + "integrity": "sha1-ZmT3YJ2e96FELKS9iyc0h0/qd4w=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-rest/core-client": "^1.1.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.8.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure-rest/ai-translation-text/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure-rest/core-client": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure-rest/core-client/-/core-client-1.4.0.tgz", + "integrity": "sha1-O+KMAsbCDknepzp/AS2u7aTqy44=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure-rest/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure-rest/core-client/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha1-eI7nhFelWvihrTQqyxgjg9IRkkk=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/abort-controller/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha1-VYt8t90SsAvuwHrl31kH103x69k=", + "dev": true, + "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/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha1-b8ac7igWiDq2xc3WU+5PL/l3T3Q=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.16.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", + "integrity": "sha1-veO8PrrX+IXd2d5q9eWo/CVLKH4=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha1-Bl2rTgk/thiZmIoc28gn2a2QtO4=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/core-util": { + "version": "1.9.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/core-util/-/core-util-1.9.2.tgz", + "integrity": "sha1-HcN9xbDa40xXi+Ys+YkFunwMr+c=", + "dev": true, + "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/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha1-Qv4MyrI4QdmQWBLFjxCC0neEVm0=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/identity": { + "version": "4.4.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/identity/-/identity-4.4.1.tgz", + "integrity": "sha1-SQ+irSZ4Yimvo2QRiSu1Pfo0eNM=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.14.0", + "@azure/msal-node": "^2.9.2", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha1-p+nD8p2ulAJ+vK9Jl1yTRVk0EPw=", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/identity/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jws/-/jws-4.0.0.tgz", + "integrity": "sha1-LU6M9qMY/6oSYV6d7H6G5slzEPQ=", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/identity/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha1-Ijy/K0JN+mZHjOmk9XX1nG83l2g=", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha1-2bQMXECrWehzjyl98wh78aJpDAE=", + "dev": true, + "license": "0BSD" + }, + "node_modules/@azure/msal-browser": { + "version": "3.22.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-browser/-/msal-browser-3.22.0.tgz", + "integrity": "sha1-5MJgX6wSvY8Xdhfld8WdFdEFVRM=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.14.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.14.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-common/-/msal-common-14.14.2.tgz", + "integrity": "sha1-WDtKycCJlTcY16Xi87jfLU27F/Q=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.13.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@azure/msal-node/-/msal-node-2.13.1.tgz", + "integrity": "sha1-8UQ3EnW3w8vlZHYrhHcqlzJFekc=", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.14.2", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@azure/msal-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@babel/code-frame": { "version": "7.22.13", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/code-frame/-/code-frame-7.22.13.tgz", @@ -1754,14 +2128,15 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha1-3M5q/3S99trRqVgCtpsEovyx+zY=", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -1777,22 +2152,24 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha1-VY+2Ry7RakyFC4iVMOazZDjEkoA=", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha1-nXHKiG4yUC65NiyadKRnh8Nt+Bo=", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -1802,10 +2179,11 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.25", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha1-FfGQ6YiV8/wjJ27hS8drZ1wuUPA=", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2497,31 +2875,12 @@ "@types/glob": "*" } }, - "node_modules/@types/eslint": { - "version": "8.21.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint/-/eslint-8.21.1.tgz", - "integrity": "sha512-rc9K8ZpVjNcLs8Fp0dkozd5Pt2Apk1glO4Vgz8ix1u6yFByxfqo5Yavpy65o+93TAe24jr7v+eSBtFLvOQtCRQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha1-ps4+VW4A/ZiV3Yct0XKtDUvWh/Q=", + "dev": true, + "license": "MIT" }, "node_modules/@types/expect": { "version": "1.20.4", @@ -3182,14 +3541,18 @@ } }, "node_modules/@vscode/l10n-dev": { - "version": "0.0.30", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n-dev/-/l10n-dev-0.0.30.tgz", - "integrity": "sha512-m/5voX3NtGCVQ/UjKajvwW9PPvjjvcuvEKiKRkf7dS8Q/JT+Sa5XJK70JrVuuwbfGwZktrBBhF25Eu9SXv4Q6A==", + "version": "0.0.35", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/l10n-dev/-/l10n-dev-0.0.35.tgz", + "integrity": "sha1-zdgQala33I/u9i0QxBPW2NlLLVw=", "dev": true, + "license": "MIT", "dependencies": { + "@azure-rest/ai-translation-text": "^1.0.0-beta.1", "debug": "^4.3.4", "deepmerge-json": "^1.5.0", "glob": "^10.0.0", + "markdown-it": "^14.0.0", + "node-html-markdown": "^1.3.0", "pseudo-localization": "^2.4.0", "web-tree-sitter": "^0.20.8", "xml2js": "^0.5.0", @@ -3199,6 +3562,13 @@ "vscode-l10n-dev": "dist/cli.js" } }, + "node_modules/@vscode/l10n-dev/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg=", + "dev": true, + "license": "Python-2.0" + }, "node_modules/@vscode/l10n-dev/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -3239,6 +3609,19 @@ } } }, + "node_modules/@vscode/l10n-dev/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-4.5.0.tgz", + "integrity": "sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/@vscode/l10n-dev/node_modules/glob": { "version": "10.3.10", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-10.3.10.tgz", @@ -3261,6 +3644,41 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@vscode/l10n-dev/node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha1-nvI4v6bccL2Of5VytS02mvVptCE=", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/@vscode/l10n-dev/node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha1-PDxZkog8Yz20cUzLTXtZNdmLfUU=", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/@vscode/l10n-dev/node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha1-gGduwEMwJd0+F+6YPQ/o3loiN+A=", + "dev": true, + "license": "MIT" + }, "node_modules/@vscode/l10n-dev/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-9.0.3.tgz", @@ -3291,6 +3709,13 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/@vscode/l10n-dev/node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha1-+NP30OxMPeo1p+PI76TLi0XJ5+4=", + "dev": true, + "license": "MIT" + }, "node_modules/@vscode/l10n-dev/node_modules/yargs": { "version": "17.7.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yargs/-/yargs-17.7.2.tgz", @@ -3396,16 +3821,21 @@ "dev": true }, "node_modules/@vscode/vsce": { - "version": "2.21.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce/-/vsce-2.21.0.tgz", - "integrity": "sha512-KuxYqScqUY/duJbkj9eE2tN2X/WJoGAy54hHtxT3ZBkM6IzrOg7H7CXGUPBxNlmqku2w/cAjOUSrgIHlzz0mbA==", + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce/-/vsce-3.0.0.tgz", + "integrity": "sha1-efpKJj65R31J77KTHUUgTj77y3g=", "dev": true, + "license": "MIT", "dependencies": { - "azure-devops-node-api": "^11.0.1", + "@azure/identity": "^4.1.0", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", "commander": "^6.2.1", - "glob": "^7.0.6", + "form-data": "^4.0.0", + "glob": "^11.0.0", "hosted-git-info": "^4.0.2", "jsonc-parser": "^3.2.0", "leven": "^3.1.0", @@ -3415,7 +3845,7 @@ "parse-semver": "^1.1.1", "read": "^1.0.7", "semver": "^7.5.2", - "tmp": "^0.2.1", + "tmp": "^0.2.3", "typed-rest-client": "^1.8.4", "url-join": "^4.0.1", "xml2js": "^0.5.0", @@ -3426,12 +3856,167 @@ "vsce": "vsce" }, "engines": { - "node": ">= 14" + "node": ">= 20" }, "optionalDependencies": { "keytar": "^7.7.0" } }, + "node_modules/@vscode/vsce-sign": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign/-/vsce-sign-2.0.4.tgz", + "integrity": "sha1-tL8VXRbypLrcBp34UNyG91YSSEI=", + "dev": true, + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.2", + "@vscode/vsce-sign-alpine-x64": "2.0.2", + "@vscode/vsce-sign-darwin-arm64": "2.0.2", + "@vscode/vsce-sign-darwin-x64": "2.0.2", + "@vscode/vsce-sign-linux-arm": "2.0.2", + "@vscode/vsce-sign-linux-arm64": "2.0.2", + "@vscode/vsce-sign-linux-x64": "2.0.2", + "@vscode/vsce-sign-win32-arm64": "2.0.2", + "@vscode/vsce-sign-win32-x64": "2.0.2" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", + "integrity": "sha1-SszEheVapv8EsZW0f3IurVfapY4=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", + "integrity": "sha1-Skt7UFtMwPWFljlIl8SaC84OVAw=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", + "integrity": "sha1-EKpp/rf4Gj3GjCQgOMoD6v8ZwS4=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", + "integrity": "sha1-MxVSjz6hAHpkizMgv/NqM6ngeqU=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", + "integrity": "sha1-QUL9qD5xMLMa7diqgeTapjNDI8I=", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", + "integrity": "sha1-zlxc/JnjRUtPt3BAWBK0a9bcqHA=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", + "integrity": "sha1-WauT8yLvs89JFm1OLoEnicMRdCg=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", + "integrity": "sha1-0JVwShSwQEwLb2lumInppRsxqGw=", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", + "integrity": "sha1-KU6nK0T+3WlNSfXO9MVb84dtwlc=", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha1-HtxFng8MVISG7Pn8mfIiE2S5oK4=", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@vscode/vsce/node_modules/commander": { "version": "6.2.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-6.2.1.tgz", @@ -3441,6 +4026,46 @@ "node": ">= 6" } }, + "node_modules/@vscode/vsce/node_modules/glob": { + "version": "11.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob/-/glob-11.0.0.tgz", + "integrity": "sha1-YDHfDXtl6qHMubKbXO0WzqZY534=", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/vsce/node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha1-zgUhhWtFPIbiXyxMDQPm/33cRAs=", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@vscode/vsce/node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -3453,182 +4078,235 @@ "node": ">=10" } }, + "node_modules/@vscode/vsce/node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha1-n8pM6WGvYIPiWcN26eNUFDH1KHs=", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/@vscode/vsce/node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/@vscode/vsce/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/@vscode/vsce/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vscode/vsce/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha1-nwUiifI62L+Tl6KgQl57hhXFhYA=", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "glob": "^7.1.3" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@vscode/vsce/node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha1-Fdk6GW8YkDTXFmyvn+Vec4TJiiE=", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@vscode/vsce/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha1-63g8wivB6L69BnFHbUbqTrMqea4=", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha1-uxag6LGRT5efRYZMI4Gcw+Pw1Ls=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true + "version": "1.11.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha1-2svLla/xNcgmD3f6O0xf6mAKZDE=", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true + "version": "1.11.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha1-YTL2jErNWdzRQcRLGMvrvZ8vp2g=", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha1-bfINJy6lQ5vyCrNJK3+3Dpv8s/Y=", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha1-y85efgwb0yz0kFrkRO9kzqkZ8bU=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true + "version": "1.11.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha1-uy69s7g6om2bqtTEbUMVKDrNUek=", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha1-PaYjIzrhpgQJtQmlKt6bwio3978=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha1-u2ZckdCxT//OsOOCmMMprwQ8bjo=", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha1-cOYOXoL5rIERi8JTgaCyg4kyQNc=", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true + "version": "1.11.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha1-kPi8NMVhWV/hVmA75yU8280Pq1o=", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha1-n58/9SoUyYCTm+DvnV3568Z4rjs=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha1-plIGAdobVwBEgnNmanGtCkXXhUc=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha1-nm6BR138+2LatXSsLdo4ImwjK8U=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha1-xHrLkObwgzkeP6YdETZQ7qHpWTc=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.12.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha1-vOz2YdfRq9r5idg0Gkgz4z4rMaw=", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, @@ -3671,14 +4349,16 @@ "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", + "dev": true, + "license": "Apache-2.0" }, "node_modules/acorn": { "version": "8.8.2", @@ -3692,11 +4372,12 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha1-frFVexugXvGLXtDsZ1kb+rBGiO8=", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^8" } @@ -3774,8 +4455,9 @@ "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } @@ -4056,6 +4738,13 @@ "node": ">= 10.13.0" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "license": "MIT" + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/at-least-node/-/at-least-node-1.0.0.tgz", @@ -4082,10 +4771,11 @@ "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" }, "node_modules/azure-devops-node-api": { - "version": "11.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz", - "integrity": "sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A==", + "version": "12.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha1-OLnv18WsdDVP5Ojb5CaX2wuOhaU=", "dev": true, + "license": "MIT", "dependencies": { "tunnel": "0.0.6", "typed-rest-client": "^1.8.4" @@ -4920,6 +5610,16 @@ "node": ">= 0.12.0" } }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha1-V1+Te8QECiCuJzUqbQfJxadBmB8=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", @@ -4947,11 +5647,25 @@ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "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/dnceng/public/_packaging/dotnet-public-npm/npm/registry/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=", + "dev": true, + "license": "MIT" }, "node_modules/compress-commons": { "version": "4.1.0", @@ -5221,6 +5935,16 @@ "node": ">=4.0.0" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha1-P3rkIRKbyqrJvHSQXJigAJ7J7n8=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { "version": "1.2.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/define-properties/-/define-properties-1.2.0.tgz", @@ -5254,6 +5978,16 @@ "node": ">=4" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "1.1.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/depd/-/depd-1.1.2.tgz", @@ -5363,16 +6097,17 @@ } }, "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "version": "2.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha1-XEXo6GmVJiYzHXqrMm0B2vZdWJ0=", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "4.2.2", @@ -5511,10 +6246,11 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "version": "5.17.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha1-Z7+7zC+B1RG+d9aGqQJn73+JihU=", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5623,10 +6359,11 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true + "version": "1.5.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha1-qO/sOj2pkeYO+mtjOnytarjSa3g=", + "dev": true, + "license": "MIT" }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -7116,6 +7853,21 @@ "node": ">= 8" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI=", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fs-constants/-/fs-constants-1.0.0.tgz", @@ -7401,6 +8153,13 @@ "node": ">=10.13.0" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4=", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/glob-watcher": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", @@ -7741,6 +8500,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/he/-/he-1.2.0.tgz", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -8172,6 +8941,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8448,6 +9233,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/isarray/-/isarray-1.0.0.tgz", @@ -10399,8 +11197,9 @@ "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "integrity": "sha1-jRRvCQDolzsQa29zzB6ajLhvjbA=", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -10413,8 +11212,9 @@ "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10422,8 +11222,9 @@ "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "integrity": "sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -11056,6 +11857,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=8" } @@ -11251,6 +12053,119 @@ "dev": true, "optional": true }, + "node_modules/node-html-markdown": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-html-markdown/-/node-html-markdown-1.3.0.tgz", + "integrity": "sha1-7wsZo7v8DxqICruf8qDJqmu/8qk=", + "dev": true, + "license": "MIT", + "dependencies": { + "node-html-parser": "^6.1.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha1-od95m4PfXGdD/NknQLoUaCCDt+Q=", + "dev": true, + "license": "MIT", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, + "node_modules/node-html-parser/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha1-uOvWVUw2N8zHZoiAStP2pv2uqKY=", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/node-html-parser/node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha1-+17/z3bx3eosgb36pN5E55uscPQ=", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/node-html-parser/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha1-5BuALh7t+fbK4YPOXmIteJ19jlM=", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/node-html-parser/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha1-zDhff3UfHR/GUMITdIBCVFOMfTE=", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/node-html-parser/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha1-xH9VEnjT3EsLGrjLtC11Gm8Ngk4=", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/node-html-parser/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-4.5.0.tgz", + "integrity": "sha1-XSaOpecRPsdMTQM7eepaNaSI+0g=", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-int64/-/node-int64-0.4.0.tgz", @@ -11485,6 +12400,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/open/-/open-8.4.2.tgz", + "integrity": "sha1-W1/+Ko95Pc0qrXPlUMuHtZywhPk=", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/optionator/-/optionator-0.9.1.tgz", @@ -11558,6 +12491,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha1-5QHNMJSyeEletCWNTJ9tWsMBnwA=", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pako/-/pako-1.0.11.tgz", @@ -12085,6 +13025,16 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha1-a1PlatdViCNOefSv+pCXLH3Yzbc=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pure-rand": { "version": "6.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pure-rand/-/pure-rand-6.0.2.tgz", @@ -12154,8 +13104,9 @@ "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -12579,10 +13530,11 @@ "dev": true }, "node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha1-9QqIh3w8AWUqFbYirp6Xld96YP4=", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -12635,10 +13587,11 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha1-3voeBVyDv21Z6oBdjahiJU62psI=", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -12863,6 +13816,17 @@ "node": ">= 0.6" } }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha1-MtpWjoPqSIsI5NfqLDvMnXUBXVs=", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, "node_modules/stream": { "version": "0.0.2", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/stream/-/stream-0.0.2.tgz", @@ -13233,13 +14197,14 @@ } }, "node_modules/terser": { - "version": "5.16.4", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.16.4.tgz", - "integrity": "sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==", + "version": "5.31.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.31.6.tgz", + "integrity": "sha1-xjhYoPBwOYjQJmqC/L8te6dkIrE=", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -13251,16 +14216,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.10", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha1-kE9MkZPG/SoD9pOiFQxiqS9A0Zk=", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -13602,8 +14568,9 @@ "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "integrity": "sha1-cvExSzSlsZLbASMk3yzFh8pH+Sw=", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } @@ -13682,10 +14649,11 @@ } }, "node_modules/typed-rest-client": { - "version": "1.8.6", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", + "version": "1.8.11", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha1-aQbwLjyR6NhRV58lWr8P1ggAoE0=", "dev": true, + "license": "MIT", "dependencies": { "qs": "^6.9.1", "tunnel": "0.0.6", @@ -14208,10 +15176,11 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha1-L+6u1nQS58MxhOWnnKc4+9OFZNo=", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -14220,12 +15189,6 @@ "node": ">=10.13.0" } }, - "node_modules/watchpack/node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, "node_modules/web-tree-sitter": { "version": "0.20.8", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/web-tree-sitter/-/web-tree-sitter-0.20.8.tgz", @@ -14233,34 +15196,34 @@ "dev": true }, "node_modules/webpack": { - "version": "5.76.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", + "version": "5.94.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha1-d6YInHFuerkMHGdXSijaUYoglw8=", "dev": true, + "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", + "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, "bin": { @@ -14470,12 +15433,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, "node_modules/which": { "version": "1.3.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index e5e774cb4..96495f20d 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,11 @@ } }, "defaults": { - "roslyn": "4.12.0-2.24461.7", + "roslyn": "4.12.0-3.24463.6", "omniSharp": "1.39.11", - "razor": "9.0.0-preview.24418.1", + "razor": "9.0.0-preview.24427.2", "razorOmnisharp": "7.0.0-preview.23363.1", - "xamlTools": "17.12.35304.30" + "xamlTools": "17.12.35311.18" }, "main": "./dist/extension", "l10n": "./l10n", @@ -60,7 +60,7 @@ } ], "scripts": { - "vscode:prepublish": "tsc -p ./ && webpack --mode production", + "vscode:prepublish": "tsc -p ./ && webpack --mode production && gulp signJs", "l10nDevGenerateLocalizationBundle": "npx @vscode/l10n-dev export --outDir ./l10n ./src", "compile": "tsc -p ./ && npx eslint ./ && npm run l10nDevGenerateLocalizationBundle && npm run compile:razorTextMate", "compile:razorTextMate": "npx js-yaml src/razor/syntaxes/aspnetcorerazor.tmLanguage.yml > src/razor/syntaxes/aspnetcorerazor.tmLanguage.json", @@ -137,9 +137,9 @@ "@types/yauzl": "2.10.0", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", - "@vscode/l10n-dev": "^0.0.30", + "@vscode/l10n-dev": "^0.0.35", "@vscode/test-electron": "2.3.8", - "@vscode/vsce": "2.21.0", + "@vscode/vsce": "3.0.0", "archiver": "5.3.0", "del": "3.0.0", "eslint": "^8.43.0", @@ -173,7 +173,7 @@ "vscode-oniguruma": "^1.6.1", "vscode-textmate": "^6.0.0", "vscode-uri": "^3.0.7", - "webpack": "5.76.0", + "webpack": "5.94.0", "webpack-cli": "4.6.0" }, "runtimeDependencies": [ @@ -1344,7 +1344,7 @@ }, "dotnet.unitTests.runSettingsPath": { "type": "string", - "markdownDescription": "%configuration.dotnet.unitTests.runSettingsPath.markdownDescription%" + "markdownDescription": "%configuration.dotnet.unitTests.runSettingsPath%" } } }, @@ -5527,6 +5527,11 @@ "contents": "%viewsWelcome.debug.contents%", "when": "debugStartLanguage == csharp && !dotnet.debug.serviceBrokerAvailable" } - ] + ], + "configurationDefaults": { + "[xaml]": { + "editor.wordBasedSuggestions": "off" + } + } } } diff --git a/package.nls.cs.json b/package.nls.cs.json index 8f8deb11b..5fa75be20 100644 --- a/package.nls.cs.json +++ b/package.nls.cs.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Umožňuje zobrazit regulární výrazy v seznamu dokončení.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Povolí podporu zobrazení neimportovaných typů a neimportovaných metod rozšíření v seznamech dokončení. Při potvrzení se na začátek aktuálního souboru přidá příslušná direktiva použití. (Dříve omnisharp.enableImportCompletion)", "configuration.dotnet.completion.showNameCompletionSuggestions": "Pro členy, které jste nedávno vybrali, proveďte automatické dokončování názvů objektů.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automaticky zobrazovat seznam dokončení v seznamech argumentů", "configuration.dotnet.defaultSolution.description": "Cesta výchozího řešení, které se má otevřít v pracovním prostoru. Můžete přeskočit nastavením na „zakázat“. (Dříve omnisharp.defaultLaunchSolution)", "configuration.dotnet.dotnetPath": "Zadává cestu k adresáři instalace dotnet, která se má použít místo výchozí systémové instalace. To má vliv pouze na instalaci dotnet, která se má použít k hostování samotného jazykového serveru. Příklad: /home/username/mycustomdotnetdirectory", "configuration.dotnet.enableXamlTools": "Povolí nástroje XAML při použití sady C# Dev Kit", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Potlačit nápovědy, když argument odpovídá názvu parametru", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Potlačit nápovědy, když název parametru odpovídá záměru metody", "configuration.dotnet.navigation.navigateToDecompiledSources": "Povolit navigaci na dekompilované zdroje.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Vynutí načtení projektů pouze s rozšířením jazyka C#. To může být užitečné při použití starších typů projektů, které jazyk C# Dev Kit nepodporuje. (Vyžaduje opětovné načtení okna)", "configuration.dotnet.projects.binaryLogPath": "Nastaví cestu, do které se při načítání projektů zapisují binární protokoly MSBuildu, aby se usnadnil diagnostika chyb načítání.", "configuration.dotnet.projects.enableAutomaticRestore": "Povolí automatické obnovení balíčku NuGet, pokud rozšíření zjistí, že chybí prostředky.", diff --git a/package.nls.de.json b/package.nls.de.json index 8109c69d0..d808fb4db 100644 --- a/package.nls.de.json +++ b/package.nls.de.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Reguläre Ausdrücke in der Vervollständigungsliste anzeigen.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Ermöglicht die Anzeige nicht importierter Typen und nicht importierter Erweiterungsmethoden in Vervollständigungslisten. Wenn ein Commit ausgeführt wird, wird die entsprechende using-Direktive am Anfang der aktuellen Datei hinzugefügt. (Zuvor \"omnisharp.enableImportCompletion\")", "configuration.dotnet.completion.showNameCompletionSuggestions": "Führen Sie die automatische Vervollständigung des Objektnamens für die Elemente aus, die Sie kürzlich ausgewählt haben.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Vervollständigungsliste in Argumentlisten automatisch anzeigen", "configuration.dotnet.defaultSolution.description": "Der Pfad der Standardlösung, die im Arbeitsbereich geöffnet werden soll, oder auf \"deaktivieren\" festlegen, um sie zu überspringen. (Zuvor \"omnisharp.defaultLaunchSolution\")", "configuration.dotnet.dotnetPath": "Gibt den Pfad zu einem dotnet-Installationsverzeichnis an, das anstelle des Standardsystems verwendet werden soll. Dies wirkt sich nur auf die dotnet-Installation aus, die zum Hosten des Sprachservers selbst verwendet werden soll. Beispiel: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Aktiviert XAML-Tools bei Verwendung des C#-Dev Kit", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Hinweise unterdrücken, wenn das Argument mit dem Namen des Parameters übereinstimmt", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Hinweise unterdrücken, wenn der Parametername mit der Methodenabsicht übereinstimmt", "configuration.dotnet.navigation.navigateToDecompiledSources": "Aktivieren der Navigation zu dekompilierten Quellen.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Erzwingt, dass Projekte nur mit der C#-Erweiterung geladen werden. Dies kann nützlich sein, wenn Legacy-Projekttypen verwendet werden, die vom C# Dev Kit nicht unterstützt werden. (Erfordert erneutes Laden des Fensters)", "configuration.dotnet.projects.binaryLogPath": "Legt einen Pfad fest, in den binäre MSBuild-Protokolle beim Laden von Projekten geschrieben werden, um die Diagnose von Ladefehlern zu unterstützen.", "configuration.dotnet.projects.enableAutomaticRestore": "Aktiviert die automatische NuGet-Wiederherstellung, wenn die Erweiterung erkennt, dass Ressourcen fehlen.", diff --git a/package.nls.es.json b/package.nls.es.json index db2294fff..83b849f38 100644 --- a/package.nls.es.json +++ b/package.nls.es.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Mostrar expresiones regulares en la lista de finalización.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Habilita la compatibilidad para mostrar tipos no importados y métodos de extensión no importados en listas de finalización. Cuando se confirme, se agregará la directiva de uso adecuada en la parte superior del archivo actual. (Anteriormente \"omnisharp.enableImportCompletion\")", "configuration.dotnet.completion.showNameCompletionSuggestions": "Realice la finalización automática del nombre de objeto para los miembros que ha seleccionado recientemente.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostrar automáticamente la lista de finalización en las listas de argumentos", "configuration.dotnet.defaultSolution.description": "Ruta de acceso de la solución predeterminada que se va a abrir en el área de trabajo o se establece en \"deshabilitar\" para omitirla. (Anteriormente \"omnisharp.defaultLaunchSolution\")", "configuration.dotnet.dotnetPath": "Especifica la ruta de acceso a un directorio de instalación de dotnet que se va a usar en lugar del predeterminado del sistema. Esto solo influye en la instalación de dotnet que se va a usar para hospedar el propio servidor de idioma. Ejemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Habilita las herramientas XAML al usar el Kit de desarrollo de C#", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Suprimir las sugerencias cuando el argumento coincide con el nombre del parámetro", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Suprimir las sugerencias cuando el nombre del parámetro coincida con la intención del método", "configuration.dotnet.navigation.navigateToDecompiledSources": "Habilitar la navegación a fuentes descompiladas.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Fuerza la carga de proyectos solo con la extensión de C#. Esto puede ser útil cuando se usan tipos de proyecto heredados que no son compatibles con el kit de desarrollo de C#. (Requiere volver a cargar la ventana)", "configuration.dotnet.projects.binaryLogPath": "Establece una ruta de acceso en la que se escriben los registros binarios de MSBuild al cargar proyectos para ayudar a diagnosticar errores de carga.", "configuration.dotnet.projects.enableAutomaticRestore": "Habilita la restauración automática de NuGet si la extensión detecta que faltan activos.", diff --git a/package.nls.fr.json b/package.nls.fr.json index e31b8b297..6ca801d36 100644 --- a/package.nls.fr.json +++ b/package.nls.fr.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Afficher les expressions régulières dans la liste de saisie semi-automatique.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Active la prise en charge de l’affichage des types non pris en charge et des méthodes d’extension non prises en charge dans les listes de saisie semi-automatique. Une fois validée, la directive using appropriée est ajoutée en haut du fichier actif. (Précédemment `omnisharp.enableImportCompletion`)", "configuration.dotnet.completion.showNameCompletionSuggestions": "Effectuez la complétion automatique du nom d’objet pour les membres que vous avez récemment sélectionnés.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Afficher automatiquement la liste de complétion dans les listes d'arguments", "configuration.dotnet.defaultSolution.description": "Le chemin d’accès de la solution par défaut à ouvrir dans l’espace de travail, ou la valeur ’disable’ pour l’ignorer. (Précédemment `omnisharp.defaultLaunchSolution`)", "configuration.dotnet.dotnetPath": "Spécifie le chemin d’accès à un répertoire d’installation de dotnet à utiliser à la place du répertoire par défaut du système. Cela n’a d’influence que sur l’installation dotnet à utiliser pour héberger le serveur de langues lui-même. Exemple : \"/home/username/mycustomdotnetdirect\" : \"/home/nom d’utilisateur/monrépertoiredotnetpersonnalisé\".", "configuration.dotnet.enableXamlTools": "Active les outils XAML lors de l’utilisation du Kit de développement C#", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Supprimer les conseils lorsque l'argument correspond au nom du paramètre", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Supprimer les indicateurs quand le nom de paramètre correspond à l'intention de la méthode", "configuration.dotnet.navigation.navigateToDecompiledSources": "Activez la navigation vers les sources décompliées.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Force le chargement des projets avec l'extension C# uniquement. Cela peut être utile lors de l’utilisation de types de projets hérités qui ne sont pas pris en charge par C# Dev Kit. (Nécessite le rechargement de la fenêtre)", "configuration.dotnet.projects.binaryLogPath": "Définit un chemin d’accès dans lequel les journaux binaires MSBuild sont écrits lors du chargement des projets, pour faciliter le diagnostic des erreurs de chargement.", "configuration.dotnet.projects.enableAutomaticRestore": "Active la restauration automatique de NuGet si l’extension détecte que des actifs sont manquants.", diff --git a/package.nls.it.json b/package.nls.it.json index 377e73f1e..88e06fc45 100644 --- a/package.nls.it.json +++ b/package.nls.it.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Mostra espressioni regolari nell'elenco di completamento.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Abilita il supporto per mostrare i tipi non importati e i metodi di estensione non importati negli elenchi di completamento. Quando viene eseguito il commit, la direttiva using appropriata verrà aggiunta all'inizio del file corrente. (In precedenza “omnisharp.enableImportCompletion”)", "configuration.dotnet.completion.showNameCompletionSuggestions": "Consente di eseguire il completamento automatico del nome dell'oggetto per i membri selezionati di recente.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostra automaticamente l'elenco di completamento negli elenchi di argomenti", "configuration.dotnet.defaultSolution.description": "Percorso della soluzione predefinita da aprire nell'area di lavoro o impostare su 'disabilita' per ignorarla. (In precedenza “omnisharp.defaultLaunchSolution”)", "configuration.dotnet.dotnetPath": "Specifica il percorso di una directory di installazione dotnet da usare al posto di quella predefinita del sistema. Ciò influisce solo sull'installazione di dotnet da usare per ospitare il server di linguaggio stesso. Esempio: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Abilita gli strumenti XAML quando si usa il kit di sviluppo C#", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Elimina hint quando l'argomento corrisponde al nome del parametro", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Non visualizzare suggerimenti quando il nome del parametro corrisponde alla finalità del metodo", "configuration.dotnet.navigation.navigateToDecompiledSources": "Abilita la navigazione verso origini decompilate.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Forza il caricamento dei progetti solo con l'estensione C#. Può essere utile quando si usano tipi di progetto legacy non supportati dal Kit di sviluppo C#. (Richiede il ricaricamento della finestra)", "configuration.dotnet.projects.binaryLogPath": "Imposta un percorso in cui vengono scritti i log binari di MSBuild durante il caricamento dei progetti per diagnosticare gli errori di caricamento.", "configuration.dotnet.projects.enableAutomaticRestore": "Abilita il ripristino automatico di NuGet se l'estensione rileva che mancano asset.", diff --git a/package.nls.ja.json b/package.nls.ja.json index 5a1afad04..c52938f70 100644 --- a/package.nls.ja.json +++ b/package.nls.ja.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "入力候補一覧に正規表現を表示します。", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "インポートされていない型とインポートされていない拡張メソッドを入力候補一覧に表示するためのサポートを有効にします。コミットすると、現在のファイルの先頭に適切な using ディレクティブが追加されます。(以前の `omnisharp.enableImportCompletion`)", "configuration.dotnet.completion.showNameCompletionSuggestions": "最近選択したメンバーの自動オブジェクト名の完了を実行します。", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "引数リストに入力候補一覧を自動的に表示する", "configuration.dotnet.defaultSolution.description": "ワークスペースで開く既定のソリューションのパス。スキップするには 'disable' に設定します。(以前の `omnisharp.defaultLaunchSolution`)", "configuration.dotnet.dotnetPath": "既定のシステム ディレクトリの代わりに使用する dotnet インストール ディレクトリへのパスを指定します。これは、言語サーバー自体をホストするために使用する dotnet インストールにのみ影響します。例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.dotnet.enableXamlTools": "C# 開発キットを使用するときに XAML ツールを有効にします", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "引数がパラメーター名と一致するとき、ヒントを抑制する", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "パラメーター名がメソッドの意図と一致する場合にヒントを非表示にする", "configuration.dotnet.navigation.navigateToDecompiledSources": "逆コンパイルされたソースへのナビゲーションを有効にします。", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "C# 拡張機能のみを使用してプロジェクトを強制的に読み込みます。 これは、C# Dev Kit でサポートされていないレガシ プロジェクトの種類を使用する場合に役立ちます。(ウィンドウの再読み込みが必要)", "configuration.dotnet.projects.binaryLogPath": "読み込みエラーの診断に役立つ、プロジェクト読み込み時に MSBuild バイナリ ログが書き込まれるパスを設定します。", "configuration.dotnet.projects.enableAutomaticRestore": "拡張機能で資産が見つからないと検出された場合に、NuGet の自動復元を有効にします。", diff --git a/package.nls.ko.json b/package.nls.ko.json index 6b84fd491..4cac28482 100644 --- a/package.nls.ko.json +++ b/package.nls.ko.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "완성 목록에 정규식을 표시합니다.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "완성 목록에 가져오지 않은 유형과 가져오지 않은 확장 메서드를 표시하기 위한 지원을 활성화합니다. 커밋되면 적절한 using 지시문이 현재 파일의 맨 위에 추가됩니다(이전 `omnisharp.enableImportCompletion`).", "configuration.dotnet.completion.showNameCompletionSuggestions": "최근에 선택한 멤버에 대해 자동 개체 이름 완성을 수행합니다.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "인수 목록에 자동으로 완성 목록 표시", "configuration.dotnet.defaultSolution.description": "작업 영역에서 열릴 기본 솔루션의 경로, 건너뛰려면 '비활성화'로 설정하세요(이전 `omnisharp.defaultLaunchSolution`).", "configuration.dotnet.dotnetPath": "기본 시스템 대신 사용할 dotnet 설치 디렉터리를 지정합니다. 이는 언어 서버 자체를 호스팅하는 데 사용할 dotnet 설치에만 영향을 줍니다(예: \"/home/username/mycustomdotnetdirectory\").", "configuration.dotnet.enableXamlTools": "C# 개발자 키트를 사용할 때 XAML 도구 사용", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "인수가 매개 변수 이름과 일치하는 경우 힌트 표시 안 함", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "매개 변수 이름이 메서드의 의도와 일치하는 경우 힌트 표시 안 함", "configuration.dotnet.navigation.navigateToDecompiledSources": "디컴파일된 원본 탐색을 사용하도록 설정합니다.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "프로젝트가 C# 확장으로만 로드되도록 합니다. C# 개발 키트에서 지원되지 않는 레거시 프로젝트 형식을 사용할 때 유용할 수 있습니다(창 다시 로드 필요).", "configuration.dotnet.projects.binaryLogPath": "로드 오류를 진단하는 데 도움이 되도록 프로젝트를 로드할 때 MSBuild 이진 로그가 기록되는 경로를 설정합니다.", "configuration.dotnet.projects.enableAutomaticRestore": "확장에서 자산이 누락된 것을 감지하는 경우 자동 NuGet 복원을 사용하도록 설정합니다.", diff --git a/package.nls.pl.json b/package.nls.pl.json index 968ba7e06..176dd0017 100644 --- a/package.nls.pl.json +++ b/package.nls.pl.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Pokaż wyrażenia regularne na liście uzupełniania.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Zapewnia obsługę wyświetlania niezaimportowanych typów i niezaimportowanych metod rozszerzeń na listach uzupełniania. Po zadeklarowaniu odpowiednia dyrektywa using zostanie dodana w górnej części bieżącego pliku. (Wcześniej „omnisharp.enableImportCompletion”)", "configuration.dotnet.completion.showNameCompletionSuggestions": "Wykonaj automatyczne uzupełnianie nazw obiektów dla elementów członkowskich, które zostały ostatnio wybrane.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatycznie pokaż listę uzupełniania na listach argumentów", "configuration.dotnet.defaultSolution.description": "Ścieżka domyślnego rozwiązania, która ma zostać otwarta w obszarze roboczym, lub ustawiona na wartość „wyłącz”, aby je pominąć. (Poprzednio „omnisharp.defaultLaunchSolution”)", "configuration.dotnet.dotnetPath": "Określa ścieżkę do katalogu instalacyjnego dotnet, który ma być używany zamiast domyślnego katalogu systemowego. Ma to wpływ tylko na instalację dotnet używaną do hostowania samego serwera językowego. Przykład: „/home/username/mycustomdotnetdirectory”.", "configuration.dotnet.enableXamlTools": "Włącza narzędzia XAML podczas korzystania z zestawu deweloperskiego języka C#", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Pomiń wskazówki, gdy argument pasuje do nazwy parametru", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Pomiń wskazówki, gdy nazwa parametru pasuje do intencji metody", "configuration.dotnet.navigation.navigateToDecompiledSources": "Włącz nawigację do zdekompilowanych źródeł.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Wymusza ładowanie projektów tylko z rozszerzeniem języka C#. Może to być przydatne w przypadku korzystania ze starszych typów projektów, które nie są obsługiwane przez zestaw C# Dev Kit. (Wymaga ponownego załadowania okna)", "configuration.dotnet.projects.binaryLogPath": "Ustawia ścieżkę, w której dzienniki binarne programu MSBuild są zapisywane podczas ładowania projektów, aby ułatwić diagnozowanie błędów ładowania.", "configuration.dotnet.projects.enableAutomaticRestore": "Włącza automatyczne przywracanie pakietu NuGet, jeśli rozszerzenie wykryje brak zasobów.", diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json index b415f69aa..9a7b6e059 100644 --- a/package.nls.pt-br.json +++ b/package.nls.pt-br.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Mostrar expressões regulares na lista de conclusão.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Habilita o suporte para mostrar tipos e métodos de extensão não importados em listas de conclusão. Quando confirmado, a diretiva using apropriada será adicionada no topo do arquivo atual. (Anteriormente `omnisharp.enableImportCompletion`)", "configuration.dotnet.completion.showNameCompletionSuggestions": "Execute a conclusão automática do nome do objeto para os membros que você selecionou recentemente.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Mostrar automaticamente a lista de conclusão nas listas de argumentos", "configuration.dotnet.defaultSolution.description": "O caminho da solução padrão a ser aberta no workspace ou definido como 'desabilitado' para ignorá-la. (Anteriormente `omnisharp.defaultLaunchSolution`)", "configuration.dotnet.dotnetPath": "Especifica o caminho para um diretório de instalação dotnet a ser usado em vez do sistema padrão. Isso influencia apenas a instalação do dotnet a ser usada para hospedar o próprio servidor de idiomas. Exemplo: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Habilita ferramentas XAML ao usar o Kit de Desenvolvimento em C#", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Suprimir as dicas quando o argumento corresponder ao nome do parâmetro", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Suprimir as dicas quando o nome do parâmetro corresponder à intenção do método", "configuration.dotnet.navigation.navigateToDecompiledSources": "Habilite a navegação para fontes não compatíveis.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Força o carregamento dos projetos somente com a extensão C#. Isso pode ser útil ao usar tipos de projetos herdados que não são suportados pelo C# Dev Kit. (Requer recarga da janela)", "configuration.dotnet.projects.binaryLogPath": "Define um caminho no qual os registros binários do MSBuild são gravados ao carregar projetos para ajudar a diagnosticar erros de carregamento.", "configuration.dotnet.projects.enableAutomaticRestore": "Habilita a restauração automática do NuGet se a extensão detectar que os ativos estão ausentes.", diff --git a/package.nls.ru.json b/package.nls.ru.json index 722182a5f..fd8cd9609 100644 --- a/package.nls.ru.json +++ b/package.nls.ru.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Отображение регулярных выражений в списке завершения.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Включает поддержку отображения неимпортированных типов и неимпортированных методов расширения в списках завершения. При фиксации соответствующая директива использования будет добавлена в начало текущего файла. (Ранее — \"omnisharp.enableImportCompletion\")", "configuration.dotnet.completion.showNameCompletionSuggestions": "Выполните автоматическое завершение имен объектов для выбранных элементов.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Автоматически показывать список завершения в списках аргументов", "configuration.dotnet.defaultSolution.description": "Путь к решению по умолчанию, которое будет открыто в рабочей области. Или задайте значение \"Отключить\", чтобы пропустить его. (Ранее — \"omnisharp.defaultLaunchSolution\")", "configuration.dotnet.dotnetPath": "Указывает путь к каталогу установки dotnet для использования вместо стандартного системного каталога. Это влияет только на установку dotnet, используемую для размещения самого языкового сервера. Пример: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "Включает инструменты XAML при использовании комплекта разработки C# Dev Kit.", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Скрывать подсказки, когда аргумент соответствует имени параметра", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Скрывать подсказки, если имя параметра соответствует намерению метода.", "configuration.dotnet.navigation.navigateToDecompiledSources": "Включить переход к декомпилированным источникам.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Принудительно загружает проекты только с расширением C#. Это может быть полезно при использовании устаревших типов проектов, которые не поддерживаются C# Dev Kit. (Требуется перезагрузка окна)", "configuration.dotnet.projects.binaryLogPath": "Настраивает путь, в который записываются двоичные журналы MSBuild при загрузке проектов, чтобы помочь диагностировать ошибки загрузки.", "configuration.dotnet.projects.enableAutomaticRestore": "Включает автоматическое восстановление NuGet при обнаружении расширением отсутствия ресурсов.", diff --git a/package.nls.tr.json b/package.nls.tr.json index 7008bca04..bc7fbcc5b 100644 --- a/package.nls.tr.json +++ b/package.nls.tr.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "Tamamlama listesinde normal ifadeleri göster.", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "Tamamlanma listelerinde içe aktarılmamış türleri ve içe aktarılmamış uzantı yöntemlerini göstermeye yönelik desteği etkinleştirir. Taahhüt edildiğinde, uygun kullanım yönergesi geçerli dosyanın en üstüne eklenecektir. (Önceden 'omnisharp.enableImportCompletion')", "configuration.dotnet.completion.showNameCompletionSuggestions": "Yakın zamanda seçtiğiniz üyeler için otomatik nesne adı tamamlama gerçekleştirin.", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Bağımsız değişken listelerinde tamamlama listesini otomatik olarak göster", "configuration.dotnet.defaultSolution.description": "Varsayılan çözümün yolu, çalışma alanında açılacak veya atlamak için 'devre dışı' olarak ayarlanacak. (Daha önce 'omnisharp.defaultLaunchSolution')", "configuration.dotnet.dotnetPath": "Varsayılan sistem dizini yerine kullanılacak bir dotnet kurulum dizininin yolunu belirtir. Bu, yalnızca dil sunucusunun kendisini barındırmak için kullanılacak dotnet kurulumunu etkiler. Örnek: \"/home/username/mycustomdotnetdirectory\".", "configuration.dotnet.enableXamlTools": "C# Geliştirme Setini kullanırken XAML araçlarını etkinleştirir", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "Bağımsız değişken parametre adıyla eşleştiğinde ipuçlarını bastır", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "Parametre adı metodun hedefi ile eşleştiğinde ipuçlarını gizle", "configuration.dotnet.navigation.navigateToDecompiledSources": "Derlenmiş kaynaklarda gezinmeyi etkinleştir.", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "Projeleri yalnızca C# uzantısıyla yüklenmeye zorlar. Bu, C# Dev Kit tarafından desteklenmeyen eski proje türlerini kullanırken yararlı olabilir. (Pencerenin yeniden yüklenmesi gerekir)", "configuration.dotnet.projects.binaryLogPath": "Yükleme hatalarını teşhis etmeye yardımcı olmak için projeler yüklenirken MSBuild ikili günlüklerinin yazılacağı bir yol belirler.", "configuration.dotnet.projects.enableAutomaticRestore": "Uzantı varlıkların eksik olduğunu algılarsa otomatik NuGet geri yükleme işlemini etkinleştirir.", diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 39b7598ed..db00a1181 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "在完成列表中显示正则表达式。", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "支持在完成列表中显示未导入的类型和未导入的扩展方法。提交后,相应的 using 指令将添加到当前文件的顶部。(之前为 \"omnisharp.enableImportCompletion\")", "configuration.dotnet.completion.showNameCompletionSuggestions": "对最近选择的成员执行自动对象名称完成。", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自动显示参数列表中的补全列表", "configuration.dotnet.defaultSolution.description": "要在工作区中打开的默认解决方案的路径,或者设置为“禁用”以跳过它。(之前为 \"omnisharp.defaultLaunchSolution\")", "configuration.dotnet.dotnetPath": "指定要使用的 dotnet 安装目录的路径,而不是默认的系统目录。这仅影响用于承载语言服务器本身的 dotnet 安装。示例: \"/home/username/mycustomdotnetdirectory\"。", "configuration.dotnet.enableXamlTools": "使用 C# 开发工具包时启用 XAML 工具", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "当参数与参数名称匹配时抑制提示", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "当参数名称与方法的意图匹配时禁止显示提示", "configuration.dotnet.navigation.navigateToDecompiledSources": "启用对分解源的导航。", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "仅强制使用 C# 扩展加载项目。使用 C# Dev Kit 不支持的旧项目类型时,这可能很有用。(需要重新加载窗口)", "configuration.dotnet.projects.binaryLogPath": "设置在加载项目时写入 MSBuild 二进制日志的路径,以帮助诊断加载错误。", "configuration.dotnet.projects.enableAutomaticRestore": "如果扩展检测到缺少资产,则启用“自动 NuGet 还原”。", diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index 8afde4396..ace6572ce 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -41,7 +41,7 @@ "configuration.dotnet.completion.provideRegexCompletions": "在完成清單中顯示規則運算式。", "configuration.dotnet.completion.showCompletionItemsFromUnimportedNamespaces": "啟用在完成清單中顯示未匯入的類型和未匯入的擴充方法的支援。認可時,適當的 using 指示詞會新增到目前檔案的頂端。(先前為 `omnisharp.enableImportCompletion`)", "configuration.dotnet.completion.showNameCompletionSuggestions": "為您最近選取的成員執行自動物件名稱完成。", - "configuration.dotnet.completion.triggerCompletionInArgumentLists": "Automatically show completion list in argument lists", + "configuration.dotnet.completion.triggerCompletionInArgumentLists": "自動在引數清單中顯示自動完成清單", "configuration.dotnet.defaultSolution.description": "要在工作區中開啟的預設解決方案路徑,或設為 [停用] 以略過它。(先前為 `omnisharp.defaultLaunchSolution`)", "configuration.dotnet.dotnetPath": "指定要使用的 dotnet 安裝目錄路徑,而非系統預設的路徑。這只會影響用來裝載語言伺服器本身的 dotnet 安裝。範例: \"/home/username/mycustomdotnetdirectory”。", "configuration.dotnet.enableXamlTools": "使用 C# 開發套件時啟用 XAML 工具", @@ -55,6 +55,7 @@ "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchArgumentName": "當引數符合參數名稱時抑制提示", "configuration.dotnet.inlayHints.suppressInlayHintsForParametersThatMatchMethodIntent": "當參數名稱符合方法的意圖時,不出現提示", "configuration.dotnet.navigation.navigateToDecompiledSources": "啟用到反向組譯來源的瀏覽。", + "configuration.dotnet.navigation.navigateToSourceLinkAndEmbeddedSources": "Enable navigation to source link and embedded sources.", "configuration.dotnet.preferCSharpExtension": "強制專案僅以 C# 延伸模組載入。使用 C# 開發人員套件不支援的舊版專案類型時,這會很有用。(需要重新載入視窗)", "configuration.dotnet.projects.binaryLogPath": "設定載入專案時,寫入 MSBuild 二進位記錄的路徑,以協助診斷載入錯誤。", "configuration.dotnet.projects.enableAutomaticRestore": "如果延伸模組偵測到資產遺失,則啟用自動 NuGet 還原。", diff --git a/src/coreclrDebug/activate.ts b/src/coreclrDebug/activate.ts index 232d07dea..c6242c5d2 100644 --- a/src/coreclrDebug/activate.ts +++ b/src/coreclrDebug/activate.ts @@ -12,11 +12,11 @@ import { DebuggerPrerequisiteWarning, DebuggerPrerequisiteFailure, DebuggerNotInstalledFailure, -} from '../omnisharp/loggingEvents'; +} from '../shared/loggingEvents'; import { EventStream } from '../eventStream'; import { getRuntimeDependencyPackageWithId } from '../tools/runtimeDependencyPackageUtils'; import { getDotnetInfo } from '../shared/utils/getDotnetInfo'; -import { RemoteAttachPicker } from '../features/processPicker'; +import { RemoteAttachPicker } from '../shared/processPicker'; import CompositeDisposable from '../compositeDisposable'; import { BaseVsDbgConfigurationProvider } from '../shared/configurationProvider'; import { omnisharpOptions } from '../shared/options'; diff --git a/src/csharpExtensionExports.ts b/src/csharpExtensionExports.ts index a6a717a2f..99bc7e372 100644 --- a/src/csharpExtensionExports.ts +++ b/src/csharpExtensionExports.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { Advisor } from './features/diagnosticsProvider'; +import { Advisor } from './omnisharp/features/diagnosticsProvider'; import { EventStream } from './eventStream'; -import TestManager from './features/dotnetTest'; +import TestManager from './omnisharp/features/dotnetTest'; import { GlobalBrokeredServiceContainer } from '@microsoft/servicehub-framework'; import { RequestType } from 'vscode-languageclient/node'; import { LanguageServerEvents } from './lsptoolshost/languageServerEvents'; diff --git a/src/eventStream.ts b/src/eventStream.ts index c514bfd11..946370b93 100644 --- a/src/eventStream.ts +++ b/src/eventStream.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Subject, Subscription } from 'rxjs'; -import { BaseEvent } from './omnisharp/loggingEvents'; +import { BaseEvent } from './shared/loggingEvents'; export class EventStream { private sink: Subject; diff --git a/src/installRuntimeDependencies.ts b/src/installRuntimeDependencies.ts index f271768ac..7218d6c93 100644 --- a/src/installRuntimeDependencies.ts +++ b/src/installRuntimeDependencies.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { PlatformInformation } from './shared/platform'; -import { PackageInstallation, LogPlatformInfo, InstallationSuccess } from './omnisharp/loggingEvents'; +import { PackageInstallation, LogPlatformInfo, InstallationSuccess } from './shared/loggingEvents'; import { EventStream } from './eventStream'; import { getRuntimeDependenciesPackages } from './tools/runtimeDependencyPackageUtils'; import { getAbsolutePathPackagesToInstall } from './packageManager/getAbsolutePathPackagesToInstall'; diff --git a/src/main.ts b/src/main.ts index 120fb8255..9ab45bc83 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,39 +3,24 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as OmniSharp from './omnisharp/extension'; import * as coreclrdebug from './coreclrDebug/activate'; import * as util from './common'; import * as vscode from 'vscode'; -import { ActivationFailure, ActiveTextEditorChanged } from './omnisharp/loggingEvents'; -import { WarningMessageObserver } from './observers/warningMessageObserver'; +import { ActivationFailure } from './shared/loggingEvents'; import { CsharpChannelObserver } from './shared/observers/csharpChannelObserver'; import { CsharpLoggerObserver } from './shared/observers/csharpLoggerObserver'; -import { DotNetChannelObserver } from './observers/dotnetChannelObserver'; -import { DotnetLoggerObserver } from './observers/dotnetLoggerObserver'; import { EventStream } from './eventStream'; -import { InformationMessageObserver } from './observers/informationMessageObserver'; -import { OmnisharpChannelObserver } from './observers/omnisharpChannelObserver'; -import { OmnisharpDebugModeLoggerObserver } from './observers/omnisharpDebugModeLoggerObserver'; -import { OmnisharpLoggerObserver } from './observers/omnisharpLoggerObserver'; -import { OmnisharpStatusBarObserver } from './observers/omnisharpStatusBarObserver'; import { PlatformInformation } from './shared/platform'; -import { StatusBarItemAdapter } from './statusBarItemAdapter'; -import { ProjectStatusBarObserver } from './observers/projectStatusBarObserver'; +import TelemetryReporter from '@vscode/extension-telemetry'; import { vscodeNetworkSettingsProvider } from './networkSettings'; -import { ErrorMessageObserver } from './observers/errorMessageObserver'; -import DotNetTestChannelObserver from './observers/dotnetTestChannelObserver'; -import DotNetTestLoggerObserver from './observers/dotnetTestLoggerObserver'; import createOptionStream from './shared/observables/createOptionStream'; import { activateRazorExtension } from './razor/razor'; -import { RazorLoggerObserver } from './observers/razorLoggerObserver'; import { AbsolutePathPackage } from './packageManager/absolutePathPackage'; import { downloadAndInstallPackages } from './packageManager/downloadAndInstallPackages'; import IInstallDependencies from './packageManager/IInstallDependencies'; import { installRuntimeDependencies } from './installRuntimeDependencies'; import { isValidDownload } from './packageManager/isValidDownload'; -import { BackgroundWorkStatusBarObserver } from './observers/backgroundWorkStatusBarObserver'; import { getDotnetPackApi } from './dotnetPack'; import { RoslynLanguageServer, activateRoslynLanguageServer } from './lsptoolshost/roslynLanguageServer'; import { MigrateOptions } from './shared/migrateOptions'; @@ -46,9 +31,7 @@ import { GlobalBrokeredServiceContainer } from '@microsoft/servicehub-framework' import { CSharpExtensionExports, OmnisharpExtensionExports } from './csharpExtensionExports'; import { csharpDevkitExtensionId, getCSharpDevKit } from './utils/getCSharpDevKit'; import { BlazorDebugConfigurationProvider } from './razor/src/blazorDebug/blazorDebugConfigurationProvider'; -import { RazorOmnisharpDownloader } from './razor/razorOmnisharpDownloader'; import { RoslynLanguageServerExport } from './lsptoolshost/roslynLanguageServerExportChannel'; -import { registerOmnisharpOptionChanges } from './omnisharp/omnisharpOptionChanges'; import { RoslynLanguageServerEvents } from './lsptoolshost/languageServerEvents'; import { ServerState } from './lsptoolshost/serverStateChange'; import { SolutionSnapshotProvider } from './lsptoolshost/services/solutionSnapshotProvider'; @@ -56,6 +39,7 @@ import { commonOptions, languageServerOptions, omnisharpOptions, razorOptions } import { BuildResultDiagnostics } from './lsptoolshost/services/buildResultReporterService'; import { debugSessionTracker } from './coreclrDebug/provisionalDebugSessionTracker'; import { getComponentFolder } from './lsptoolshost/builtInComponents'; +import { activateOmniSharpLanguageServer, ActivationResult } from './omnisharp/omnisharpLanguageServer'; export async function activate( context: vscode.ExtensionContext @@ -75,6 +59,11 @@ export async function activate( throw error; } + const aiKey = context.extension.packageJSON.contributes.debuggers[0].aiKey; + const reporter = new TelemetryReporter(aiKey); + // ensure it gets properly disposed. Upon disposal the events will be flushed. + context.subscriptions.push(reporter); + const dotnetTestChannel = vscode.window.createOutputChannel('.NET Test Log'); const dotnetChannel = vscode.window.createOutputChannel('.NET NuGet Restore'); const csharpChannel = vscode.window.createOutputChannel('C#'); @@ -96,10 +85,8 @@ export async function activate( // If the dotnet bundle is installed, this will ensure the dotnet CLI is on the path. await initializeDotnetPath(); - const useModernNetOption = omnisharpOptions.useModernNet; - const networkSettingsProvider = vscodeNetworkSettingsProvider(vscode); - const useFramework = useOmnisharpServer && useModernNetOption !== true; + const useFramework = useOmnisharpServer && omnisharpOptions.useModernNet !== true; const installDependencies: IInstallDependencies = async (dependencies: AbsolutePathPackage[]) => downloadAndInstallPackages(dependencies, networkSettingsProvider, eventStream, isValidDownload); const runtimeDependenciesExist = await ensureRuntimeDependencies( @@ -111,7 +98,7 @@ export async function activate( requiredPackageIds ); - let omnisharpLangServicePromise: Promise | undefined = undefined; + let omnisharpLangServicePromise: Promise | undefined = undefined; let omnisharpRazorPromise: Promise | undefined = undefined; const roslynLanguageServerEvents = new RoslynLanguageServerEvents(); context.subscriptions.push(roslynLanguageServerEvents); @@ -157,107 +144,17 @@ export async function activate( roslynLanguageServerEvents ); } else { - // Set command enablement to use O# commands. - vscode.commands.executeCommand('setContext', 'dotnet.server.activationContext', 'OmniSharp'); - - const dotnetChannelObserver = new DotNetChannelObserver(dotnetChannel); - const dotnetLoggerObserver = new DotnetLoggerObserver(dotnetChannel); - eventStream.subscribe(dotnetChannelObserver.post); - eventStream.subscribe(dotnetLoggerObserver.post); - - const dotnetTestChannelObserver = new DotNetTestChannelObserver(dotnetTestChannel); - const dotnetTestLoggerObserver = new DotNetTestLoggerObserver(dotnetTestChannel); - eventStream.subscribe(dotnetTestChannelObserver.post); - eventStream.subscribe(dotnetTestLoggerObserver.post); - - const omnisharpChannel = vscode.window.createOutputChannel('OmniSharp Log'); - const omnisharpLogObserver = new OmnisharpLoggerObserver(omnisharpChannel, platformInfo); - const omnisharpChannelObserver = new OmnisharpChannelObserver(omnisharpChannel); - eventStream.subscribe(omnisharpLogObserver.post); - eventStream.subscribe(omnisharpChannelObserver.post); - - const warningMessageObserver = new WarningMessageObserver( - vscode, - () => omnisharpOptions.disableMSBuildDiagnosticWarning || false - ); - eventStream.subscribe(warningMessageObserver.post); - - const informationMessageObserver = new InformationMessageObserver(vscode); - eventStream.subscribe(informationMessageObserver.post); - - const errorMessageObserver = new ErrorMessageObserver(vscode); - eventStream.subscribe(errorMessageObserver.post); - - const omnisharpStatusBar = new StatusBarItemAdapter( - vscode.window.createStatusBarItem( - 'C#-Language-Service-Status', - vscode.StatusBarAlignment.Left, - Number.MIN_VALUE + 2 - ) - ); - omnisharpStatusBar.name = 'C# Language Service Status'; - const omnisharpStatusBarObserver = new OmnisharpStatusBarObserver(omnisharpStatusBar); - eventStream.subscribe(omnisharpStatusBarObserver.post); - - const projectStatusBar = new StatusBarItemAdapter( - vscode.window.createStatusBarItem( - 'C#-Project-Selector', - vscode.StatusBarAlignment.Left, - Number.MIN_VALUE + 1 - ) - ); - projectStatusBar.name = 'C# Project Selector'; - const projectStatusBarObserver = new ProjectStatusBarObserver(projectStatusBar); - eventStream.subscribe(projectStatusBarObserver.post); - - const backgroundWorkStatusBar = new StatusBarItemAdapter( - vscode.window.createStatusBarItem('C#-Code-Analysis', vscode.StatusBarAlignment.Left, Number.MIN_VALUE) - ); - backgroundWorkStatusBar.name = 'C# Code Analysis'; - const backgroundWorkStatusBarObserver = new BackgroundWorkStatusBarObserver(backgroundWorkStatusBar); - eventStream.subscribe(backgroundWorkStatusBarObserver.post); - - const debugMode = false; - if (debugMode) { - const omnisharpDebugModeLoggerObserver = new OmnisharpDebugModeLoggerObserver(omnisharpChannel); - eventStream.subscribe(omnisharpDebugModeLoggerObserver.post); - } - - const razorObserver = new RazorLoggerObserver(csharpChannel); - eventStream.subscribe(razorObserver.post); - - if (!razorOptions.razorDevMode) { - // Download Razor O# server - const razorOmnisharpDownloader = new RazorOmnisharpDownloader( - networkSettingsProvider, - eventStream, - context.extension.packageJSON, - platformInfo, - context.extension.extensionPath - ); - - await razorOmnisharpDownloader.DownloadAndInstallRazorOmnisharp( - context.extension.packageJSON.defaults.razorOmnisharp - ); - } - // activate language services - omnisharpLangServicePromise = OmniSharp.activate( + omnisharpLangServicePromise = activateOmniSharpLanguageServer( context, - context.extension.packageJSON, platformInfo, + optionStream, networkSettingsProvider, eventStream, - context.extension.extensionPath, - omnisharpChannel - ); - - context.subscriptions.push(registerOmnisharpOptionChanges(optionStream)); - - context.subscriptions.push( - vscode.window.onDidChangeActiveTextEditor(() => { - eventStream.post(new ActiveTextEditorChanged()); - }) + csharpChannel, + dotnetTestChannel, + dotnetChannel, + reporter ); if (!razorOptions.razorDevMode) { @@ -286,7 +183,7 @@ export async function activate( await vscode.window.showErrorMessage(errorMessage, setupButton).then((selectedItem) => { if (selectedItem === setupButton) { const remoteDebugInfoURL = - 'https://github.com/OmniSharp/omnisharp-vscode/wiki/Remote-Debugging-On-Linux-Arm'; + 'https://github.com/dotnet/vscode-csharp/wiki/Remote-Debugging-On-Linux-Arm'; vscode.env.openExternal(vscode.Uri.parse(remoteDebugInfoURL)); } }); diff --git a/src/omnisharp/engines/IEngine.ts b/src/omnisharp/engines/IEngine.ts index 59b227686..48affd177 100644 --- a/src/omnisharp/engines/IEngine.ts +++ b/src/omnisharp/engines/IEngine.ts @@ -8,8 +8,8 @@ import { LaunchTarget } from '../../shared/launchTarget'; import Disposable from '../../disposable'; import { OmniSharpServer } from '../server'; import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; -import { Advisor } from '../../features/diagnosticsProvider'; -import TestManager from '../../features/dotnetTest'; +import { Advisor } from '../features/diagnosticsProvider'; +import TestManager from '../features/dotnetTest'; import { EventStream } from '../../eventStream'; export interface IEngine { diff --git a/src/omnisharp/engines/lspEngine.ts b/src/omnisharp/engines/lspEngine.ts index de0a3176d..1c2ec0e22 100644 --- a/src/omnisharp/engines/lspEngine.ts +++ b/src/omnisharp/engines/lspEngine.ts @@ -9,7 +9,7 @@ import { configure } from '../launcher'; import { LaunchTarget } from '../../shared/launchTarget'; import { EventEmitter } from 'events'; import { setTimeout } from 'timers'; -import * as ObservableEvents from '../loggingEvents'; +import * as ObservableEvents from '../omnisharpLoggingEvents'; import { EventStream } from '../../eventStream'; import CompositeDisposable from '../../compositeDisposable'; import Disposable from '../../disposable'; @@ -38,8 +38,8 @@ import { DiagnosticFeature } from 'vscode-languageclient/lib/common/diagnostic'; import { NotebookDocumentSyncFeature } from 'vscode-languageclient/lib/common/notebook'; import { TypeHierarchyFeature } from 'vscode-languageclient/lib/common/typeHierarchy'; import { CallHierarchyFeature } from 'vscode-languageclient/lib/common/callHierarchy'; -import { Advisor } from '../../features/diagnosticsProvider'; -import dotnetTest from '../../features/dotnetTest'; +import { Advisor } from '../features/diagnosticsProvider'; +import dotnetTest from '../features/dotnetTest'; export class LspEngine implements IEngine { client: LanguageClient | undefined; diff --git a/src/omnisharp/engines/stdioEngine.ts b/src/omnisharp/engines/stdioEngine.ts index b6d5889ae..1fda3bcc3 100644 --- a/src/omnisharp/engines/stdioEngine.ts +++ b/src/omnisharp/engines/stdioEngine.ts @@ -15,7 +15,7 @@ import { omnisharpOptions } from '../../shared/options'; import { PlatformInformation } from '../../shared/platform'; import { launchOmniSharp } from '../launcher'; import { setTimeout } from 'timers'; -import * as ObservableEvents from '../loggingEvents'; +import * as ObservableEvents from '../omnisharpLoggingEvents'; import { EventStream } from '../../eventStream'; import CompositeDisposable from '../../compositeDisposable'; import Disposable from '../../disposable'; @@ -23,32 +23,32 @@ import { IHostExecutableResolver } from '../../shared/constants/IHostExecutableR import { removeBOMFromBuffer, removeBOMFromString } from '../../utils/removeBom'; import { IEngine } from './IEngine'; import { Events, OmniSharpServer } from '../server'; -import DefinitionMetadataDocumentProvider from '../../features/definitionMetadataDocumentProvider'; -import SourceGeneratedDocumentProvider from '../../features/sourceGeneratedDocumentProvider'; +import DefinitionMetadataDocumentProvider from '../features/definitionMetadataDocumentProvider'; +import SourceGeneratedDocumentProvider from '../features/sourceGeneratedDocumentProvider'; import * as vscode from 'vscode'; -import OmniSharpCodeLensProvider from '../../features/codeLensProvider'; -import OmniSharpDocumentHighlightProvider from '../../features/documentHighlightProvider'; -import OmniSharpDocumentSymbolProvider from '../../features/documentSymbolProvider'; -import OmniSharpHoverProvider from '../../features/hoverProvider'; -import OmniSharpRenameProvider from '../../features/renameProvider'; -import OmniSharpFormatProvider from '../../features/formattingEditProvider'; -import OmniSharpWorkspaceSymbolProvider from '../../features/workspaceSymbolProvider'; -import OmniSharpSignatureHelpProvider from '../../features/signatureHelpProvider'; -import { OmniSharpFixAllProvider } from '../../features/fixAllProvider'; -import OmniSharpCompletionProvider, { CompletionAfterInsertCommand } from '../../features/completionProvider'; -import OmniSharpReferenceProvider from '../../features/referenceProvider'; -import OmniSharpImplementationProvider from '../../features/implementationProvider'; -import OmniSharpSemanticTokensProvider from '../../features/semanticTokensProvider'; -import OmniSharpInlayHintProvider from '../../features/inlayHintProvider'; -import fileOpenClose from '../../features/fileOpenCloseProvider'; -import trackVirtualDocuments from '../../features/virtualDocumentTracker'; -import OmniSharpCodeActionProvider from '../../features/codeActionProvider'; -import forwardChanges from '../../features/changeForwarding'; -import OmniSharpDefinitionProvider from '../../features/definitionProvider'; -import reportDiagnostics, { Advisor } from '../../features/diagnosticsProvider'; +import OmniSharpCodeLensProvider from '../features/codeLensProvider'; +import OmniSharpDocumentHighlightProvider from '../features/documentHighlightProvider'; +import OmniSharpDocumentSymbolProvider from '../features/documentSymbolProvider'; +import OmniSharpHoverProvider from '../features/hoverProvider'; +import OmniSharpRenameProvider from '../features/renameProvider'; +import OmniSharpFormatProvider from '../features/formattingEditProvider'; +import OmniSharpWorkspaceSymbolProvider from '../features/workspaceSymbolProvider'; +import OmniSharpSignatureHelpProvider from '../features/signatureHelpProvider'; +import { OmniSharpFixAllProvider } from '../features/fixAllProvider'; +import OmniSharpCompletionProvider, { CompletionAfterInsertCommand } from '../features/completionProvider'; +import OmniSharpReferenceProvider from '../features/referenceProvider'; +import OmniSharpImplementationProvider from '../features/implementationProvider'; +import OmniSharpSemanticTokensProvider from '../features/semanticTokensProvider'; +import OmniSharpInlayHintProvider from '../features/inlayHintProvider'; +import fileOpenClose from '../features/fileOpenCloseProvider'; +import trackVirtualDocuments from '../features/virtualDocumentTracker'; +import OmniSharpCodeActionProvider from '../features/codeActionProvider'; +import forwardChanges from '../features/changeForwarding'; +import OmniSharpDefinitionProvider from '../features/definitionProvider'; +import reportDiagnostics, { Advisor } from '../features/diagnosticsProvider'; import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; -import TestManager from '../../features/dotnetTest'; -import { OmniSharpStructureProvider } from '../../features/structureProvider'; +import TestManager from '../features/dotnetTest'; +import { OmniSharpStructureProvider } from '../features/structureProvider'; export class StdioEngine implements IEngine { private static _nextId = 1; diff --git a/src/features/abstractProvider.ts b/src/omnisharp/features/abstractProvider.ts similarity index 83% rename from src/features/abstractProvider.ts rename to src/omnisharp/features/abstractProvider.ts index 64ac36c39..02ae33c31 100644 --- a/src/features/abstractProvider.ts +++ b/src/omnisharp/features/abstractProvider.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { OmniSharpServer } from '../omnisharp/server'; -import CompositeDisposable from '../compositeDisposable'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; +import { OmniSharpServer } from '../server'; +import CompositeDisposable from '../../compositeDisposable'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; export default abstract class AbstractProvider { protected _server: OmniSharpServer; diff --git a/src/features/changeForwarding.ts b/src/omnisharp/features/changeForwarding.ts similarity index 91% rename from src/features/changeForwarding.ts rename to src/omnisharp/features/changeForwarding.ts index 28b4a0a4c..b07394c43 100644 --- a/src/features/changeForwarding.ts +++ b/src/omnisharp/features/changeForwarding.ts @@ -4,11 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import { Uri, workspace } from 'vscode'; -import { OmniSharpServer } from '../omnisharp/server'; -import * as serverUtils from '../omnisharp/utils'; -import { FileChangeType } from '../omnisharp/protocol'; -import { IDisposable } from '../disposable'; -import CompositeDisposable from '../compositeDisposable'; +import { OmniSharpServer } from '../server'; +import * as serverUtils from '../utils'; +import { FileChangeType } from '../protocol'; +import { IDisposable } from '../../disposable'; +import CompositeDisposable from '../../compositeDisposable'; function forwardDocumentChanges(server: OmniSharpServer): IDisposable { return workspace.onDidChangeTextDocument((event) => { diff --git a/src/features/codeActionProvider.ts b/src/omnisharp/features/codeActionProvider.ts similarity index 90% rename from src/features/codeActionProvider.ts rename to src/omnisharp/features/codeActionProvider.ts index 1ba942444..736457a93 100644 --- a/src/features/codeActionProvider.ts +++ b/src/omnisharp/features/codeActionProvider.ts @@ -4,14 +4,14 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { OmniSharpServer } from '../omnisharp/server'; +import { OmniSharpServer } from '../server'; import AbstractProvider from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import CompositeDisposable from '../compositeDisposable'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; -import { buildEditForResponse } from '../omnisharp/fileOperationsResponseEditBuilder'; -import { omnisharpOptions } from '../shared/options'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import CompositeDisposable from '../../compositeDisposable'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; +import { buildEditForResponse } from '../fileOperationsResponseEditBuilder'; +import { omnisharpOptions } from '../../shared/options'; export default class OmniSharpCodeActionProvider extends AbstractProvider diff --git a/src/features/codeLensProvider.ts b/src/omnisharp/features/codeLensProvider.ts similarity index 96% rename from src/features/codeLensProvider.ts rename to src/omnisharp/features/codeLensProvider.ts index 120faad6f..ea00eac36 100644 --- a/src/features/codeLensProvider.ts +++ b/src/omnisharp/features/codeLensProvider.ts @@ -3,20 +3,20 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; import * as vscode from 'vscode'; -import { toLocation } from '../omnisharp/typeConversion'; +import { toLocation } from '../typeConversion'; import AbstractProvider from './abstractProvider'; -import { OmniSharpServer } from '../omnisharp/server'; -import { omnisharpOptions } from '../shared/options'; +import { OmniSharpServer } from '../server'; +import { omnisharpOptions } from '../../shared/options'; import TestManager from './dotnetTest'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; import Structure = protocol.V2.Structure; import SymbolKinds = protocol.V2.SymbolKinds; import SymbolPropertyNames = protocol.V2.SymbolPropertyNames; import SymbolRangeNames = protocol.V2.SymbolRangeNames; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; abstract class OmniSharpCodeLens extends vscode.CodeLens { constructor(range: protocol.V2.Range, public fileName: string) { diff --git a/src/features/commands.ts b/src/omnisharp/features/commands.ts similarity index 90% rename from src/features/commands.ts rename to src/omnisharp/features/commands.ts index 458858946..bbffef58a 100644 --- a/src/features/commands.ts +++ b/src/omnisharp/features/commands.ts @@ -3,30 +3,30 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { OmniSharpServer } from '../omnisharp/server'; -import * as serverUtils from '../omnisharp/utils'; -import { findLaunchTargets } from '../omnisharp/launcher'; -import { LaunchTarget } from '../shared/launchTarget'; +import { OmniSharpServer } from '../server'; +import * as serverUtils from '../utils'; +import { findLaunchTargets } from '../launcher'; +import { LaunchTarget } from '../../shared/launchTarget'; import * as cp from 'child_process'; import * as fs from 'fs'; import * as path from 'path'; -import * as protocol from '../omnisharp/protocol'; +import * as protocol from '../protocol'; import * as vscode from 'vscode'; -import { generateAssets } from '../shared/assets'; +import { generateAssets } from '../../shared/assets'; import { ShowOmniSharpChannel, CommandDotNetRestoreStart, CommandDotNetRestoreProgress, CommandDotNetRestoreSucceeded, CommandDotNetRestoreFailed, -} from '../omnisharp/loggingEvents'; -import { EventStream } from '../eventStream'; -import { PlatformInformation } from '../shared/platform'; -import CompositeDisposable from '../compositeDisposable'; -import reportIssue from '../shared/reportIssue'; -import { IHostExecutableResolver } from '../shared/constants/IHostExecutableResolver'; -import { getDotnetInfo } from '../shared/utils/getDotnetInfo'; -import { IWorkspaceDebugInformationProvider } from '../shared/IWorkspaceDebugInformationProvider'; +} from '../omnisharpLoggingEvents'; +import { EventStream } from '../../eventStream'; +import { PlatformInformation } from '../../shared/platform'; +import CompositeDisposable from '../../compositeDisposable'; +import reportIssue from '../../shared/reportIssue'; +import { IHostExecutableResolver } from '../../shared/constants/IHostExecutableResolver'; +import { getDotnetInfo } from '../../shared/utils/getDotnetInfo'; +import { IWorkspaceDebugInformationProvider } from '../../shared/IWorkspaceDebugInformationProvider'; export default function registerCommands( context: vscode.ExtensionContext, diff --git a/src/features/completionProvider.ts b/src/omnisharp/features/completionProvider.ts similarity index 96% rename from src/features/completionProvider.ts rename to src/omnisharp/features/completionProvider.ts index c3e09a236..251f340e3 100644 --- a/src/features/completionProvider.ts +++ b/src/omnisharp/features/completionProvider.ts @@ -21,16 +21,16 @@ import { CompletionItemLabel, } from 'vscode'; import AbstractProvider from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; import { CancellationToken, CompletionTriggerKind as LspCompletionTriggerKind, InsertTextFormat, } from 'vscode-languageserver-protocol'; -import { createRequest } from '../omnisharp/typeConversion'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; -import { OmniSharpServer } from '../omnisharp/server'; +import { createRequest } from '../typeConversion'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; +import { OmniSharpServer } from '../server'; import { isVirtualCSharpDocument } from './virtualDocumentTracker'; export const CompletionAfterInsertCommand = 'csharp.completion.afterInsert'; diff --git a/src/features/definitionMetadataDocumentProvider.ts b/src/omnisharp/features/definitionMetadataDocumentProvider.ts similarity index 93% rename from src/features/definitionMetadataDocumentProvider.ts rename to src/omnisharp/features/definitionMetadataDocumentProvider.ts index 5be753e8e..376255410 100644 --- a/src/features/definitionMetadataDocumentProvider.ts +++ b/src/omnisharp/features/definitionMetadataDocumentProvider.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { TextDocument, TextDocumentContentProvider, Uri, workspace } from 'vscode'; -import { MetadataResponse } from '../omnisharp/protocol'; -import { IDisposable } from '../disposable'; +import { MetadataResponse } from '../protocol'; +import { IDisposable } from '../../disposable'; export default class DefinitionMetadataDocumentProvider implements TextDocumentContentProvider, IDisposable { readonly scheme = 'omnisharp-metadata'; diff --git a/src/features/definitionProvider.ts b/src/omnisharp/features/definitionProvider.ts similarity index 94% rename from src/features/definitionProvider.ts rename to src/omnisharp/features/definitionProvider.ts index 709eba9a9..9a8534b3c 100644 --- a/src/features/definitionProvider.ts +++ b/src/omnisharp/features/definitionProvider.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as serverUtils from '../omnisharp/utils'; +import * as serverUtils from '../utils'; import { CancellationToken, TypeDefinitionProvider, @@ -19,12 +19,12 @@ import { MetadataRequest, MetadataSource, V2, -} from '../omnisharp/protocol'; -import { createRequest, toRange3, toVscodeLocation } from '../omnisharp/typeConversion'; +} from '../protocol'; +import { createRequest, toRange3, toVscodeLocation } from '../typeConversion'; import AbstractSupport from './abstractProvider'; import DefinitionMetadataOrSourceGeneratedDocumentProvider from './definitionMetadataDocumentProvider'; -import { OmniSharpServer } from '../omnisharp/server'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; +import { OmniSharpServer } from '../server'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; import SourceGeneratedDocumentProvider from './sourceGeneratedDocumentProvider'; export default class OmniSharpDefinitionProvider diff --git a/src/features/diagnosticsProvider.ts b/src/omnisharp/features/diagnosticsProvider.ts similarity index 96% rename from src/features/diagnosticsProvider.ts rename to src/omnisharp/features/diagnosticsProvider.ts index 2e56a505e..8decafb43 100644 --- a/src/features/diagnosticsProvider.ts +++ b/src/omnisharp/features/diagnosticsProvider.ts @@ -3,21 +3,21 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { OmniSharpServer } from '../omnisharp/server'; +import { OmniSharpServer } from '../server'; import AbstractSupport from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { toRange } from '../omnisharp/typeConversion'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import { toRange } from '../typeConversion'; import * as vscode from 'vscode'; -import CompositeDisposable from '../compositeDisposable'; -import { IDisposable } from '../disposable'; +import CompositeDisposable from '../../compositeDisposable'; +import { IDisposable } from '../../disposable'; import { isVirtualCSharpDocument } from './virtualDocumentTracker'; -import { TextDocument } from '../vscodeAdapter'; +import { TextDocument } from '../../vscodeAdapter'; import { Subject, Subscription } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; -import { BackgroundDiagnosticStatus } from '../omnisharp/protocol'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; -import { omnisharpOptions } from '../shared/options'; +import { BackgroundDiagnosticStatus } from '../protocol'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; +import { omnisharpOptions } from '../../shared/options'; export class Advisor { private _disposable: CompositeDisposable; diff --git a/src/features/documentHighlightProvider.ts b/src/omnisharp/features/documentHighlightProvider.ts similarity index 89% rename from src/features/documentHighlightProvider.ts rename to src/omnisharp/features/documentHighlightProvider.ts index 760f7e283..f93d1fcf8 100644 --- a/src/features/documentHighlightProvider.ts +++ b/src/omnisharp/features/documentHighlightProvider.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { createRequest, toRange } from '../omnisharp/typeConversion'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import { createRequest, toRange } from '../typeConversion'; import { DocumentHighlightProvider, DocumentHighlight, diff --git a/src/features/documentSymbolProvider.ts b/src/omnisharp/features/documentSymbolProvider.ts similarity index 96% rename from src/features/documentSymbolProvider.ts rename to src/omnisharp/features/documentSymbolProvider.ts index 9840463cb..532f3d19d 100644 --- a/src/features/documentSymbolProvider.ts +++ b/src/omnisharp/features/documentSymbolProvider.ts @@ -4,14 +4,14 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; import * as vscode from 'vscode'; import Structure = protocol.V2.Structure; import SymbolKinds = protocol.V2.SymbolKinds; import SymbolRangeNames = protocol.V2.SymbolRangeNames; -import { toRange3 } from '../omnisharp/typeConversion'; +import { toRange3 } from '../typeConversion'; export default class OmniSharpDocumentSymbolProvider extends AbstractSupport implements vscode.DocumentSymbolProvider { async provideDocumentSymbols( diff --git a/src/features/documentation.ts b/src/omnisharp/features/documentation.ts similarity index 96% rename from src/features/documentation.ts rename to src/omnisharp/features/documentation.ts index fa05521f6..929536794 100644 --- a/src/features/documentation.ts +++ b/src/omnisharp/features/documentation.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as protocol from '../omnisharp/protocol'; +import * as protocol from '../protocol'; const summaryStartTag = //i; const summaryEndTag = /<\/summary>/i; diff --git a/src/features/dotnetTest.ts b/src/omnisharp/features/dotnetTest.ts similarity index 97% rename from src/features/dotnetTest.ts rename to src/omnisharp/features/dotnetTest.ts index d0036827e..012650785 100644 --- a/src/features/dotnetTest.ts +++ b/src/omnisharp/features/dotnetTest.ts @@ -6,13 +6,13 @@ import * as net from 'net'; import * as os from 'os'; import * as path from 'path'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import * as utils from '../common'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import * as utils from '../../common'; import * as vscode from 'vscode'; import AbstractProvider from './abstractProvider'; -import * as DebuggerEventsProtocol from '../coreclrDebug/debuggerEventsProtocol'; -import { OmniSharpServer } from '../omnisharp/server'; +import * as DebuggerEventsProtocol from '../../coreclrDebug/debuggerEventsProtocol'; +import { OmniSharpServer } from '../server'; import { TestExecutionCountReport, ReportDotNetTestResults, @@ -28,13 +28,13 @@ import { DotNetTestDebugStartFailure, DotNetTestRunInContextStart, DotNetTestDebugInContextStart, -} from '../omnisharp/loggingEvents'; -import { EventStream } from '../eventStream'; +} from '../omnisharpLoggingEvents'; +import { EventStream } from '../../eventStream'; import LaunchConfiguration from './launchConfiguration'; -import Disposable from '../disposable'; -import CompositeDisposable from '../compositeDisposable'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; -import { commonOptions } from '../shared/options'; +import Disposable from '../../disposable'; +import CompositeDisposable from '../../compositeDisposable'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; +import { commonOptions } from '../../shared/options'; const TelemetryReportingDelay = 2 * 60 * 1000; // two minutes diff --git a/src/features/fileOpenCloseProvider.ts b/src/omnisharp/features/fileOpenCloseProvider.ts similarity index 94% rename from src/features/fileOpenCloseProvider.ts rename to src/omnisharp/features/fileOpenCloseProvider.ts index 01adc8735..460038702 100644 --- a/src/features/fileOpenCloseProvider.ts +++ b/src/omnisharp/features/fileOpenCloseProvider.ts @@ -3,11 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IDisposable } from '../disposable'; -import { OmniSharpServer } from '../omnisharp/server'; +import { IDisposable } from '../../disposable'; +import { OmniSharpServer } from '../server'; import * as vscode from 'vscode'; -import CompositeDisposable from '../compositeDisposable'; -import * as serverUtils from '../omnisharp/utils'; +import CompositeDisposable from '../../compositeDisposable'; +import * as serverUtils from '../utils'; import { isVirtualCSharpDocument } from './virtualDocumentTracker'; export default function fileOpenClose(server: OmniSharpServer): IDisposable { diff --git a/src/features/fixAll.ts b/src/omnisharp/features/fixAll.ts similarity index 100% rename from src/features/fixAll.ts rename to src/omnisharp/features/fixAll.ts diff --git a/src/features/fixAllProvider.ts b/src/omnisharp/features/fixAllProvider.ts similarity index 90% rename from src/features/fixAllProvider.ts rename to src/omnisharp/features/fixAllProvider.ts index dd64328bb..e067b22a3 100644 --- a/src/features/fixAllProvider.ts +++ b/src/omnisharp/features/fixAllProvider.ts @@ -4,14 +4,14 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import * as serverUtils from '../omnisharp/utils'; -import * as protocol from '../omnisharp/protocol'; -import { OmniSharpServer } from '../omnisharp/server'; -import { FixAllScope, FixAllItem } from '../omnisharp/protocol'; -import CompositeDisposable from '../compositeDisposable'; +import * as serverUtils from '../utils'; +import * as protocol from '../protocol'; +import { OmniSharpServer } from '../server'; +import { FixAllScope, FixAllItem } from '../protocol'; +import CompositeDisposable from '../../compositeDisposable'; import AbstractProvider from './abstractProvider'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; -import { buildEditForResponse } from '../omnisharp/fileOperationsResponseEditBuilder'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; +import { buildEditForResponse } from '../fileOperationsResponseEditBuilder'; import { CancellationToken } from 'vscode-languageserver-protocol'; export class OmniSharpFixAllProvider extends AbstractProvider implements vscode.CodeActionProvider { diff --git a/src/features/formattingEditProvider.ts b/src/omnisharp/features/formattingEditProvider.ts similarity index 96% rename from src/features/formattingEditProvider.ts rename to src/omnisharp/features/formattingEditProvider.ts index d8b2171f4..fc1145c02 100644 --- a/src/features/formattingEditProvider.ts +++ b/src/omnisharp/features/formattingEditProvider.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; import { DocumentRangeFormattingEditProvider, FormattingOptions, diff --git a/src/features/hoverProvider.ts b/src/omnisharp/features/hoverProvider.ts similarity index 88% rename from src/features/hoverProvider.ts rename to src/omnisharp/features/hoverProvider.ts index 6dfc5d5ab..b812413dc 100644 --- a/src/features/hoverProvider.ts +++ b/src/omnisharp/features/hoverProvider.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { createRequest } from '../omnisharp/typeConversion'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import { createRequest } from '../typeConversion'; import { HoverProvider, Hover, TextDocument, CancellationToken, Position, MarkdownString } from 'vscode'; export default class OmniSharpHoverProvider extends AbstractSupport implements HoverProvider { diff --git a/src/features/implementationProvider.ts b/src/omnisharp/features/implementationProvider.ts similarity index 87% rename from src/features/implementationProvider.ts rename to src/omnisharp/features/implementationProvider.ts index 18d6dc7e1..1b6db10bc 100644 --- a/src/features/implementationProvider.ts +++ b/src/omnisharp/features/implementationProvider.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import { FindImplementationsRequest } from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { createRequest, toLocation } from '../omnisharp/typeConversion'; +import { FindImplementationsRequest } from '../protocol'; +import * as serverUtils from '../utils'; +import { createRequest, toLocation } from '../typeConversion'; import { TextDocument, Position, CancellationToken, ImplementationProvider, Definition } from 'vscode'; export default class OmniSharpImplementationProvider extends AbstractSupport implements ImplementationProvider { diff --git a/src/features/inlayHintProvider.ts b/src/omnisharp/features/inlayHintProvider.ts similarity index 92% rename from src/features/inlayHintProvider.ts rename to src/omnisharp/features/inlayHintProvider.ts index 0b7c974b6..d5f32a3f0 100644 --- a/src/features/inlayHintProvider.ts +++ b/src/omnisharp/features/inlayHintProvider.ts @@ -2,19 +2,19 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as serverUtils from '../omnisharp/utils'; +import * as serverUtils from '../utils'; import * as vscode from 'vscode'; import AbstractProvider from './abstractProvider'; -import { OmniSharpServer } from '../omnisharp/server'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; -import CompositeDisposable from '../compositeDisposable'; +import { OmniSharpServer } from '../server'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; +import CompositeDisposable from '../../compositeDisposable'; import { InlayHint, InlayHintRequest, InlayHintResolve as InlayHintResolveRequest, LinePositionSpanTextChange, -} from '../omnisharp/protocol'; -import { fromVSCodeRange, toVSCodePosition, toVSCodeTextEdit } from '../omnisharp/typeConversion'; +} from '../protocol'; +import { fromVSCodeRange, toVSCodePosition, toVSCodeTextEdit } from '../typeConversion'; import { isVirtualCSharpDocument } from './virtualDocumentTracker'; export default class OmniSharpInlayHintProvider extends AbstractProvider implements vscode.InlayHintsProvider { diff --git a/src/features/launchConfiguration.ts b/src/omnisharp/features/launchConfiguration.ts similarity index 100% rename from src/features/launchConfiguration.ts rename to src/omnisharp/features/launchConfiguration.ts diff --git a/src/features/referenceProvider.ts b/src/omnisharp/features/referenceProvider.ts similarity index 90% rename from src/features/referenceProvider.ts rename to src/omnisharp/features/referenceProvider.ts index 46ed1ffd6..275ccbdc6 100644 --- a/src/features/referenceProvider.ts +++ b/src/omnisharp/features/referenceProvider.ts @@ -4,12 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { createRequest, toLocation, toLocationFromUri } from '../omnisharp/typeConversion'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import { createRequest, toLocation, toLocationFromUri } from '../typeConversion'; import { ReferenceProvider, Location, TextDocument, CancellationToken, Position } from 'vscode'; -import { OmniSharpServer } from '../omnisharp/server'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; +import { OmniSharpServer } from '../server'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; import SourceGeneratedDocumentProvider from './sourceGeneratedDocumentProvider'; export default class OmniSharpReferenceProvider extends AbstractSupport implements ReferenceProvider { diff --git a/src/features/renameProvider.ts b/src/omnisharp/features/renameProvider.ts similarity index 92% rename from src/features/renameProvider.ts rename to src/omnisharp/features/renameProvider.ts index e58d20f94..e160b06bb 100644 --- a/src/features/renameProvider.ts +++ b/src/omnisharp/features/renameProvider.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { createRequest } from '../omnisharp/typeConversion'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import { createRequest } from '../typeConversion'; import { RenameProvider, WorkspaceEdit, TextDocument, Uri, CancellationToken, Position, Range } from 'vscode'; export default class OmniSharpRenameProvider extends AbstractSupport implements RenameProvider { diff --git a/src/features/semanticTokensProvider.ts b/src/omnisharp/features/semanticTokensProvider.ts similarity index 98% rename from src/features/semanticTokensProvider.ts rename to src/omnisharp/features/semanticTokensProvider.ts index 87cbc54da..077c86979 100644 --- a/src/features/semanticTokensProvider.ts +++ b/src/omnisharp/features/semanticTokensProvider.ts @@ -5,13 +5,13 @@ import * as vscode from 'vscode'; import { SemanticTokenTypes } from 'vscode-languageserver-protocol'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { createRequest, toRange2 } from '../omnisharp/typeConversion'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import { createRequest, toRange2 } from '../typeConversion'; import AbstractProvider from './abstractProvider'; -import { OmniSharpServer } from '../omnisharp/server'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; -import { omnisharpOptions } from '../shared/options'; +import { OmniSharpServer } from '../server'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; +import { omnisharpOptions } from '../../shared/options'; // The default TokenTypes defined by VS Code https://github.com/microsoft/vscode/blob/master/src/vs/platform/theme/common/tokenClassificationRegistry.ts#L393 enum DefaultTokenType { diff --git a/src/features/signatureHelpProvider.ts b/src/omnisharp/features/signatureHelpProvider.ts similarity index 93% rename from src/features/signatureHelpProvider.ts rename to src/omnisharp/features/signatureHelpProvider.ts index d3bdb8096..1cea58fc4 100644 --- a/src/features/signatureHelpProvider.ts +++ b/src/omnisharp/features/signatureHelpProvider.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import * as serverUtils from '../omnisharp/utils'; -import { createRequest } from '../omnisharp/typeConversion'; +import * as serverUtils from '../utils'; +import { createRequest } from '../typeConversion'; import { SignatureHelpProvider, SignatureHelp, @@ -16,7 +16,7 @@ import { Position, } from 'vscode'; import { MarkdownString } from 'vscode'; -import { SignatureHelpParameter } from '../omnisharp/protocol'; +import { SignatureHelpParameter } from '../protocol'; export default class OmniSharpSignatureHelpProvider extends AbstractSupport implements SignatureHelpProvider { public async provideSignatureHelp( diff --git a/src/features/sourceGeneratedDocumentProvider.ts b/src/omnisharp/features/sourceGeneratedDocumentProvider.ts similarity index 96% rename from src/features/sourceGeneratedDocumentProvider.ts rename to src/omnisharp/features/sourceGeneratedDocumentProvider.ts index 68f149107..e84da6d38 100644 --- a/src/features/sourceGeneratedDocumentProvider.ts +++ b/src/omnisharp/features/sourceGeneratedDocumentProvider.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as serverUtils from '../omnisharp/utils'; +import * as serverUtils from '../utils'; import { CancellationToken, Event, @@ -15,9 +15,9 @@ import { window, workspace, } from 'vscode'; -import { IDisposable } from '../disposable'; -import { SourceGeneratedFileInfo, SourceGeneratedFileResponse, UpdateType } from '../omnisharp/protocol'; -import { OmniSharpServer } from '../omnisharp/server'; +import { IDisposable } from '../../disposable'; +import { SourceGeneratedFileInfo, SourceGeneratedFileResponse, UpdateType } from '../protocol'; +import { OmniSharpServer } from '../server'; export default class SourceGeneratedDocumentProvider implements TextDocumentContentProvider, IDisposable { readonly scheme = 'omnisharp-source-generated'; diff --git a/src/features/structureProvider.ts b/src/omnisharp/features/structureProvider.ts similarity index 94% rename from src/features/structureProvider.ts rename to src/omnisharp/features/structureProvider.ts index 648c48197..6a0c7a52f 100644 --- a/src/features/structureProvider.ts +++ b/src/omnisharp/features/structureProvider.ts @@ -12,8 +12,8 @@ import { FoldingRangeKind, } from 'vscode'; import AbstractSupport from './abstractProvider'; -import { blockStructure } from '../omnisharp/utils'; -import { V2 } from '../omnisharp/protocol'; +import { blockStructure } from '../utils'; +import { V2 } from '../protocol'; export class OmniSharpStructureProvider extends AbstractSupport implements FoldingRangeProvider { async provideFoldingRanges( diff --git a/src/features/virtualDocumentTracker.ts b/src/omnisharp/features/virtualDocumentTracker.ts similarity index 92% rename from src/features/virtualDocumentTracker.ts rename to src/omnisharp/features/virtualDocumentTracker.ts index b4fbea4a8..b46cf9d16 100644 --- a/src/features/virtualDocumentTracker.ts +++ b/src/omnisharp/features/virtualDocumentTracker.ts @@ -4,13 +4,13 @@ *--------------------------------------------------------------------------------------------*/ import { workspace, TextDocument, Uri } from 'vscode'; -import { OmniSharpServer } from '../omnisharp/server'; -import * as serverUtils from '../omnisharp/utils'; -import { FileChangeType } from '../omnisharp/protocol'; -import { IDisposable } from '../disposable'; -import CompositeDisposable from '../compositeDisposable'; -import { EventStream } from '../eventStream'; -import { DocumentSynchronizationFailure } from '../omnisharp/loggingEvents'; +import { OmniSharpServer } from '../server'; +import * as serverUtils from '../utils'; +import { FileChangeType } from '../protocol'; +import { IDisposable } from '../../disposable'; +import CompositeDisposable from '../../compositeDisposable'; +import { EventStream } from '../../eventStream'; +import { DocumentSynchronizationFailure } from '../omnisharpLoggingEvents'; async function trackCurrentVirtualDocuments(server: OmniSharpServer, eventStream: EventStream) { for (let i = 0; i < workspace.textDocuments.length; i++) { diff --git a/src/features/workspaceSymbolProvider.ts b/src/omnisharp/features/workspaceSymbolProvider.ts similarity index 88% rename from src/features/workspaceSymbolProvider.ts rename to src/omnisharp/features/workspaceSymbolProvider.ts index 53f576ac0..cb0fdbfd8 100644 --- a/src/features/workspaceSymbolProvider.ts +++ b/src/omnisharp/features/workspaceSymbolProvider.ts @@ -4,14 +4,14 @@ *--------------------------------------------------------------------------------------------*/ import AbstractSupport from './abstractProvider'; -import { OmniSharpServer } from '../omnisharp/server'; -import * as protocol from '../omnisharp/protocol'; -import * as serverUtils from '../omnisharp/utils'; -import { toRange } from '../omnisharp/typeConversion'; +import { OmniSharpServer } from '../server'; +import * as protocol from '../protocol'; +import * as serverUtils from '../utils'; +import { toRange } from '../typeConversion'; import { CancellationToken, Uri, WorkspaceSymbolProvider, SymbolInformation, SymbolKind, Location } from 'vscode'; -import { LanguageMiddlewareFeature } from '../omnisharp/languageMiddlewareFeature'; +import { LanguageMiddlewareFeature } from '../languageMiddlewareFeature'; import SourceGeneratedDocumentProvider from './sourceGeneratedDocumentProvider'; -import { omnisharpOptions } from '../shared/options'; +import { omnisharpOptions } from '../../shared/options'; export default class OmniSharpWorkspaceSymbolProvider extends AbstractSupport implements WorkspaceSymbolProvider { constructor( diff --git a/src/observers/backgroundWorkStatusBarObserver.ts b/src/omnisharp/observers/backgroundWorkStatusBarObserver.ts similarity index 82% rename from src/observers/backgroundWorkStatusBarObserver.ts rename to src/omnisharp/observers/backgroundWorkStatusBarObserver.ts index 4e2330ed1..36b69a2c4 100644 --- a/src/observers/backgroundWorkStatusBarObserver.ts +++ b/src/omnisharp/observers/backgroundWorkStatusBarObserver.ts @@ -4,9 +4,10 @@ *--------------------------------------------------------------------------------------------*/ import { BaseStatusBarItemObserver } from './baseStatusBarItemObserver'; -import { BaseEvent, OmnisharpBackgroundDiagnosticStatus } from '../omnisharp/loggingEvents'; -import { EventType } from '../omnisharp/eventType'; -import { BackgroundDiagnosticStatus } from '../omnisharp/protocol'; +import { BaseEvent } from '../../shared/loggingEvents'; +import { OmnisharpBackgroundDiagnosticStatus } from '../omnisharpLoggingEvents'; +import { EventType } from '../../shared/eventType'; +import { BackgroundDiagnosticStatus } from '../protocol'; export class BackgroundWorkStatusBarObserver extends BaseStatusBarItemObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/baseStatusBarItemObserver.ts b/src/omnisharp/observers/baseStatusBarItemObserver.ts similarity index 90% rename from src/observers/baseStatusBarItemObserver.ts rename to src/omnisharp/observers/baseStatusBarItemObserver.ts index c36c217ab..03594675f 100644 --- a/src/observers/baseStatusBarItemObserver.ts +++ b/src/omnisharp/observers/baseStatusBarItemObserver.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { StatusBarItem } from '../vscodeAdapter'; -import { BaseEvent } from '../omnisharp/loggingEvents'; +import { BaseEvent } from '../../shared/loggingEvents'; +import { StatusBarItem } from '../../vscodeAdapter'; export abstract class BaseStatusBarItemObserver { constructor(private statusBarItem: StatusBarItem) {} diff --git a/src/omnisharp/observers/csharpLoggerObserver.ts b/src/omnisharp/observers/csharpLoggerObserver.ts new file mode 100644 index 000000000..c5ccbe252 --- /dev/null +++ b/src/omnisharp/observers/csharpLoggerObserver.ts @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { BaseLoggerObserver } from '../../shared/observers/baseLoggerObserver'; +import { EventType } from '../../shared/eventType'; +import { BaseEvent } from '../../shared/loggingEvents'; +import { DocumentSynchronizationFailure } from '../omnisharpLoggingEvents'; + +export class CSharpLoggerObserver extends BaseLoggerObserver { + public post = (event: BaseEvent) => { + switch (event.type) { + case EventType.ProjectJsonDeprecatedWarning: + this.logger.appendLine( + "Warning: project.json is no longer a supported project format for .NET Core applications. Update to the latest version of .NET Core (https://aka.ms/netcoredownload) and use 'dotnet migrate' to upgrade your project (see https://aka.ms/netcoremigrate for details)." + ); + break; + case EventType.DocumentSynchronizationFailure: + this.handleDocumentSynchronizationFailure(event); + break; + case EventType.LatestBuildDownloadStart: + this.logger.appendLine('Getting latest OmniSharp version information'); + break; + } + }; + + private handleDocumentSynchronizationFailure(event: DocumentSynchronizationFailure) { + this.logger.appendLine(`Failed to synchronize document '${event.documentPath}': ${event.errorMessage}`); + } +} diff --git a/src/observers/dotnetChannelObserver.ts b/src/omnisharp/observers/dotnetChannelObserver.ts similarity index 77% rename from src/observers/dotnetChannelObserver.ts rename to src/omnisharp/observers/dotnetChannelObserver.ts index 349b8fdde..ec05783ae 100644 --- a/src/observers/dotnetChannelObserver.ts +++ b/src/omnisharp/observers/dotnetChannelObserver.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseChannelObserver } from './baseChannelObserver'; -import { BaseEvent } from '../omnisharp/loggingEvents'; -import { EventType } from '../omnisharp/eventType'; +import { BaseChannelObserver } from '../../shared/observers/baseChannelObserver'; +import { EventType } from '../../shared/eventType'; +import { BaseEvent } from '../../shared/loggingEvents'; export class DotNetChannelObserver extends BaseChannelObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/dotnetLoggerObserver.ts b/src/omnisharp/observers/dotnetLoggerObserver.ts similarity index 83% rename from src/observers/dotnetLoggerObserver.ts rename to src/omnisharp/observers/dotnetLoggerObserver.ts index 922cf1762..2fa1ad80e 100644 --- a/src/observers/dotnetLoggerObserver.ts +++ b/src/omnisharp/observers/dotnetLoggerObserver.ts @@ -2,14 +2,14 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseLoggerObserver } from './baseLoggerObserver'; +import { BaseLoggerObserver } from '../../shared/observers/baseLoggerObserver'; +import { BaseEvent } from '../../shared/loggingEvents'; import { - BaseEvent, CommandDotNetRestoreProgress, CommandDotNetRestoreSucceeded, CommandDotNetRestoreFailed, -} from '../omnisharp/loggingEvents'; -import { EventType } from '../omnisharp/eventType'; +} from '../omnisharpLoggingEvents'; +import { EventType } from '../../shared/eventType'; export class DotnetLoggerObserver extends BaseLoggerObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/dotnetTestChannelObserver.ts b/src/omnisharp/observers/dotnetTestChannelObserver.ts similarity index 83% rename from src/observers/dotnetTestChannelObserver.ts rename to src/omnisharp/observers/dotnetTestChannelObserver.ts index 865d7d3b1..eab8cd887 100644 --- a/src/observers/dotnetTestChannelObserver.ts +++ b/src/omnisharp/observers/dotnetTestChannelObserver.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseChannelObserver } from './baseChannelObserver'; -import { BaseEvent } from '../omnisharp/loggingEvents'; -import { EventType } from '../omnisharp/eventType'; +import { BaseChannelObserver } from '../../shared/observers/baseChannelObserver'; +import { EventType } from '../../shared/eventType'; +import { BaseEvent } from '../../shared/loggingEvents'; export default class DotnetTestChannelObserver extends BaseChannelObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/dotnetTestLoggerObserver.ts b/src/omnisharp/observers/dotnetTestLoggerObserver.ts similarity index 96% rename from src/observers/dotnetTestLoggerObserver.ts rename to src/omnisharp/observers/dotnetTestLoggerObserver.ts index 580232f45..876f339a8 100644 --- a/src/observers/dotnetTestLoggerObserver.ts +++ b/src/omnisharp/observers/dotnetTestLoggerObserver.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { BaseEvent } from '../../shared/loggingEvents'; import { - BaseEvent, DotNetTestRunStart, DotNetTestMessage, ReportDotNetTestResults, @@ -15,10 +15,10 @@ import { DotNetTestsInClassRunStart, DotNetTestRunInContextStart, DotNetTestDebugInContextStart, -} from '../omnisharp/loggingEvents'; -import { BaseLoggerObserver } from './baseLoggerObserver'; -import * as protocol from '../omnisharp/protocol'; -import { EventType } from '../omnisharp/eventType'; +} from '../omnisharpLoggingEvents'; +import { BaseLoggerObserver } from '../../shared/observers/baseLoggerObserver'; +import * as protocol from '../protocol'; +import { EventType } from '../../shared/eventType'; export default class DotNetTestLoggerObserver extends BaseLoggerObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/errorMessageObserver.ts b/src/omnisharp/observers/errorMessageObserver.ts similarity index 85% rename from src/observers/errorMessageObserver.ts rename to src/omnisharp/observers/errorMessageObserver.ts index 26b1ef660..410098aa0 100644 --- a/src/observers/errorMessageObserver.ts +++ b/src/omnisharp/observers/errorMessageObserver.ts @@ -3,16 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { - BaseEvent, - ZipError, - DotNetTestRunFailure, - DotNetTestDebugStartFailure, - IntegrityCheckFailure, -} from '../omnisharp/loggingEvents'; -import { vscode } from '../vscodeAdapter'; -import showErrorMessage from './utils/showErrorMessage'; -import { EventType } from '../omnisharp/eventType'; +import { BaseEvent, IntegrityCheckFailure, ZipError } from '../../shared/loggingEvents'; +import { DotNetTestRunFailure, DotNetTestDebugStartFailure } from '../omnisharpLoggingEvents'; +import { vscode } from '../../vscodeAdapter'; +import showErrorMessage from '../../shared/observers/utils/showErrorMessage'; +import { EventType } from '../../shared/eventType'; import { l10n } from 'vscode'; export class ErrorMessageObserver { diff --git a/src/observers/informationMessageObserver.ts b/src/omnisharp/observers/informationMessageObserver.ts similarity index 77% rename from src/observers/informationMessageObserver.ts rename to src/omnisharp/observers/informationMessageObserver.ts index cef60c940..24ef9ca34 100644 --- a/src/observers/informationMessageObserver.ts +++ b/src/omnisharp/observers/informationMessageObserver.ts @@ -3,17 +3,17 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as ObservableEvent from '../omnisharp/loggingEvents'; -import { vscode } from '../vscodeAdapter'; -import showInformationMessage from '../shared/observers/utils/showInformationMessage'; -import { EventType } from '../omnisharp/eventType'; -import { omnisharpOptions } from '../shared/options'; +import { vscode } from '../../vscodeAdapter'; +import showInformationMessage from '../../shared/observers/utils/showInformationMessage'; +import { EventType } from '../../shared/eventType'; +import { omnisharpOptions } from '../../shared/options'; import { l10n } from 'vscode'; +import { BaseEvent } from '../../shared/loggingEvents'; export class InformationMessageObserver { constructor(private vscode: vscode) {} - public post = (event: ObservableEvent.BaseEvent) => { + public post = (event: BaseEvent) => { switch (event.type) { case EventType.OmnisharpServerUnresolvedDependencies: this.handleOmnisharpServerUnresolvedDependencies(); diff --git a/src/observers/omnisharpChannelObserver.ts b/src/omnisharp/observers/omnisharpChannelObserver.ts similarity index 79% rename from src/observers/omnisharpChannelObserver.ts rename to src/omnisharp/observers/omnisharpChannelObserver.ts index d0b5f6930..e5f5b9c1b 100644 --- a/src/observers/omnisharpChannelObserver.ts +++ b/src/omnisharp/observers/omnisharpChannelObserver.ts @@ -3,11 +3,11 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseChannelObserver } from './baseChannelObserver'; -import { OutputChannel } from '../vscodeAdapter'; -import { BaseEvent } from '../omnisharp/loggingEvents'; -import { EventType } from '../omnisharp/eventType'; -import { omnisharpOptions } from '../shared/options'; +import { BaseChannelObserver } from '../../shared/observers/baseChannelObserver'; +import { OutputChannel } from '../../vscodeAdapter'; +import { EventType } from '../../shared/eventType'; +import { omnisharpOptions } from '../../shared/options'; +import { BaseEvent } from '../../shared/loggingEvents'; export class OmnisharpChannelObserver extends BaseChannelObserver { constructor(channel: OutputChannel) { diff --git a/src/observers/omnisharpDebugModeLoggerObserver.ts b/src/omnisharp/observers/omnisharpDebugModeLoggerObserver.ts similarity index 95% rename from src/observers/omnisharpDebugModeLoggerObserver.ts rename to src/omnisharp/observers/omnisharpDebugModeLoggerObserver.ts index bae071a9d..7a2f0390d 100644 --- a/src/observers/omnisharpDebugModeLoggerObserver.ts +++ b/src/omnisharp/observers/omnisharpDebugModeLoggerObserver.ts @@ -3,10 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseLoggerObserver } from './baseLoggerObserver'; +import { BaseLoggerObserver } from '../../shared/observers/baseLoggerObserver'; import * as os from 'os'; +import { BaseEvent } from '../../shared/loggingEvents'; import { - BaseEvent, OmnisharpRequestMessage, OmnisharpServerEnqueueRequest, OmnisharpServerDequeueRequest, @@ -14,8 +14,8 @@ import { OmnisharpServerVerboseMessage, OmnisharpServerProcessRequestStart, OmnisharpEventPacketReceived, -} from '../omnisharp/loggingEvents'; -import { EventType } from '../omnisharp/eventType'; +} from '../omnisharpLoggingEvents'; +import { EventType } from '../../shared/eventType'; export class OmnisharpDebugModeLoggerObserver extends BaseLoggerObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/omnisharpLoggerObserver.ts b/src/omnisharp/observers/omnisharpLoggerObserver.ts similarity index 95% rename from src/observers/omnisharpLoggerObserver.ts rename to src/omnisharp/observers/omnisharpLoggerObserver.ts index 4e2e2ffdc..a9153bd13 100644 --- a/src/observers/omnisharpLoggerObserver.ts +++ b/src/omnisharp/observers/omnisharpLoggerObserver.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseLoggerObserver } from './baseLoggerObserver'; +import { BaseLoggerObserver } from '../../shared/observers/baseLoggerObserver'; +import { BaseEvent } from '../../shared/loggingEvents'; import { - BaseEvent, OmnisharpInitialisation, OmnisharpLaunch, OmnisharpFailure, @@ -15,12 +15,12 @@ import { OmnisharpServerMsBuildProjectDiagnostics, OmnisharpServerOnStdErr, OmnisharpEventPacketReceived, -} from '../omnisharp/loggingEvents'; +} from '../omnisharpLoggingEvents'; import * as os from 'os'; -import { EventType } from '../omnisharp/eventType'; +import { EventType } from '../../shared/eventType'; import * as vscode from 'vscode'; -import { PlatformInformation } from '../shared/platform'; -import { Logger } from '../logger'; +import { PlatformInformation } from '../../shared/platform'; +import { Logger } from '../../logger'; export class OmnisharpLoggerObserver extends BaseLoggerObserver { constructor(channel: vscode.OutputChannel | Logger, private platformInformation: PlatformInformation) { diff --git a/src/observers/omnisharpStatusBarObserver.ts b/src/omnisharp/observers/omnisharpStatusBarObserver.ts similarity index 93% rename from src/observers/omnisharpStatusBarObserver.ts rename to src/omnisharp/observers/omnisharpStatusBarObserver.ts index 3c5681b0b..a6218d57c 100644 --- a/src/observers/omnisharpStatusBarObserver.ts +++ b/src/omnisharp/observers/omnisharpStatusBarObserver.ts @@ -3,15 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { - BaseEvent, - DownloadStart, - InstallationStart, - DownloadProgress, - OmnisharpServerOnStdErr, -} from '../omnisharp/loggingEvents'; +import { BaseEvent, DownloadProgress, DownloadStart, InstallationStart } from '../../shared/loggingEvents'; +import { OmnisharpServerOnStdErr } from '../omnisharpLoggingEvents'; import { BaseStatusBarItemObserver } from './baseStatusBarItemObserver'; -import { EventType } from '../omnisharp/eventType'; +import { EventType } from '../../shared/eventType'; export enum StatusBarColors { Red = 'rgb(218,0,0)', diff --git a/src/observers/projectStatusBarObserver.ts b/src/omnisharp/observers/projectStatusBarObserver.ts similarity index 89% rename from src/observers/projectStatusBarObserver.ts rename to src/omnisharp/observers/projectStatusBarObserver.ts index 22e794da0..b79167daa 100644 --- a/src/observers/projectStatusBarObserver.ts +++ b/src/omnisharp/observers/projectStatusBarObserver.ts @@ -4,9 +4,10 @@ *--------------------------------------------------------------------------------------------*/ import { basename } from 'path'; -import { BaseEvent, WorkspaceInformationUpdated } from '../omnisharp/loggingEvents'; +import { BaseEvent } from '../../shared/loggingEvents'; +import { WorkspaceInformationUpdated } from '../omnisharpLoggingEvents'; import { BaseStatusBarItemObserver } from './baseStatusBarItemObserver'; -import { EventType } from '../omnisharp/eventType'; +import { EventType } from '../../shared/eventType'; export class ProjectStatusBarObserver extends BaseStatusBarItemObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/razorLoggerObserver.ts b/src/omnisharp/observers/razorLoggerObserver.ts similarity index 85% rename from src/observers/razorLoggerObserver.ts rename to src/omnisharp/observers/razorLoggerObserver.ts index 6f08726da..b3d2321b0 100644 --- a/src/observers/razorLoggerObserver.ts +++ b/src/omnisharp/observers/razorLoggerObserver.ts @@ -3,9 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseLoggerObserver } from './baseLoggerObserver'; -import { RazorPluginPathSpecified, BaseEvent, RazorPluginPathDoesNotExist } from '../omnisharp/loggingEvents'; -import { EventType } from '../omnisharp/eventType'; +import { BaseLoggerObserver } from '../../shared/observers/baseLoggerObserver'; +import { RazorPluginPathSpecified, RazorPluginPathDoesNotExist } from '../omnisharpLoggingEvents'; +import { EventType } from '../../shared/eventType'; +import { BaseEvent } from '../../shared/loggingEvents'; export class RazorLoggerObserver extends BaseLoggerObserver { public post = (event: BaseEvent) => { diff --git a/src/observers/telemetryObserver.ts b/src/omnisharp/observers/telemetryObserver.ts similarity index 89% rename from src/observers/telemetryObserver.ts rename to src/omnisharp/observers/telemetryObserver.ts index 9d5d83070..bd4c1afd0 100644 --- a/src/observers/telemetryObserver.ts +++ b/src/omnisharp/observers/telemetryObserver.ts @@ -3,23 +3,22 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { PlatformInformation } from '../shared/platform'; +import { PlatformInformation } from '../../shared/platform'; +import { BaseEvent, InstallationFailure } from '../../shared/loggingEvents'; import { - BaseEvent, - InstallationFailure, TestExecutionCountReport, TelemetryEventWithMeasures, TelemetryEvent, ProjectConfiguration, TelemetryErrorEvent, OmnisharpInitialisation, -} from '../omnisharp/loggingEvents'; -import { PackageError } from '../packageManager/packageError'; -import { EventType } from '../omnisharp/eventType'; -import { getDotnetInfo } from '../shared/utils/getDotnetInfo'; -import { DotnetInfo } from '../shared/utils/dotnetInfo'; -import { ITelemetryReporter, getTelemetryProps } from '../shared/telemetryReporter'; -import { reportProjectConfigurationEvent } from '../shared/projectConfiguration'; +} from '../omnisharpLoggingEvents'; +import { PackageError } from '../../packageManager/packageError'; +import { EventType } from '../../shared/eventType'; +import { getDotnetInfo } from '../../shared/utils/getDotnetInfo'; +import { DotnetInfo } from '../../shared/utils/dotnetInfo'; +import { ITelemetryReporter, getTelemetryProps } from '../../shared/telemetryReporter'; +import { reportProjectConfigurationEvent } from '../../shared/projectConfiguration'; export class TelemetryObserver { private reporter: ITelemetryReporter; diff --git a/src/observers/warningMessageObserver.ts b/src/omnisharp/observers/warningMessageObserver.ts similarity index 84% rename from src/observers/warningMessageObserver.ts rename to src/omnisharp/observers/warningMessageObserver.ts index 70d5515f7..415554967 100644 --- a/src/observers/warningMessageObserver.ts +++ b/src/omnisharp/observers/warningMessageObserver.ts @@ -4,12 +4,13 @@ *--------------------------------------------------------------------------------------------*/ import { debounceTime } from 'rxjs/operators'; -import { vscode } from '../vscodeAdapter'; -import { BaseEvent, OmnisharpServerMsBuildProjectDiagnostics } from '../omnisharp/loggingEvents'; +import { vscode } from '../../vscodeAdapter'; +import { BaseEvent } from '../../shared/loggingEvents'; +import { OmnisharpServerMsBuildProjectDiagnostics } from '../omnisharpLoggingEvents'; import { Scheduler, Subject } from 'rxjs'; -import showWarningMessage from './utils/showWarningMessage'; -import { EventType } from '../omnisharp/eventType'; +import showWarningMessage from '../../shared/observers/utils/showWarningMessage'; +import { EventType } from '../../shared/eventType'; import { l10n } from 'vscode'; export class WarningMessageObserver { diff --git a/src/omnisharp/omnisharpDownloader.ts b/src/omnisharp/omnisharpDownloader.ts index 5186403ea..03be20748 100644 --- a/src/omnisharp/omnisharpDownloader.ts +++ b/src/omnisharp/omnisharpDownloader.ts @@ -10,8 +10,7 @@ import { LogPlatformInfo, InstallationSuccess, InstallationFailure, - LatestBuildDownloadStart, -} from './loggingEvents'; +} from '../shared/loggingEvents'; import { EventStream } from '../eventStream'; import { NetworkSettingsProvider } from '../networkSettings'; import { downloadAndInstallPackages } from '../packageManager/downloadAndInstallPackages'; @@ -19,6 +18,7 @@ import { DownloadFile } from '../packageManager/fileDownloader'; import { getRuntimeDependenciesPackages } from '../tools/runtimeDependencyPackageUtils'; import { getAbsolutePathPackagesToInstall } from '../packageManager/getAbsolutePathPackagesToInstall'; import { isValidDownload } from '../packageManager/isValidDownload'; +import { LatestBuildDownloadStart } from './omnisharpLoggingEvents'; export class OmnisharpDownloader { public constructor( diff --git a/src/omnisharp/extension.ts b/src/omnisharp/omnisharpLanguageServer.ts similarity index 51% rename from src/omnisharp/extension.ts rename to src/omnisharp/omnisharpLanguageServer.ts index cdf267b7e..19aed0d44 100644 --- a/src/omnisharp/extension.ts +++ b/src/omnisharp/omnisharpLanguageServer.ts @@ -3,27 +3,53 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as utils from './utils'; import * as vscode from 'vscode'; -import { addAssetsIfNecessary } from '../shared/assets'; -import { safeLength, sum } from '../common'; -import { DotnetWorkspaceConfigurationProvider } from '../shared/workspaceConfigurationProvider'; -import { OmniSharpServer } from './server'; -import TestManager from '../features/dotnetTest'; -import registerCommands from '../features/commands'; -import { PlatformInformation } from '../shared/platform'; -import { ProjectJsonDeprecatedWarning, OmnisharpStart, RazorDevModeActive } from './loggingEvents'; +import * as utils from './utils'; +import { DotNetChannelObserver } from './observers/dotnetChannelObserver'; +import { DotnetLoggerObserver } from './observers/dotnetLoggerObserver'; +import DotNetTestLoggerObserver from './observers/dotnetTestLoggerObserver'; +import DotNetTestChannelObserver from './observers/dotnetTestChannelObserver'; +import { OmnisharpLoggerObserver } from './observers/omnisharpLoggerObserver'; +import { OmnisharpChannelObserver } from './observers/omnisharpChannelObserver'; +import { WarningMessageObserver } from './observers/warningMessageObserver'; +import { InformationMessageObserver } from './observers/informationMessageObserver'; +import { ErrorMessageObserver } from './observers/errorMessageObserver'; +import { StatusBarItemAdapter } from '../statusBarItemAdapter'; +import { OmnisharpStatusBarObserver } from './observers/omnisharpStatusBarObserver'; import { EventStream } from '../eventStream'; import { NetworkSettingsProvider } from '../networkSettings'; +import { PlatformInformation } from '../shared/platform'; +import { ProjectStatusBarObserver } from './observers/projectStatusBarObserver'; +import { BackgroundWorkStatusBarObserver } from './observers/backgroundWorkStatusBarObserver'; +import { OmnisharpDebugModeLoggerObserver } from './observers/omnisharpDebugModeLoggerObserver'; +import { RazorLoggerObserver } from './observers/razorLoggerObserver'; +import { RazorOmnisharpDownloader } from '../razor/razorOmnisharpDownloader'; +import { omnisharpOptions, razorOptions } from '../shared/options'; import CompositeDisposable from '../compositeDisposable'; -import Disposable from '../disposable'; import { OmniSharpMonoResolver } from './omniSharpMonoResolver'; -import { getMonoVersion } from '../utils/getMonoVersion'; -import { LanguageMiddlewareFeature } from './languageMiddlewareFeature'; import { DotnetResolver } from './dotnetResolver'; -import { Advisor } from '../features/diagnosticsProvider'; -import { OmnisharpWorkspaceDebugInformationProvider } from '../omnisharpWorkspaceDebugInformationProvider'; -import { omnisharpOptions, razorOptions } from '../shared/options'; +import { LanguageMiddlewareFeature } from './languageMiddlewareFeature'; +import { OmniSharpServer } from './server'; +import { Advisor } from './features/diagnosticsProvider'; +import TestManager from './features/dotnetTest'; +import { OmnisharpWorkspaceDebugInformationProvider } from './omnisharpWorkspaceDebugInformationProvider'; +import Disposable from '../disposable'; +import registerCommands from './features/commands'; +import { addAssetsIfNecessary } from '../shared/assets'; +import { + ActiveTextEditorChanged, + OmnisharpStart, + ProjectJsonDeprecatedWarning, + RazorDevModeActive, +} from './omnisharpLoggingEvents'; +import { DotnetWorkspaceConfigurationProvider } from '../shared/workspaceConfigurationProvider'; +import { getMonoVersion } from '../utils/getMonoVersion'; +import { safeLength, sum } from '../common'; +import { TelemetryObserver } from './observers/telemetryObserver'; +import { ITelemetryReporter } from '../shared/telemetryReporter'; +import { Observable } from 'rxjs'; +import { registerOmnisharpOptionChanges } from './omnisharpOptionChanges'; +import { CSharpLoggerObserver } from './observers/csharpLoggerObserver'; export interface ActivationResult { readonly server: OmniSharpServer; @@ -31,7 +57,125 @@ export interface ActivationResult { readonly testManager: TestManager; } -export async function activate( +export async function activateOmniSharpLanguageServer( + context: vscode.ExtensionContext, + platformInfo: PlatformInformation, + optionStream: Observable, + networkSettingsProvider: NetworkSettingsProvider, + eventStream: EventStream, + csharpChannel: vscode.OutputChannel, + dotnetTestChannel: vscode.OutputChannel, + dotnetChannel: vscode.OutputChannel, + reporter: ITelemetryReporter +): Promise { + // Set command enablement to use O# commands. + vscode.commands.executeCommand('setContext', 'dotnet.server.activationContext', 'OmniSharp'); + + const useModernNetOption = omnisharpOptions.useModernNet; + const telemetryObserver = new TelemetryObserver(platformInfo, () => reporter, useModernNetOption); + eventStream.subscribe(telemetryObserver.post); + + const csharpLoggerObserver = new CSharpLoggerObserver(csharpChannel); + eventStream.subscribe(csharpLoggerObserver.post); + + const dotnetChannelObserver = new DotNetChannelObserver(dotnetChannel); + const dotnetLoggerObserver = new DotnetLoggerObserver(dotnetChannel); + eventStream.subscribe(dotnetChannelObserver.post); + eventStream.subscribe(dotnetLoggerObserver.post); + + const dotnetTestChannelObserver = new DotNetTestChannelObserver(dotnetTestChannel); + const dotnetTestLoggerObserver = new DotNetTestLoggerObserver(dotnetTestChannel); + eventStream.subscribe(dotnetTestChannelObserver.post); + eventStream.subscribe(dotnetTestLoggerObserver.post); + + const omnisharpChannel = vscode.window.createOutputChannel('OmniSharp Log'); + const omnisharpLogObserver = new OmnisharpLoggerObserver(omnisharpChannel, platformInfo); + const omnisharpChannelObserver = new OmnisharpChannelObserver(omnisharpChannel); + eventStream.subscribe(omnisharpLogObserver.post); + eventStream.subscribe(omnisharpChannelObserver.post); + + const warningMessageObserver = new WarningMessageObserver( + vscode, + () => omnisharpOptions.disableMSBuildDiagnosticWarning || false + ); + eventStream.subscribe(warningMessageObserver.post); + + const informationMessageObserver = new InformationMessageObserver(vscode); + eventStream.subscribe(informationMessageObserver.post); + + const errorMessageObserver = new ErrorMessageObserver(vscode); + eventStream.subscribe(errorMessageObserver.post); + + const omnisharpStatusBar = new StatusBarItemAdapter( + vscode.window.createStatusBarItem( + 'C#-Language-Service-Status', + vscode.StatusBarAlignment.Left, + Number.MIN_VALUE + 2 + ) + ); + omnisharpStatusBar.name = 'C# Language Service Status'; + const omnisharpStatusBarObserver = new OmnisharpStatusBarObserver(omnisharpStatusBar); + eventStream.subscribe(omnisharpStatusBarObserver.post); + + const projectStatusBar = new StatusBarItemAdapter( + vscode.window.createStatusBarItem('C#-Project-Selector', vscode.StatusBarAlignment.Left, Number.MIN_VALUE + 1) + ); + projectStatusBar.name = 'C# Project Selector'; + const projectStatusBarObserver = new ProjectStatusBarObserver(projectStatusBar); + eventStream.subscribe(projectStatusBarObserver.post); + + const backgroundWorkStatusBar = new StatusBarItemAdapter( + vscode.window.createStatusBarItem('C#-Code-Analysis', vscode.StatusBarAlignment.Left, Number.MIN_VALUE) + ); + backgroundWorkStatusBar.name = 'C# Code Analysis'; + const backgroundWorkStatusBarObserver = new BackgroundWorkStatusBarObserver(backgroundWorkStatusBar); + eventStream.subscribe(backgroundWorkStatusBarObserver.post); + + const debugMode = false; + if (debugMode) { + const omnisharpDebugModeLoggerObserver = new OmnisharpDebugModeLoggerObserver(omnisharpChannel); + eventStream.subscribe(omnisharpDebugModeLoggerObserver.post); + } + + const razorObserver = new RazorLoggerObserver(csharpChannel); + eventStream.subscribe(razorObserver.post); + + if (!razorOptions.razorDevMode) { + // Download Razor O# server + const razorOmnisharpDownloader = new RazorOmnisharpDownloader( + networkSettingsProvider, + eventStream, + context.extension.packageJSON, + platformInfo, + context.extension.extensionPath + ); + + await razorOmnisharpDownloader.DownloadAndInstallRazorOmnisharp( + context.extension.packageJSON.defaults.razorOmnisharp + ); + } + + registerOmnisharpOptionChanges(optionStream); + + context.subscriptions.push( + vscode.window.onDidChangeActiveTextEditor(() => { + eventStream.post(new ActiveTextEditorChanged()); + }) + ); + + // activate language services + return activate( + context, + context.extension.packageJSON, + platformInfo, + networkSettingsProvider, + eventStream, + context.extension.extensionPath, + omnisharpChannel + ); +} + +async function activate( context: vscode.ExtensionContext, packageJSON: any, platformInfo: PlatformInformation, diff --git a/src/omnisharp/loggingEvents.ts b/src/omnisharp/omnisharpLoggingEvents.ts similarity index 77% rename from src/omnisharp/loggingEvents.ts rename to src/omnisharp/omnisharpLoggingEvents.ts index 0a6adf527..fc09d4bf7 100644 --- a/src/omnisharp/loggingEvents.ts +++ b/src/omnisharp/omnisharpLoggingEvents.ts @@ -3,16 +3,12 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { PlatformInformation } from '../shared/platform'; import { Request } from './requestQueue'; import * as protocol from './protocol'; import { LaunchTarget } from '../shared/launchTarget'; -import { EventType } from './eventType'; +import { EventType } from '../shared/eventType'; import { ProjectConfigurationMessage } from '../shared/projectConfiguration'; - -export interface BaseEvent { - type: EventType; -} +import { BaseEvent, EventWithMessage } from '../shared/loggingEvents'; export class TelemetryEvent implements BaseEvent { type = EventType.TelemetryEvent; @@ -62,35 +58,6 @@ export class OmnisharpLaunch implements BaseEvent { ) {} } -export class PackageInstallStart implements BaseEvent { - type = EventType.PackageInstallStart; -} - -export class PackageInstallation implements BaseEvent { - type = EventType.PackageInstallation; - constructor(public packageInfo: string) {} -} - -export class LogPlatformInfo implements BaseEvent { - type = EventType.LogPlatformInfo; - constructor(public info: PlatformInformation) {} -} - -export class InstallationStart implements BaseEvent { - type = EventType.InstallationStart; - constructor(public packageDescription: string) {} -} - -export class InstallationFailure implements BaseEvent { - type = EventType.InstallationFailure; - constructor(public stage: string, public error: any) {} -} - -export class DownloadProgress implements BaseEvent { - type = EventType.DownloadProgress; - constructor(public downloadPercentage: number, public packageDescription: string) {} -} - export class OmnisharpFailure implements BaseEvent { type = EventType.OmnisharpFailure; constructor(public message: string, public error: Error) {} @@ -174,31 +141,6 @@ export class WorkspaceInformationUpdated implements BaseEvent { constructor(public info: protocol.WorkspaceInformationResponse) {} } -export class EventWithMessage implements BaseEvent { - type = EventType.EventWithMessage; - constructor(public message: string) {} -} - -export class DownloadStart implements BaseEvent { - type = EventType.DownloadStart; - constructor(public packageDescription: string) {} -} - -export class DownloadFallBack implements BaseEvent { - type = EventType.DownloadFallBack; - constructor(public fallbackUrl: string) {} -} - -export class DownloadSizeObtained implements BaseEvent { - type = EventType.DownloadSizeObtained; - constructor(public packageSize: number) {} -} - -export class ZipError implements BaseEvent { - type = EventType.ZipError; - constructor(public message: string) {} -} - export class ReportDotNetTestResults implements BaseEvent { type = EventType.ReportDotNetTestResults; constructor(public results: protocol.V2.DotNetTestResult[] | undefined) {} @@ -244,15 +186,6 @@ export class DocumentSynchronizationFailure implements BaseEvent { constructor(public documentPath: string, public errorMessage: string) {} } -export class IntegrityCheckFailure { - type = EventType.IntegrityCheckFailure; - constructor(public packageDescription: string, public url: string, public retry: boolean) {} -} - -export class IntegrityCheckSuccess { - type = EventType.IntegrityCheckSuccess; -} - export class RazorPluginPathSpecified implements BaseEvent { type = EventType.RazorPluginPathSpecified; constructor(public path: string) {} @@ -263,45 +196,42 @@ export class RazorPluginPathDoesNotExist implements BaseEvent { constructor(public path: string) {} } -export class DebuggerPrerequisiteFailure extends EventWithMessage { - type = EventType.DebuggerPrerequisiteFailure; -} -export class DebuggerPrerequisiteWarning extends EventWithMessage { - type = EventType.DebuggerPrerequisiteWarning; -} export class CommandDotNetRestoreProgress extends EventWithMessage { type = EventType.CommandDotNetRestoreProgress; } + export class CommandDotNetRestoreSucceeded extends EventWithMessage { type = EventType.CommandDotNetRestoreSucceeded; } + export class CommandDotNetRestoreFailed extends EventWithMessage { type = EventType.CommandDotNetRestoreFailed; } -export class DownloadSuccess extends EventWithMessage { - type = EventType.DownloadSuccess; -} -export class DownloadFailure extends EventWithMessage { - type = EventType.DownloadFailure; -} + export class OmnisharpServerOnStdErr extends EventWithMessage { type = EventType.OmnisharpServerOnStdErr; } + export class OmnisharpServerMessage extends EventWithMessage { type = EventType.OmnisharpServerMessage; } + export class OmnisharpServerVerboseMessage extends EventWithMessage { type = EventType.OmnisharpServerVerboseMessage; } + export class DotNetTestMessage extends EventWithMessage { type = EventType.DotNetTestMessage; } + export class DotNetTestRunFailure extends EventWithMessage { type = EventType.DotNetTestRunFailure; } + export class DotNetTestDebugWarning extends EventWithMessage { type = EventType.DotNetTestDebugWarning; } + export class DotNetTestDebugStartFailure extends EventWithMessage { type = EventType.DotNetTestDebugStartFailure; } @@ -309,57 +239,59 @@ export class DotNetTestDebugStartFailure extends EventWithMessage { export class RazorDevModeActive implements BaseEvent { type = EventType.RazorDevModeActive; } + export class ProjectModified implements BaseEvent { type = EventType.ProjectModified; } -export class ActivationFailure implements BaseEvent { - type = EventType.ActivationFailure; -} + export class ShowOmniSharpChannel implements BaseEvent { type = EventType.ShowOmniSharpChannel; } -export class DebuggerNotInstalledFailure implements BaseEvent { - type = EventType.DebuggerNotInstalledFailure; -} + export class CommandDotNetRestoreStart implements BaseEvent { type = EventType.CommandDotNetRestoreStart; } -export class InstallationSuccess implements BaseEvent { - type = EventType.InstallationSuccess; -} + export class OmnisharpServerProcessRequestComplete implements BaseEvent { type = EventType.OmnisharpServerProcessRequestComplete; } + export class ProjectJsonDeprecatedWarning implements BaseEvent { type = EventType.ProjectJsonDeprecatedWarning; } + export class OmnisharpOnBeforeServerStart implements BaseEvent { type = EventType.OmnisharpOnBeforeServerStart; } + export class OmnisharpOnBeforeServerInstall implements BaseEvent { type = EventType.OmnisharpOnBeforeServerInstall; } + export class ActiveTextEditorChanged implements BaseEvent { type = EventType.ActiveTextEditorChanged; } + export class OmnisharpServerOnStop implements BaseEvent { type = EventType.OmnisharpServerOnStop; } + export class OmnisharpServerOnStart implements BaseEvent { type = EventType.OmnisharpServerOnStart; } + export class LatestBuildDownloadStart implements BaseEvent { type = EventType.LatestBuildDownloadStart; } + export class OmnisharpRestart implements BaseEvent { type = EventType.OmnisharpRestart; } + export class DotNetTestDebugComplete implements BaseEvent { type = EventType.DotNetTestDebugComplete; } -export class DownloadValidation implements BaseEvent { - type = EventType.DownloadValidation; -} + export class ShowChannel implements BaseEvent { type = EventType.ShowChannel; } diff --git a/src/omnisharpWorkspaceDebugInformationProvider.ts b/src/omnisharp/omnisharpWorkspaceDebugInformationProvider.ts similarity index 90% rename from src/omnisharpWorkspaceDebugInformationProvider.ts rename to src/omnisharp/omnisharpWorkspaceDebugInformationProvider.ts index 76c035b0b..5d73c882c 100644 --- a/src/omnisharpWorkspaceDebugInformationProvider.ts +++ b/src/omnisharp/omnisharpWorkspaceDebugInformationProvider.ts @@ -4,15 +4,15 @@ *--------------------------------------------------------------------------------------------*/ import * as path from 'path'; -import * as serverUtils from './omnisharp/utils'; +import * as serverUtils from './utils'; import { IWorkspaceDebugInformationProvider, ProjectDebugInformation, -} from './shared/IWorkspaceDebugInformationProvider'; -import { OmniSharpServer } from './omnisharp/server'; +} from '../shared/IWorkspaceDebugInformationProvider'; +import { OmniSharpServer } from './server'; import { Uri } from 'vscode'; -import { findNetCoreTargetFramework } from './shared/utils'; -import { isSubfolderOf } from './common'; +import { findNetCoreTargetFramework } from '../shared/utils'; +import { isSubfolderOf } from '../common'; export class OmnisharpWorkspaceDebugInformationProvider implements IWorkspaceDebugInformationProvider { constructor(private server: OmniSharpServer) {} diff --git a/src/omnisharp/requestQueue.ts b/src/omnisharp/requestQueue.ts index 15e32869b..d7f643908 100644 --- a/src/omnisharp/requestQueue.ts +++ b/src/omnisharp/requestQueue.ts @@ -9,7 +9,7 @@ import { OmnisharpServerProcessRequestStart, OmnisharpServerDequeueRequest, OmnisharpServerEnqueueRequest, -} from './loggingEvents'; +} from './omnisharpLoggingEvents'; import { EventStream } from '../eventStream'; export interface Request { diff --git a/src/omnisharp/server.ts b/src/omnisharp/server.ts index e9d04768b..1e19bb9e1 100644 --- a/src/omnisharp/server.ts +++ b/src/omnisharp/server.ts @@ -6,7 +6,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as protocol from './protocol'; -import * as serverUtils from '../omnisharp/utils'; +import * as serverUtils from './utils'; import { vscode, CancellationToken } from '../vscodeAdapter'; import { LaunchTarget, LaunchTargetKind } from '../shared/launchTarget'; import { DelayTracker } from './delayTracker'; @@ -14,7 +14,7 @@ import { EventEmitter } from 'events'; import { OmnisharpManager } from './omnisharpManager'; import { PlatformInformation } from '../shared/platform'; import { OmnisharpDownloader } from './omnisharpDownloader'; -import * as ObservableEvents from './loggingEvents'; +import * as ObservableEvents from './omnisharpLoggingEvents'; import { EventStream } from '../eventStream'; import { NetworkSettingsProvider } from '../networkSettings'; import { Subject } from 'rxjs'; @@ -27,10 +27,10 @@ import { LspEngine } from './engines/lspEngine'; import { IEngine } from './engines/IEngine'; import { StdioEngine } from './engines/stdioEngine'; import { IHostExecutableResolver } from '../shared/constants/IHostExecutableResolver'; -import { showProjectSelector } from '../features/commands'; +import { showProjectSelector } from './features/commands'; import { validateRequirements } from './requirementCheck'; -import { Advisor } from '../features/diagnosticsProvider'; -import TestManager from '../features/dotnetTest'; +import { Advisor } from './features/diagnosticsProvider'; +import TestManager from './features/dotnetTest'; import { findLaunchTargets } from './launcher'; import { ProjectConfigurationMessage } from '../shared/projectConfiguration'; import { commonOptions, omnisharpOptions, razorOptions } from '../shared/options'; diff --git a/src/packageManager/downloadAndInstallPackages.ts b/src/packageManager/downloadAndInstallPackages.ts index a854ee784..9a25b1bfa 100644 --- a/src/packageManager/downloadAndInstallPackages.ts +++ b/src/packageManager/downloadAndInstallPackages.ts @@ -12,9 +12,9 @@ import { EventStream } from '../eventStream'; import { NetworkSettingsProvider } from '../networkSettings'; import { AbsolutePathPackage } from './absolutePathPackage'; import { touchInstallFile, InstallFileType, deleteInstallFile, installFileExists } from '../common'; -import { InstallationFailure, IntegrityCheckFailure } from '../omnisharp/loggingEvents'; +import { InstallationFailure, IntegrityCheckFailure } from '../shared/loggingEvents'; import { mkdirpSync } from 'fs-extra'; -import { PackageInstallStart } from '../omnisharp/loggingEvents'; +import { PackageInstallStart } from '../shared/loggingEvents'; import { DownloadValidator } from './isValidDownload'; import { CancellationToken } from 'vscode'; diff --git a/src/packageManager/fileDownloader.ts b/src/packageManager/fileDownloader.ts index 2dcec511e..cea218574 100644 --- a/src/packageManager/fileDownloader.ts +++ b/src/packageManager/fileDownloader.ts @@ -12,7 +12,7 @@ import { DownloadFailure, DownloadProgress, DownloadSizeObtained, -} from '../omnisharp/loggingEvents'; +} from '../shared/loggingEvents'; import { NestedError } from '../nestedError'; import { parse as parseUrl } from 'url'; import { getProxyAgent } from './proxy'; diff --git a/src/packageManager/isValidDownload.ts b/src/packageManager/isValidDownload.ts index a74cb03d1..fd592395f 100644 --- a/src/packageManager/isValidDownload.ts +++ b/src/packageManager/isValidDownload.ts @@ -5,7 +5,7 @@ import * as crypto from 'crypto'; import { EventStream } from '../eventStream'; -import { IntegrityCheckSuccess, DownloadValidation } from '../omnisharp/loggingEvents'; +import { IntegrityCheckSuccess, DownloadValidation } from '../shared/loggingEvents'; export interface DownloadValidator { (buffer: Buffer, integrity: string | undefined, eventStream: EventStream): boolean; diff --git a/src/packageManager/zipInstaller.ts b/src/packageManager/zipInstaller.ts index ac3247aee..832d5b88f 100644 --- a/src/packageManager/zipInstaller.ts +++ b/src/packageManager/zipInstaller.ts @@ -8,7 +8,7 @@ import { mkdirp } from 'async-file'; import * as path from 'path'; import * as yauzl from 'yauzl'; import { EventStream } from '../eventStream'; -import { InstallationStart, ZipError } from '../omnisharp/loggingEvents'; +import { InstallationStart, ZipError } from '../shared/loggingEvents'; import { NestedError } from '../nestedError'; import { AbsolutePath } from './absolutePath'; diff --git a/src/razor/razorOmnisharpDownloader.ts b/src/razor/razorOmnisharpDownloader.ts index f249e7809..965f7cf99 100644 --- a/src/razor/razorOmnisharpDownloader.ts +++ b/src/razor/razorOmnisharpDownloader.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { PlatformInformation } from '../shared/platform'; -import { PackageInstallation, LogPlatformInfo, InstallationSuccess } from '../omnisharp/loggingEvents'; +import { PackageInstallation, LogPlatformInfo, InstallationSuccess } from '../shared/loggingEvents'; import { EventStream } from '../eventStream'; import { NetworkSettingsProvider } from '../networkSettings'; import { downloadAndInstallPackages } from '../packageManager/downloadAndInstallPackages'; diff --git a/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts b/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts index 9530e493b..8c6e505b0 100644 --- a/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts +++ b/src/razor/src/blazorDebug/blazorDebugConfigurationProvider.ts @@ -13,7 +13,7 @@ import { RazorLogger } from '../razorLogger'; import { JS_DEBUG_NAME, SERVER_APP_NAME } from './constants'; import { onDidTerminateDebugSession } from './terminateDebugHandler'; import showInformationMessage from '../../../shared/observers/utils/showInformationMessage'; -import showErrorMessage from '../../../observers/utils/showErrorMessage'; +import showErrorMessage from '../../../shared/observers/utils/showErrorMessage'; export class BlazorDebugConfigurationProvider implements vscode.DebugConfigurationProvider { private static readonly autoDetectUserNotice: string = vscode.l10n.t( diff --git a/src/razor/src/csharp/csharpProjectedDocument.ts b/src/razor/src/csharp/csharpProjectedDocument.ts index 980faf277..d74c0bb25 100644 --- a/src/razor/src/csharp/csharpProjectedDocument.ts +++ b/src/razor/src/csharp/csharpProjectedDocument.ts @@ -19,7 +19,6 @@ export class CSharpProjectedDocument implements IProjectedDocument { private resolveProvisionalEditAt: number | undefined; private ProvisionalDotPosition: Position | undefined; private hostDocumentVersion: number | null = null; - private projectedDocumentVersion = 0; public constructor(public readonly uri: vscode.Uri) { this.path = getUriPath(uri); @@ -29,10 +28,6 @@ export class CSharpProjectedDocument implements IProjectedDocument { return this.hostDocumentVersion; } - public get projectedDocumentSyncVersion(): number { - return this.projectedDocumentVersion; - } - public get length(): number { return this.content.length; } @@ -153,7 +148,6 @@ export class CSharpProjectedDocument implements IProjectedDocument { } private setContent(content: string) { - this.projectedDocumentVersion++; this.content = content; } } diff --git a/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts b/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts index fd38669eb..229497899 100644 --- a/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts +++ b/src/razor/src/csharp/csharpProjectedDocumentContentProvider.ts @@ -29,7 +29,7 @@ export class CSharpProjectedDocumentContentProvider implements vscode.TextDocume return this.onDidChangeEmitter.event; } - public async provideTextDocumentContent(uri: vscode.Uri) { + public provideTextDocumentContent(uri: vscode.Uri) { const razorDocument = this.findRazorDocument(uri); if (!razorDocument) { // Document was removed from the document manager, meaning there's no more content for this @@ -46,7 +46,7 @@ export class CSharpProjectedDocumentContentProvider implements vscode.TextDocume } const content = `${razorDocument.csharpDocument.getContent()} -// ${razorDocument.csharpDocument.projectedDocumentSyncVersion}`; +// ${razorDocument.csharpDocument.hostDocumentSyncVersion}`; return content; } diff --git a/src/razor/src/document/razorDocumentSynchronizer.ts b/src/razor/src/document/razorDocumentSynchronizer.ts index 78e6fe75a..d98274662 100644 --- a/src/razor/src/document/razorDocumentSynchronizer.ts +++ b/src/razor/src/document/razorDocumentSynchronizer.ts @@ -41,22 +41,10 @@ export class RazorDocumentSynchronizer { const ehdv = expectedHostDocumentVersion; this.logger.logVerbose( `${logId} - Synchronizing '${documentKey}': - Currently at ${projectedDocument.hostDocumentSyncVersion}, synchronizing to version '${ehdv}'. - Current host document version: '${hostDocument.version}' - Current projected document version: '${projectedDocument.projectedDocumentSyncVersion}'` + Currently at ${projectedDocument.hostDocumentSyncVersion}, synchronizing to version '${ehdv}'.'` ); } - if (hostDocument.version !== expectedHostDocumentVersion) { - if (this.logger.verboseEnabled) { - this.logger.logVerbose( - `${logId} - toHostDocumentVersion and hostDocument.version already out of date.` - ); - } - - // Already out-of-date. Allowing synchronizations for now to see if this actually causes any issues. - } - const context: SynchronizationContext = this.createSynchronizationContext( documentKey, projectedDocument, @@ -84,7 +72,7 @@ export class RazorDocumentSynchronizer { const projectedTextDocument = await vscode.workspace.openTextDocument(projectedDocument.uri); const projectedTextDocumentVersion = this.getProjectedTextDocumentVersion(projectedTextDocument); - if (projectedDocument.projectedDocumentSyncVersion !== projectedTextDocumentVersion) { + if (projectedDocument.hostDocumentSyncVersion !== projectedTextDocumentVersion) { if (this.logger.verboseEnabled) { this.logger.logVerbose( `${logId} - Projected text document not in sync with data type, waiting for update... @@ -162,7 +150,6 @@ export class RazorDocumentSynchronizer { logIdentifier: this.synchronizationIdentifier, timeoutId, toHostDocumentVersion, - hostDocumentVersion: hostDocument.version, cancel: (reason) => { for (const reject of rejectionsForCancel) { reject(reason); @@ -210,7 +197,7 @@ export class RazorDocumentSynchronizer { } for (const context of synchronizationContexts) { - if (context.projectedDocument.projectedDocumentSyncVersion === projectedTextDocumentVersion) { + if (context.projectedDocument.hostDocumentSyncVersion === projectedTextDocumentVersion) { if (this.logger.verboseEnabled) { const li = context.logIdentifier; const ptdv = projectedTextDocumentVersion; @@ -269,7 +256,6 @@ interface SynchronizationContext { readonly projectedDocument: IProjectedDocument; readonly logIdentifier: number; readonly toHostDocumentVersion: number; - readonly hostDocumentVersion: number; readonly timeoutId: NodeJS.Timer; readonly projectedDocumentSynchronized: () => void; readonly onProjectedDocumentSynchronized: Promise; diff --git a/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts b/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts index cd2c49561..8507979f8 100644 --- a/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts +++ b/src/razor/src/documentHighlight/razorDocumentHighlightProvider.ts @@ -46,7 +46,7 @@ export class RazorDocumentHighlightProvider continue; } - if (document.version !== remappedResponse.hostDocumentVersion) { + if (projection.hostDocumentVersion !== remappedResponse.hostDocumentVersion) { // This highlight result is for a different version of the text document, bail. continue; } diff --git a/src/razor/src/hover/razorHoverProvider.ts b/src/razor/src/hover/razorHoverProvider.ts index 16c974248..fa6f1aa97 100644 --- a/src/razor/src/hover/razorHoverProvider.ts +++ b/src/razor/src/hover/razorHoverProvider.ts @@ -48,7 +48,7 @@ export class RazorHoverProvider extends RazorLanguageFeatureBase implements vsco return; } - if (document.version !== remappedResponse.hostDocumentVersion) { + if (projection.hostDocumentVersion !== remappedResponse.hostDocumentVersion) { // This hover result is for a different version of the text document, bail. return; } diff --git a/src/razor/src/html/htmlProjectedDocument.ts b/src/razor/src/html/htmlProjectedDocument.ts index b8c2fc530..1ec11bc5d 100644 --- a/src/razor/src/html/htmlProjectedDocument.ts +++ b/src/razor/src/html/htmlProjectedDocument.ts @@ -12,7 +12,6 @@ export class HtmlProjectedDocument implements IProjectedDocument { public readonly path: string; private content = ''; private hostDocumentVersion: number | null = null; - private projectedDocumentVersion = 0; public constructor(public readonly uri: vscode.Uri) { this.path = getUriPath(uri); @@ -22,10 +21,6 @@ export class HtmlProjectedDocument implements IProjectedDocument { return this.hostDocumentVersion; } - public get projectedDocumentSyncVersion(): number { - return this.projectedDocumentVersion; - } - public get length(): number { return this.content.length; } @@ -63,7 +58,6 @@ export class HtmlProjectedDocument implements IProjectedDocument { } private setContent(content: string) { - this.projectedDocumentVersion++; this.content = content; } } diff --git a/src/razor/src/html/htmlProjectedDocumentContentProvider.ts b/src/razor/src/html/htmlProjectedDocumentContentProvider.ts index 9ffec8ea5..214ac156a 100644 --- a/src/razor/src/html/htmlProjectedDocumentContentProvider.ts +++ b/src/razor/src/html/htmlProjectedDocumentContentProvider.ts @@ -46,7 +46,7 @@ export class HtmlProjectedDocumentContentProvider implements vscode.TextDocument } const content = `${razorDocument.htmlDocument.getContent()} -// ${razorDocument.htmlDocument.projectedDocumentSyncVersion}`; +// ${razorDocument.htmlDocument.hostDocumentSyncVersion}`; return content; } diff --git a/src/razor/src/projection/IProjectedDocument.ts b/src/razor/src/projection/IProjectedDocument.ts index d4c8df1c8..f16ce6248 100644 --- a/src/razor/src/projection/IProjectedDocument.ts +++ b/src/razor/src/projection/IProjectedDocument.ts @@ -9,7 +9,6 @@ export interface IProjectedDocument { readonly path: string; readonly uri: vscode.Uri; readonly hostDocumentSyncVersion: number | null; - readonly projectedDocumentSyncVersion: number; readonly length: number; getContent(): string; } diff --git a/src/razor/src/projection/projectionResult.ts b/src/razor/src/projection/projectionResult.ts index 0663f4bd7..55f65d7b3 100644 --- a/src/razor/src/projection/projectionResult.ts +++ b/src/razor/src/projection/projectionResult.ts @@ -10,4 +10,5 @@ export interface ProjectionResult { uri: vscode.Uri; position: vscode.Position; languageKind: LanguageKind; + hostDocumentVersion: number; } diff --git a/src/razor/src/razorLanguageFeatureBase.ts b/src/razor/src/razorLanguageFeatureBase.ts index 0a5cfdc07..60ac7372c 100644 --- a/src/razor/src/razorLanguageFeatureBase.ts +++ b/src/razor/src/razorLanguageFeatureBase.ts @@ -64,6 +64,7 @@ export class RazorLanguageFeatureBase { uri: projectedUri, position: languageResponse.position, languageKind: languageResponse.kind, + hostDocumentVersion: projectedDocument.hostDocumentSyncVersion, } as ProjectionResult; } default: diff --git a/src/shared/configurationProvider.ts b/src/shared/configurationProvider.ts index 942f36771..9ff342ac4 100644 --- a/src/shared/configurationProvider.ts +++ b/src/shared/configurationProvider.ts @@ -14,7 +14,7 @@ import { RemoteAttachPicker, DotNetAttachItemsProviderFactory, AttachPicker, -} from '../features/processPicker'; +} from '../shared/processPicker'; import { PlatformInformation } from './platform'; import { getCSharpDevKit } from '../utils/getCSharpDevKit'; import { commonOptions } from './options'; @@ -193,8 +193,11 @@ export class BaseVsDbgConfigurationProvider implements vscode.DebugConfiguration for (const key of keys) { // Skip since option is set in the launch.json configuration - // Skip 'console' option since this should be set when we know this is a console project. - if (Object.prototype.hasOwnProperty.call(debugConfiguration, key) || key === 'console') { + if ( + Object.prototype.hasOwnProperty.call(debugConfiguration, key) || + key === 'console' || // Skip 'console' option since this should be set when we know this is a console project. + key == 'debugConsoleVerbosity' // Skip 'debugConsoleVerbosity' since this is a C# Dev Kit option + ) { continue; } diff --git a/src/omnisharp/eventType.ts b/src/shared/eventType.ts similarity index 100% rename from src/omnisharp/eventType.ts rename to src/shared/eventType.ts diff --git a/src/shared/loggingEvents.ts b/src/shared/loggingEvents.ts new file mode 100644 index 000000000..a34334e3a --- /dev/null +++ b/src/shared/loggingEvents.ts @@ -0,0 +1,106 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { EventType } from './eventType'; +import { PlatformInformation } from './platform'; + +export interface BaseEvent { + type: EventType; +} + +export class EventWithMessage implements BaseEvent { + type = EventType.EventWithMessage; + constructor(public message: string) {} +} + +export class ActivationFailure implements BaseEvent { + type = EventType.ActivationFailure; +} + +export class DebuggerPrerequisiteFailure extends EventWithMessage { + type = EventType.DebuggerPrerequisiteFailure; +} + +export class DebuggerPrerequisiteWarning extends EventWithMessage { + type = EventType.DebuggerPrerequisiteWarning; +} + +export class DebuggerNotInstalledFailure implements BaseEvent { + type = EventType.DebuggerNotInstalledFailure; +} + +export class PackageInstallStart implements BaseEvent { + type = EventType.PackageInstallStart; +} + +export class PackageInstallation implements BaseEvent { + type = EventType.PackageInstallation; + constructor(public packageInfo: string) {} +} + +export class LogPlatformInfo implements BaseEvent { + type = EventType.LogPlatformInfo; + constructor(public info: PlatformInformation) {} +} + +export class InstallationStart implements BaseEvent { + type = EventType.InstallationStart; + constructor(public packageDescription: string) {} +} + +export class InstallationSuccess implements BaseEvent { + type = EventType.InstallationSuccess; +} + +export class InstallationFailure implements BaseEvent { + type = EventType.InstallationFailure; + constructor(public stage: string, public error: any) {} +} + +export class DownloadStart implements BaseEvent { + type = EventType.DownloadStart; + constructor(public packageDescription: string) {} +} + +export class DownloadFallBack implements BaseEvent { + type = EventType.DownloadFallBack; + constructor(public fallbackUrl: string) {} +} + +export class DownloadSuccess extends EventWithMessage { + type = EventType.DownloadSuccess; +} + +export class DownloadFailure extends EventWithMessage { + type = EventType.DownloadFailure; +} + +export class DownloadSizeObtained implements BaseEvent { + type = EventType.DownloadSizeObtained; + constructor(public packageSize: number) {} +} + +export class DownloadProgress implements BaseEvent { + type = EventType.DownloadProgress; + constructor(public downloadPercentage: number, public packageDescription: string) {} +} + +export class DownloadValidation implements BaseEvent { + type = EventType.DownloadValidation; +} + +export class ZipError implements BaseEvent { + type = EventType.ZipError; + constructor(public message: string) {} +} + +export class IntegrityCheckFailure { + type = EventType.IntegrityCheckFailure; + constructor(public packageDescription: string, public url: string, public retry: boolean) {} +} + +export class IntegrityCheckSuccess { + type = EventType.IntegrityCheckSuccess; +} diff --git a/src/observers/baseChannelObserver.ts b/src/shared/observers/baseChannelObserver.ts similarity index 86% rename from src/observers/baseChannelObserver.ts rename to src/shared/observers/baseChannelObserver.ts index 10118dbd4..1942129df 100644 --- a/src/observers/baseChannelObserver.ts +++ b/src/shared/observers/baseChannelObserver.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as vscode from '../vscodeAdapter'; -import { BaseEvent } from '../omnisharp/loggingEvents'; +import * as vscode from '../../vscodeAdapter'; +import { BaseEvent } from '../../shared/loggingEvents'; export abstract class BaseChannelObserver { constructor(private channel: vscode.OutputChannel) {} diff --git a/src/observers/baseLoggerObserver.ts b/src/shared/observers/baseLoggerObserver.ts similarity index 83% rename from src/observers/baseLoggerObserver.ts rename to src/shared/observers/baseLoggerObserver.ts index abda503c7..b6478572c 100644 --- a/src/observers/baseLoggerObserver.ts +++ b/src/shared/observers/baseLoggerObserver.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as vscode from '../vscodeAdapter'; -import { Logger } from '../logger'; -import { BaseEvent } from '../omnisharp/loggingEvents'; +import * as vscode from '../../vscodeAdapter'; +import { Logger } from '../../logger'; +import { BaseEvent } from '../../shared/loggingEvents'; export abstract class BaseLoggerObserver { public logger: Logger; diff --git a/src/shared/observers/csharpChannelObserver.ts b/src/shared/observers/csharpChannelObserver.ts index 634f42cf9..ccc96b39f 100644 --- a/src/shared/observers/csharpChannelObserver.ts +++ b/src/shared/observers/csharpChannelObserver.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseChannelObserver } from '../../observers/baseChannelObserver'; -import { EventType } from '../../omnisharp/eventType'; -import { BaseEvent } from '../../omnisharp/loggingEvents'; +import { BaseChannelObserver } from './baseChannelObserver'; +import { EventType } from '../eventType'; +import { BaseEvent } from '../../shared/loggingEvents'; export class CsharpChannelObserver extends BaseChannelObserver { public post = (event: BaseEvent) => { diff --git a/src/shared/observers/csharpLoggerObserver.ts b/src/shared/observers/csharpLoggerObserver.ts index 3a78e8a10..e70258621 100644 --- a/src/shared/observers/csharpLoggerObserver.ts +++ b/src/shared/observers/csharpLoggerObserver.ts @@ -3,10 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { BaseLoggerObserver } from '../../observers/baseLoggerObserver'; -import * as Event from '../../omnisharp/loggingEvents'; +import { BaseLoggerObserver } from './baseLoggerObserver'; +import * as Event from '../../shared/loggingEvents'; import { PackageError } from '../../packageManager/packageError'; -import { EventType } from '../../omnisharp/eventType'; +import { EventType } from '../eventType'; export class CsharpLoggerObserver extends BaseLoggerObserver { private dots = 0; @@ -44,23 +44,12 @@ export class CsharpLoggerObserver extends BaseLoggerObserver { case EventType.DebuggerPrerequisiteWarning: this.handleEventWithMessage(event); break; - case EventType.ProjectJsonDeprecatedWarning: - this.logger.appendLine( - "Warning: project.json is no longer a supported project format for .NET Core applications. Update to the latest version of .NET Core (https://aka.ms/netcoredownload) and use 'dotnet migrate' to upgrade your project (see https://aka.ms/netcoremigrate for details)." - ); - break; case EventType.DownloadFallBack: this.handleDownloadFallback(event); break; case EventType.DownloadSizeObtained: this.handleDownloadSizeObtained(event); break; - case EventType.DocumentSynchronizationFailure: - this.handleDocumentSynchronizationFailure(event); - break; - case EventType.LatestBuildDownloadStart: - this.logger.appendLine('Getting latest OmniSharp version information'); - break; case EventType.IntegrityCheckFailure: this.handleIntegrityCheckFailure(event); break; @@ -143,8 +132,4 @@ export class CsharpLoggerObserver extends BaseLoggerObserver { this.logger.appendLine(`Installing package '${event.packageDescription}'`); this.logger.appendLine(); } - - private handleDocumentSynchronizationFailure(event: Event.DocumentSynchronizationFailure) { - this.logger.appendLine(`Failed to synchronize document '${event.documentPath}': ${event.errorMessage}`); - } } diff --git a/src/observers/utils/messageItemWithCommand.ts b/src/shared/observers/utils/messageItemWithCommand.ts similarity index 89% rename from src/observers/utils/messageItemWithCommand.ts rename to src/shared/observers/utils/messageItemWithCommand.ts index 04ead5fe7..f6d9df502 100644 --- a/src/observers/utils/messageItemWithCommand.ts +++ b/src/shared/observers/utils/messageItemWithCommand.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { MessageItem } from '../../vscodeAdapter'; +import { MessageItem } from '../../../vscodeAdapter'; export default interface MessageItemWithCommand extends MessageItem { command: string; diff --git a/src/observers/utils/showErrorMessage.ts b/src/shared/observers/utils/showErrorMessage.ts similarity index 92% rename from src/observers/utils/showErrorMessage.ts rename to src/shared/observers/utils/showErrorMessage.ts index e74843eed..bf0ab6759 100644 --- a/src/observers/utils/showErrorMessage.ts +++ b/src/shared/observers/utils/showErrorMessage.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { vscode } from '../../vscodeAdapter'; +import { vscode } from '../../../vscodeAdapter'; export default async function showErrorMessage(vscode: vscode, message: string, ...items: string[]) { try { diff --git a/src/shared/observers/utils/showInformationMessage.ts b/src/shared/observers/utils/showInformationMessage.ts index 780e71312..4d927f770 100644 --- a/src/shared/observers/utils/showInformationMessage.ts +++ b/src/shared/observers/utils/showInformationMessage.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { vscode } from '../../../vscodeAdapter'; -import MessageItemWithCommand from '../../../observers/utils/messageItemWithCommand'; +import MessageItemWithCommand from './messageItemWithCommand'; export default async function showInformationMessage( vscode: vscode, diff --git a/src/observers/utils/showWarningMessage.ts b/src/shared/observers/utils/showWarningMessage.ts similarity index 94% rename from src/observers/utils/showWarningMessage.ts rename to src/shared/observers/utils/showWarningMessage.ts index 14d5f790f..2d54a16c1 100644 --- a/src/observers/utils/showWarningMessage.ts +++ b/src/shared/observers/utils/showWarningMessage.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { vscode } from '../../vscodeAdapter'; +import { vscode } from '../../../vscodeAdapter'; import MessageItemWithCommand from './messageItemWithCommand'; export default async function showWarningMessage(vscode: vscode, message: string, ...items: MessageItemWithCommand[]) { diff --git a/src/features/processPicker.ts b/src/shared/processPicker.ts similarity index 99% rename from src/features/processPicker.ts rename to src/shared/processPicker.ts index 693f04296..f049b7aa6 100644 --- a/src/features/processPicker.ts +++ b/src/shared/processPicker.ts @@ -9,7 +9,7 @@ import * as os from 'os'; import * as path from 'path'; import * as vscode from 'vscode'; -import { PlatformInformation } from '../shared/platform'; +import { PlatformInformation } from './platform'; import { findPowerShell, getExtensionPath } from '../common'; export interface AttachItem extends vscode.QuickPickItem { diff --git a/src/tools/updatePackageDependencies.ts b/src/tools/updatePackageDependencies.ts index d93c7bd06..f62503abf 100644 --- a/src/tools/updatePackageDependencies.ts +++ b/src/tools/updatePackageDependencies.ts @@ -8,10 +8,10 @@ import * as os from 'os'; import { Package } from '../packageManager/package'; import { DownloadFile } from '../packageManager/fileDownloader'; import { EventStream } from '../eventStream'; -import * as Event from '../omnisharp/loggingEvents'; +import * as Event from '../shared/loggingEvents'; import NetworkSettings, { NetworkSettingsProvider } from '../networkSettings'; import { getBufferIntegrityHash } from '../packageManager/isValidDownload'; -import { EventType } from '../omnisharp/eventType'; +import { EventType } from '../shared/eventType'; interface PackageJSONFile { runtimeDependencies: Package[]; diff --git a/src/xaml/language-configuration.json b/src/xaml/language-configuration.json index 086e48314..0175d6cb2 100644 --- a/src/xaml/language-configuration.json +++ b/src/xaml/language-configuration.json @@ -40,10 +40,7 @@ "surroundingPairs": [ { "open": "'", "close": "'" }, { "open": "\"", "close": "\"" }, - { "open": "{", "close": "}"}, - { "open": "[", "close": "]"}, - { "open": "(", "close": ")" }, - { "open": "<", "close": ">" } + { "open": "{", "close": "}"} ], "colorizedBracketPairs": [ ], diff --git a/tasks/offlinePackagingTasks.ts b/tasks/offlinePackagingTasks.ts index bc02ffa5d..dbd482ef1 100644 --- a/tasks/offlinePackagingTasks.ts +++ b/tasks/offlinePackagingTasks.ts @@ -29,7 +29,7 @@ import { razorDevKitDirectory, } from '../tasks/projectPaths'; import { getPackageJSON } from '../tasks/packageJson'; -import { createPackageAsync } from '../tasks/vsceTasks'; +import { createPackageAsync, generateVsixManifest } from '../tasks/vsceTasks'; import { isValidDownload } from '../src/packageManager/isValidDownload'; import path = require('path'); import { CancellationToken } from 'vscode'; @@ -297,7 +297,7 @@ async function restoreNugetPackage(packageName: string, packageVersion: string, const dotnetArgs = [ 'restore', - path.join(rootPath, 'server'), + path.join(rootPath, 'msbuild', 'server'), `/p:PackageName=${packageName}`, `/p:PackageVersion=${packageVersion}`, ]; @@ -401,7 +401,8 @@ async function buildVsix(packageJSON: any, outputFolder: string, prerelease: boo } const packageFileName = getPackageName(packageJSON, platformInfo?.vsceTarget); - await createPackageAsync(outputFolder, prerelease, packageFileName, platformInfo?.vsceTarget); + const packagePath = await createPackageAsync(outputFolder, prerelease, packageFileName, platformInfo?.vsceTarget); + await generateVsixManifest(packagePath); } function getPackageName(packageJSON: any, vscodePlatformId?: string) { diff --git a/tasks/signingTasks.ts b/tasks/signingTasks.ts new file mode 100644 index 000000000..f9a08ecaa --- /dev/null +++ b/tasks/signingTasks.ts @@ -0,0 +1,92 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as cp from 'child_process'; +import * as fs from 'fs'; +import * as gulp from 'gulp'; +import { rootPath } from './projectPaths'; +import path = require('path'); +// There are no typings for this library. +// eslint-disable-next-line @typescript-eslint/no-var-requires +//const argv = require('yargs').argv; + +gulp.task('signJs', async () => { + await signJs(); +}); + +gulp.task('signVsix', async () => { + await signVsix(); +}); + +// Development task to install the signing plugin locally. +// Required to run test sigining tasks locally. +gulp.task('installSignPlugin', async () => { + await installSignPlugin(); +}); + +async function installSignPlugin(): Promise { + console.log(`Installing MicroBuild.Plugins.Signing`); + await execDotnet([ + 'restore', + path.join(rootPath, 'msbuild', 'server'), + // MicroBuild is expecting the signing plugin to be in the global package folder, so ensure it gets downloaded there. + `/p:DownloadToGlobalNugetFolder=true`, + `/p:PackageName=MicroBuild.Plugins.Signing`, + `/p:PackageVersion=1.1.950`, + `/p:RestoreSources=https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json`, + ]); +} + +async function signJs(): Promise { + const logPath = getLogPath(); + if (process.env.SignType === 'test' && process.platform !== 'win32') { + console.log('Test signing is not supported on non-windows platforms. Skipping JS signing.'); + return; + } + console.log(`Signing JS as ${process.env.SignType}`); + await execDotnet([ + 'build', + path.join(rootPath, 'msbuild', 'signing', 'signJs'), + `-bl:${path.join(logPath, 'signJs.binlog')}`, + `/p:JSOutputPath=${path.join(rootPath, 'dist')}`, + ]); +} + +async function signVsix(): Promise { + const logPath = getLogPath(); + if (process.env.SignType === 'test' && process.platform !== 'win32') { + console.log('Test signing is not supported on non-windows platforms. Skipping VSIX signing.'); + return; + } + console.log(`Signing VSIX as ${process.env.SignType}`); + await execDotnet([ + 'build', + path.join(rootPath, 'msbuild', 'signing', 'signVsix'), + `-bl:${path.join(logPath, 'signVsix.binlog')}`, + ]); +} + +function getLogPath(): string { + const logPath = path.join(rootPath, 'out', 'logs'); + if (!fs.existsSync(logPath)) { + fs.mkdirSync(logPath, { recursive: true }); + } + return logPath; +} + +async function execDotnet(args: string[]): Promise { + const dotnetArgs = args.join(' '); + console.log(`dotnet args: dotnet ${dotnetArgs}`); + const process = cp.spawn('dotnet', args, { stdio: 'inherit' }); + + await new Promise((resolve) => { + process.on('exit', (exitCode, _) => { + if (exitCode !== 0) { + throw new Error(`Failed to run command: dotnet ${dotnetArgs}`); + } + resolve(undefined); + }); + }); +} diff --git a/tasks/testTasks.ts b/tasks/testTasks.ts index a435fcc57..c84e53a1a 100644 --- a/tasks/testTasks.ts +++ b/tasks/testTasks.ts @@ -10,10 +10,10 @@ import { codeExtensionPath, rootPath, outPath } from './projectPaths'; import spawnNode from './spawnNode'; import * as jest from 'jest'; import { Config } from '@jest/types'; -import { jestOmniSharpUnitTestProjectName } from '../omnisharptest/omnisharpUnitTests/jest.config'; -import { jestUnitTestProjectName } from '../test/unitTests/jest.config'; -import { razorTestProjectName } from '../test/razorTests/jest.config'; -import { jestArtifactTestsProjectName } from '../test/artifactTests/jest.config'; +import { jestOmniSharpUnitTestProjectName } from '../test/omnisharp/omnisharpUnitTests/jest.config'; +import { jestUnitTestProjectName } from '../test/lsptoolshost/unitTests/jest.config'; +import { razorTestProjectName } from '../test/razor/razorTests/jest.config'; +import { jestArtifactTestsProjectName } from '../test/lsptoolshost/artifactTests/jest.config'; gulp.task('test:razor', async () => { runJestTest(razorTestProjectName); @@ -22,7 +22,11 @@ gulp.task('test:razor', async () => { const razorIntegrationTestProjects = ['BasicRazorApp2_1']; for (const projectName of razorIntegrationTestProjects) { gulp.task(`test:razorintegration:${projectName}`, async () => - runIntegrationTest(projectName, 'razorIntegrationTests', `Razor Test Integration ${projectName}`) + runIntegrationTest( + projectName, + path.join('razor', 'razorIntegrationTests'), + `Razor Test Integration ${projectName}` + ) ); } @@ -76,7 +80,11 @@ gulp.task('test:unit', async () => { const integrationTestProjects = ['slnWithCsproj']; for (const projectName of integrationTestProjects) { gulp.task(`test:integration:${projectName}`, async () => - runIntegrationTest(projectName, 'integrationTests', `Test Integration ${projectName}`) + runIntegrationTest( + projectName, + path.join('lsptoolshost', 'integrationTests'), + `Test Integration ${projectName}` + ) ); } @@ -89,7 +97,7 @@ gulp.task('test', gulp.series('test:unit', 'test:integration', 'test:razor', 'te async function runOmnisharpJestIntegrationTest(testAssetName: string, engine: 'stdio' | 'lsp', suiteName: string) { const workspaceFile = `omnisharp${engine === 'lsp' ? '_lsp' : ''}_${testAssetName}.code-workspace`; - const testFolder = path.join('omnisharptest', 'omnisharpIntegrationTests'); + const testFolder = path.join('test', 'omnisharp', 'omnisharpIntegrationTests'); const env = { OSVC_SUITE: testAssetName, diff --git a/tasks/vsceTasks.ts b/tasks/vsceTasks.ts index ad45cc72d..ce109ac77 100644 --- a/tasks/vsceTasks.ts +++ b/tasks/vsceTasks.ts @@ -13,9 +13,9 @@ import { vscePath } from './projectPaths'; export async function createPackageAsync( outputFolder: string, prerelease: boolean, - packageName?: string, + packageName: string, vscodePlatformId?: string -) { +): Promise { const vsceArgs = []; let packagePath = undefined; @@ -31,13 +31,8 @@ export async function createPackageAsync( } vsceArgs.push('-o'); - if (packageName !== undefined) { - //if we have specified an output folder then put the files in that output folder - packagePath = path.join(outputFolder, packageName); - vsceArgs.push(packagePath); - } else { - vsceArgs.push(outputFolder); - } + packagePath = path.join(outputFolder, packageName); + vsceArgs.push(packagePath); if (vscodePlatformId !== undefined) { vsceArgs.push('--target'); @@ -60,4 +55,30 @@ export async function createPackageAsync( throw new Error(`vsce failed to create: '${packagePath}'`); } } + + return packagePath; +} + +export async function generateVsixManifest(vsixPath: string) { + const vsceArgs = []; + if (!(await util.fileExists(vscePath))) { + throw new Error(`vsce does not exist at expected location: '${vscePath}'`); + } + + vsceArgs.push(vscePath); + vsceArgs.push('generate-manifest'); + vsceArgs.push('--packagePath'); + vsceArgs.push(vsixPath); + + const parsed = path.parse(vsixPath); + const outputFolder = parsed.dir; + const vsixNameWithoutExtension = parsed.name; + + vsceArgs.push('-o'); + vsceArgs.push(path.join(outputFolder, `${vsixNameWithoutExtension}.manifest`)); + + const spawnResult = await spawnNode(vsceArgs); + if (spawnResult.code != 0) { + throw new Error(`'${vsceArgs.join(' ')}' failed with code ${spawnResult.code}.`); + } } diff --git a/test/csharp-standalone-profile.code-profile b/test/csharp-standalone-profile.code-profile new file mode 100644 index 000000000..795669a96 --- /dev/null +++ b/test/csharp-standalone-profile.code-profile @@ -0,0 +1 @@ +{"name":"csharp-standalone-profile","extensions":"[{\"identifier\":{\"id\":\"ms-dotnettools.csharp\",\"uuid\":\"d0bfc4ab-1d3a-4487-8782-7cf6027b4fff\"},\"displayName\":\"C#\"},{\"identifier\":{\"id\":\"ms-dotnettools.vscode-dotnet-runtime\",\"uuid\":\"1aab81a1-b3d9-4aef-976b-577d5d90fe3f\"},\"displayName\":\".NET Install Tool\"}]","globalState":"{\"storage\":{\"workbench.panel.pinnedPanels\":\"[{\\\"id\\\":\\\"workbench.panel.markers\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":0},{\\\"id\\\":\\\"workbench.panel.output\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":1},{\\\"id\\\":\\\"refactorPreview\\\",\\\"pinned\\\":true,\\\"visible\\\":false},{\\\"id\\\":\\\"workbench.panel.testResults\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":3},{\\\"id\\\":\\\"terminal\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":3},{\\\"id\\\":\\\"~remote.forwardedPortsContainer\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":5},{\\\"id\\\":\\\"workbench.panel.repl\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":2},{\\\"id\\\":\\\"workbench.panel.comments\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":10}]\",\"workbench.activity.pinnedViewlets2\":\"[{\\\"id\\\":\\\"workbench.view.explorer\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":0},{\\\"id\\\":\\\"workbench.view.debug\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":3},{\\\"id\\\":\\\"workbench.view.remote\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":4},{\\\"id\\\":\\\"workbench.view.scm\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":2},{\\\"id\\\":\\\"workbench.view.extension.test\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":6},{\\\"id\\\":\\\"workbench.view.extensions\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":4},{\\\"id\\\":\\\"workbench.view.search\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":1},{\\\"id\\\":\\\"workbench.panel.chatSidebar\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":100},{\\\"id\\\":\\\"workbench.view.extension.references-view\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":7},{\\\"id\\\":\\\"workbench.view.sync\\\",\\\"pinned\\\":true,\\\"visible\\\":false},{\\\"id\\\":\\\"workbench.view.editSessions\\\",\\\"pinned\\\":true,\\\"visible\\\":false}]\",\"workbench.explorer.views.state.hidden\":\"[{\\\"id\\\":\\\"workbench.explorer.openEditorsView\\\",\\\"isHidden\\\":false,\\\"order\\\":0},{\\\"id\\\":\\\"solutionExplorer\\\",\\\"isHidden\\\":false,\\\"order\\\":1},{\\\"id\\\":\\\"workbench.explorer.fileView\\\",\\\"isHidden\\\":false,\\\"order\\\":2},{\\\"id\\\":\\\"outline\\\",\\\"isHidden\\\":false,\\\"order\\\":3},{\\\"id\\\":\\\"timeline\\\",\\\"isHidden\\\":false,\\\"order\\\":4},{\\\"id\\\":\\\"npm\\\",\\\"isHidden\\\":true,\\\"order\\\":5},{\\\"id\\\":\\\"copilot-chat-requests\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.graph\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.graphDetails\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"azureActivityLog\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"syntaxTree\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.home\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"operationTree\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.launchpad\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.drafts\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.workspaces\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.account\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.commitDetails\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.pullRequest\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.lineHistory\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.fileHistory\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.timeline\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.searchAndCompare\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.patchDetails\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"azureFocusView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"azureResourceGroups\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"azureWorkspace\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"ms-azuretools.helpAndFeedback\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"dockerContainers\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"dockerImages\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"dockerRegistries\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"dockerNetworks\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"dockerVolumes\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"vscode-docker.views.dockerContexts\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"vscode-docker.views.help\\\",\\\"isHidden\\\":false}]\",\"colorThemeData\":\"{\\\"id\\\":\\\"vs-dark vscode-theme-defaults-themes-dark_modern-json\\\",\\\"label\\\":\\\"Dark Modern\\\",\\\"settingsId\\\":\\\"Default Dark Modern\\\",\\\"themeTokenColors\\\":[{\\\"settings\\\":{\\\"foreground\\\":\\\"#D4D4D4\\\"},\\\"scope\\\":[\\\"meta.embedded\\\",\\\"source.groovy.embedded\\\",\\\"string meta.image.inline.markdown\\\",\\\"variable.legacy.builtin.python\\\"]},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"emphasis\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\"},\\\"scope\\\":\\\"strong\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#000080\\\"},\\\"scope\\\":\\\"header\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"},\\\"scope\\\":\\\"comment\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"constant.language\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":[\\\"constant.numeric\\\",\\\"variable.other.enummember\\\",\\\"keyword.operator.plus.exponent\\\",\\\"keyword.operator.minus.exponent\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#646695\\\"},\\\"scope\\\":\\\"constant.regexp\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"entity.name.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":[\\\"entity.name.tag.css\\\",\\\"entity.name.tag.less\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":\\\"entity.other.attribute-name\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":[\\\"entity.other.attribute-name.class.css\\\",\\\"source.css entity.other.attribute-name.class\\\",\\\"entity.other.attribute-name.id.css\\\",\\\"entity.other.attribute-name.parent-selector.css\\\",\\\"entity.other.attribute-name.parent.less\\\",\\\"source.css entity.other.attribute-name.pseudo-class\\\",\\\"entity.other.attribute-name.pseudo-element.css\\\",\\\"source.css.less entity.other.attribute-name.id\\\",\\\"entity.other.attribute-name.scss\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f44747\\\"},\\\"scope\\\":\\\"invalid\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"},\\\"scope\\\":\\\"markup.underline\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"markup.bold\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"markup.heading\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"markup.italic\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"strikethrough\\\"},\\\"scope\\\":\\\"markup.strikethrough\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"markup.inserted\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"markup.deleted\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"markup.changed\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"},\\\"scope\\\":\\\"punctuation.definition.quote.begin.markdown\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#6796e6\\\"},\\\"scope\\\":\\\"punctuation.definition.list.begin.markdown\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"markup.inline.raw\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#808080\\\"},\\\"scope\\\":\\\"punctuation.definition.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"meta.preprocessor\\\",\\\"entity.name.function.preprocessor\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"meta.preprocessor.string\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"meta.preprocessor.numeric\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":\\\"meta.structure.dictionary.key.python\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"meta.diff.header\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"storage\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"storage.type\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"storage.modifier\\\",\\\"keyword.operator.noexcept\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":[\\\"string\\\",\\\"meta.embedded.assembly\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"string.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"string.value\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"},\\\"scope\\\":\\\"string.regexp\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"punctuation.definition.template-expression.begin\\\",\\\"punctuation.definition.template-expression.end\\\",\\\"punctuation.section.embedded\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"},\\\"scope\\\":[\\\"meta.template.expression\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":[\\\"support.type.vendored.property-name\\\",\\\"support.type.property-name\\\",\\\"source.css variable\\\",\\\"source.coffee.embedded\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"keyword\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"keyword.control\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"},\\\"scope\\\":\\\"keyword.operator\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"keyword.operator.new\\\",\\\"keyword.operator.expression\\\",\\\"keyword.operator.cast\\\",\\\"keyword.operator.sizeof\\\",\\\"keyword.operator.alignof\\\",\\\"keyword.operator.typeid\\\",\\\"keyword.operator.alignas\\\",\\\"keyword.operator.instanceof\\\",\\\"keyword.operator.logical.python\\\",\\\"keyword.operator.wordlike\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"keyword.other.unit\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"punctuation.section.embedded.begin.php\\\",\\\"punctuation.section.embedded.end.php\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":\\\"support.function.git-rebase\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"constant.sha.git-rebase\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"},\\\"scope\\\":[\\\"storage.modifier.import.java\\\",\\\"variable.language.wildcard.java\\\",\\\"storage.modifier.package.java\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"variable.language\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"},\\\"scope\\\":[\\\"entity.name.function\\\",\\\"support.function\\\",\\\"support.constant.handlebars\\\",\\\"source.powershell variable.other.member\\\",\\\"entity.name.operator.custom-literal\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"},\\\"scope\\\":[\\\"support.class\\\",\\\"support.type\\\",\\\"entity.name.type\\\",\\\"entity.name.namespace\\\",\\\"entity.other.attribute\\\",\\\"entity.name.scope-resolution\\\",\\\"entity.name.class\\\",\\\"storage.type.numeric.go\\\",\\\"storage.type.byte.go\\\",\\\"storage.type.boolean.go\\\",\\\"storage.type.string.go\\\",\\\"storage.type.uintptr.go\\\",\\\"storage.type.error.go\\\",\\\"storage.type.rune.go\\\",\\\"storage.type.cs\\\",\\\"storage.type.generic.cs\\\",\\\"storage.type.modifier.cs\\\",\\\"storage.type.variable.cs\\\",\\\"storage.type.annotation.java\\\",\\\"storage.type.generic.java\\\",\\\"storage.type.java\\\",\\\"storage.type.object.array.java\\\",\\\"storage.type.primitive.array.java\\\",\\\"storage.type.primitive.java\\\",\\\"storage.type.token.java\\\",\\\"storage.type.groovy\\\",\\\"storage.type.annotation.groovy\\\",\\\"storage.type.parameters.groovy\\\",\\\"storage.type.generic.groovy\\\",\\\"storage.type.object.array.groovy\\\",\\\"storage.type.primitive.array.groovy\\\",\\\"storage.type.primitive.groovy\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"},\\\"scope\\\":[\\\"meta.type.cast.expr\\\",\\\"meta.type.new.expr\\\",\\\"support.constant.math\\\",\\\"support.constant.dom\\\",\\\"support.constant.json\\\",\\\"entity.other.inherited-class\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C586C0\\\"},\\\"scope\\\":[\\\"keyword.control\\\",\\\"source.cpp keyword.operator.new\\\",\\\"keyword.operator.delete\\\",\\\"keyword.other.using\\\",\\\"keyword.other.directive.using\\\",\\\"keyword.other.operator\\\",\\\"entity.name.operator\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"},\\\"scope\\\":[\\\"variable\\\",\\\"meta.definition.variable.name\\\",\\\"support.variable\\\",\\\"entity.name.variable\\\",\\\"constant.other.placeholder\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#4FC1FF\\\"},\\\"scope\\\":[\\\"variable.other.constant\\\",\\\"variable.other.enummember\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"},\\\"scope\\\":[\\\"meta.object-literal.key\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"},\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"},\\\"scope\\\":[\\\"punctuation.definition.group.regexp\\\",\\\"punctuation.definition.group.assertion.regexp\\\",\\\"punctuation.definition.character-class.regexp\\\",\\\"punctuation.character.set.begin.regexp\\\",\\\"punctuation.character.set.end.regexp\\\",\\\"keyword.operator.negation.regexp\\\",\\\"support.other.parenthesis.regexp\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"},\\\"scope\\\":[\\\"constant.character.character-class.regexp\\\",\\\"constant.other.character-class.set.regexp\\\",\\\"constant.other.character-class.regexp\\\",\\\"constant.character.set.regexp\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"},\\\"scope\\\":[\\\"keyword.operator.or.regexp\\\",\\\"keyword.control.anchor.regexp\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"constant.character\\\",\\\"constant.other.option\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":\\\"constant.character.escape\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C8C8C8\\\"},\\\"scope\\\":\\\"entity.name.label\\\"}],\\\"semanticTokenRules\\\":[{\\\"_selector\\\":\\\"newOperator\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#d4d4d4\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"stringLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#ce9178\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"customLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#d4d4d4\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"numberLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#b5cea8\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"newOperator\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#c586c0\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"stringLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#ce9178\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"customLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#dcdcaa\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"numberLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#b5cea8\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}}],\\\"extensionData\\\":{\\\"_extensionId\\\":\\\"vscode.theme-defaults\\\",\\\"_extensionIsBuiltin\\\":true,\\\"_extensionName\\\":\\\"theme-defaults\\\",\\\"_extensionPublisher\\\":\\\"vscode\\\"},\\\"themeSemanticHighlighting\\\":true,\\\"colorMap\\\":{\\\"checkbox.border\\\":\\\"#3c3c3c\\\",\\\"editor.background\\\":\\\"#1f1f1f\\\",\\\"editor.foreground\\\":\\\"#cccccc\\\",\\\"editor.inactiveSelectionBackground\\\":\\\"#3a3d41\\\",\\\"editorIndentGuide.background1\\\":\\\"#404040\\\",\\\"editorIndentGuide.activeBackground1\\\":\\\"#707070\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#add6ff26\\\",\\\"list.dropBackground\\\":\\\"#383b3d\\\",\\\"activityBarBadge.background\\\":\\\"#0078d4\\\",\\\"sideBarTitle.foreground\\\":\\\"#cccccc\\\",\\\"input.placeholderForeground\\\":\\\"#989898\\\",\\\"menu.background\\\":\\\"#1f1f1f\\\",\\\"menu.foreground\\\":\\\"#cccccc\\\",\\\"menu.separatorBackground\\\":\\\"#454545\\\",\\\"menu.border\\\":\\\"#454545\\\",\\\"menu.selectionBackground\\\":\\\"#0078d4\\\",\\\"statusBarItem.remoteForeground\\\":\\\"#ffffff\\\",\\\"statusBarItem.remoteBackground\\\":\\\"#0078d4\\\",\\\"ports.iconRunningProcessForeground\\\":\\\"#369432\\\",\\\"sideBarSectionHeader.background\\\":\\\"#181818\\\",\\\"sideBarSectionHeader.border\\\":\\\"#2b2b2b\\\",\\\"tab.selectedBackground\\\":\\\"#222222\\\",\\\"tab.selectedForeground\\\":\\\"#ffffffa0\\\",\\\"tab.lastPinnedBorder\\\":\\\"#cccccc33\\\",\\\"list.activeSelectionIconForeground\\\":\\\"#ffffff\\\",\\\"terminal.inactiveSelectionBackground\\\":\\\"#3a3d41\\\",\\\"widget.border\\\":\\\"#313131\\\",\\\"actionBar.toggledBackground\\\":\\\"#383a49\\\",\\\"activityBar.activeBorder\\\":\\\"#0078d4\\\",\\\"activityBar.background\\\":\\\"#181818\\\",\\\"activityBar.border\\\":\\\"#2b2b2b\\\",\\\"activityBar.foreground\\\":\\\"#d7d7d7\\\",\\\"activityBar.inactiveForeground\\\":\\\"#868686\\\",\\\"activityBarBadge.foreground\\\":\\\"#ffffff\\\",\\\"badge.background\\\":\\\"#616161\\\",\\\"badge.foreground\\\":\\\"#f8f8f8\\\",\\\"button.background\\\":\\\"#0078d4\\\",\\\"button.border\\\":\\\"#ffffff12\\\",\\\"button.foreground\\\":\\\"#ffffff\\\",\\\"button.hoverBackground\\\":\\\"#026ec1\\\",\\\"button.secondaryBackground\\\":\\\"#313131\\\",\\\"button.secondaryForeground\\\":\\\"#cccccc\\\",\\\"button.secondaryHoverBackground\\\":\\\"#3c3c3c\\\",\\\"chat.slashCommandBackground\\\":\\\"#34414b\\\",\\\"chat.slashCommandForeground\\\":\\\"#40a6ff\\\",\\\"checkbox.background\\\":\\\"#313131\\\",\\\"debugToolBar.background\\\":\\\"#181818\\\",\\\"descriptionForeground\\\":\\\"#9d9d9d\\\",\\\"dropdown.background\\\":\\\"#313131\\\",\\\"dropdown.border\\\":\\\"#3c3c3c\\\",\\\"dropdown.foreground\\\":\\\"#cccccc\\\",\\\"dropdown.listBackground\\\":\\\"#1f1f1f\\\",\\\"editor.findMatchBackground\\\":\\\"#9e6a03\\\",\\\"editorGroup.border\\\":\\\"#ffffff17\\\",\\\"editorGroupHeader.tabsBackground\\\":\\\"#181818\\\",\\\"editorGroupHeader.tabsBorder\\\":\\\"#2b2b2b\\\",\\\"editorGutter.addedBackground\\\":\\\"#2ea043\\\",\\\"editorGutter.deletedBackground\\\":\\\"#f85149\\\",\\\"editorGutter.modifiedBackground\\\":\\\"#0078d4\\\",\\\"editorLineNumber.activeForeground\\\":\\\"#cccccc\\\",\\\"editorLineNumber.foreground\\\":\\\"#6e7681\\\",\\\"editorOverviewRuler.border\\\":\\\"#010409\\\",\\\"editorWidget.background\\\":\\\"#202020\\\",\\\"errorForeground\\\":\\\"#f85149\\\",\\\"focusBorder\\\":\\\"#0078d4\\\",\\\"foreground\\\":\\\"#cccccc\\\",\\\"icon.foreground\\\":\\\"#cccccc\\\",\\\"input.background\\\":\\\"#313131\\\",\\\"input.border\\\":\\\"#3c3c3c\\\",\\\"input.foreground\\\":\\\"#cccccc\\\",\\\"inputOption.activeBackground\\\":\\\"#2489db82\\\",\\\"inputOption.activeBorder\\\":\\\"#2488db\\\",\\\"keybindingLabel.foreground\\\":\\\"#cccccc\\\",\\\"notificationCenterHeader.background\\\":\\\"#1f1f1f\\\",\\\"notificationCenterHeader.foreground\\\":\\\"#cccccc\\\",\\\"notifications.background\\\":\\\"#1f1f1f\\\",\\\"notifications.border\\\":\\\"#2b2b2b\\\",\\\"notifications.foreground\\\":\\\"#cccccc\\\",\\\"panel.background\\\":\\\"#181818\\\",\\\"panel.border\\\":\\\"#2b2b2b\\\",\\\"panelInput.border\\\":\\\"#2b2b2b\\\",\\\"panelTitle.activeBorder\\\":\\\"#0078d4\\\",\\\"panelTitle.activeForeground\\\":\\\"#cccccc\\\",\\\"panelTitle.inactiveForeground\\\":\\\"#9d9d9d\\\",\\\"peekViewEditor.background\\\":\\\"#1f1f1f\\\",\\\"peekViewEditor.matchHighlightBackground\\\":\\\"#bb800966\\\",\\\"peekViewResult.background\\\":\\\"#1f1f1f\\\",\\\"peekViewResult.matchHighlightBackground\\\":\\\"#bb800966\\\",\\\"pickerGroup.border\\\":\\\"#3c3c3c\\\",\\\"progressBar.background\\\":\\\"#0078d4\\\",\\\"quickInput.background\\\":\\\"#222222\\\",\\\"quickInput.foreground\\\":\\\"#cccccc\\\",\\\"settings.dropdownBackground\\\":\\\"#313131\\\",\\\"settings.dropdownBorder\\\":\\\"#3c3c3c\\\",\\\"settings.headerForeground\\\":\\\"#ffffff\\\",\\\"settings.modifiedItemIndicator\\\":\\\"#bb800966\\\",\\\"sideBar.background\\\":\\\"#181818\\\",\\\"sideBar.border\\\":\\\"#2b2b2b\\\",\\\"sideBar.foreground\\\":\\\"#cccccc\\\",\\\"sideBarSectionHeader.foreground\\\":\\\"#cccccc\\\",\\\"statusBar.background\\\":\\\"#181818\\\",\\\"statusBar.border\\\":\\\"#2b2b2b\\\",\\\"statusBar.debuggingBackground\\\":\\\"#0078d4\\\",\\\"statusBar.debuggingForeground\\\":\\\"#ffffff\\\",\\\"statusBar.focusBorder\\\":\\\"#0078d4\\\",\\\"statusBar.foreground\\\":\\\"#cccccc\\\",\\\"statusBar.noFolderBackground\\\":\\\"#1f1f1f\\\",\\\"statusBarItem.focusBorder\\\":\\\"#0078d4\\\",\\\"statusBarItem.prominentBackground\\\":\\\"#6e768166\\\",\\\"tab.activeBackground\\\":\\\"#1f1f1f\\\",\\\"tab.activeBorder\\\":\\\"#1f1f1f\\\",\\\"tab.activeBorderTop\\\":\\\"#0078d4\\\",\\\"tab.activeForeground\\\":\\\"#ffffff\\\",\\\"tab.selectedBorderTop\\\":\\\"#6caddf\\\",\\\"tab.border\\\":\\\"#2b2b2b\\\",\\\"tab.hoverBackground\\\":\\\"#1f1f1f\\\",\\\"tab.inactiveBackground\\\":\\\"#181818\\\",\\\"tab.inactiveForeground\\\":\\\"#9d9d9d\\\",\\\"tab.unfocusedActiveBorder\\\":\\\"#1f1f1f\\\",\\\"tab.unfocusedActiveBorderTop\\\":\\\"#2b2b2b\\\",\\\"tab.unfocusedHoverBackground\\\":\\\"#1f1f1f\\\",\\\"terminal.foreground\\\":\\\"#cccccc\\\",\\\"terminal.tab.activeBorder\\\":\\\"#0078d4\\\",\\\"textBlockQuote.background\\\":\\\"#2b2b2b\\\",\\\"textBlockQuote.border\\\":\\\"#616161\\\",\\\"textCodeBlock.background\\\":\\\"#2b2b2b\\\",\\\"textLink.activeForeground\\\":\\\"#4daafc\\\",\\\"textLink.foreground\\\":\\\"#4daafc\\\",\\\"textPreformat.foreground\\\":\\\"#d0d0d0\\\",\\\"textPreformat.background\\\":\\\"#3c3c3c\\\",\\\"textSeparator.foreground\\\":\\\"#21262d\\\",\\\"titleBar.activeBackground\\\":\\\"#181818\\\",\\\"titleBar.activeForeground\\\":\\\"#cccccc\\\",\\\"titleBar.border\\\":\\\"#2b2b2b\\\",\\\"titleBar.inactiveBackground\\\":\\\"#1f1f1f\\\",\\\"titleBar.inactiveForeground\\\":\\\"#9d9d9d\\\",\\\"welcomePage.tileBackground\\\":\\\"#2b2b2b\\\",\\\"welcomePage.progress.foreground\\\":\\\"#0078d4\\\"},\\\"watch\\\":false}\",\"workbench.view.extension.gitlens.state.hidden\":\"[{\\\"id\\\":\\\"gitlens.views.home\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.launchpad\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.drafts\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.workspaces\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.account\\\",\\\"isHidden\\\":false}]\",\"terminal.hidden\":\"[{\\\"id\\\":\\\"terminal\\\",\\\"isHidden\\\":false}]\",\"workbench.scm.views.state.hidden\":\"[{\\\"id\\\":\\\"workbench.scm.repositories\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.scm\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.scm.history\\\",\\\"isHidden\\\":false}]\",\"workbench.panel.chatSidebar.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.chat.view.copilot\\\",\\\"isHidden\\\":false}]\",\"workbench.panel.alignment\":\"center\",\"workbench.view.extensions.state.hidden\":\"[{\\\"id\\\":\\\"workbench.views.extensions.installed\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchOutdated\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.workspaceRecommendations\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.popular\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchRecentlyUpdated\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.otherRecommendations\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"extensions.recommendedList\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.enabled\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.views.extensions.disabled\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.views.extensions.marketplace\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchInstalled\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchEnabled\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchDisabled\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchBuiltin\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchWorkspaceUnsupported\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.builtinFeatureExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.builtinThemeExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.builtinProgrammingLanguageExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.untrustedUnsupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.untrustedPartiallySupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.virtualUnsupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.virtualPartiallySupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.deprecatedExtensions\\\",\\\"isHidden\\\":false}]\"}}"} \ No newline at end of file diff --git a/test/unitTests/fakes.ts b/test/fakes.ts similarity index 82% rename from test/unitTests/fakes.ts rename to test/fakes.ts index 4ab4313e4..533a65bcc 100644 --- a/test/unitTests/fakes.ts +++ b/test/fakes.ts @@ -3,17 +3,15 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import * as vscode from '../../src/vscodeAdapter'; -import * as protocol from '../../src/omnisharp/protocol'; -import { ITelemetryReporter } from '../../src/shared/telemetryReporter'; -import { MSBuildDiagnosticsMessage } from '../../src/omnisharp/protocol'; +import * as vscode from '../src/vscodeAdapter'; +import * as protocol from '../src/omnisharp/protocol'; +import { ITelemetryReporter } from '../src/shared/telemetryReporter'; import { OmnisharpServerMsBuildProjectDiagnostics, OmnisharpServerOnError, OmnisharpServerUnresolvedDependencies, WorkspaceInformationUpdated, -} from '../../src/omnisharp/loggingEvents'; -import * as vscodeAdapter from '../../src/vscodeAdapter'; +} from '../src/omnisharp/omnisharpLoggingEvents'; export const getNullChannel = (): vscode.OutputChannel => { const returnChannel: vscode.OutputChannel = { @@ -87,8 +85,8 @@ export const getWorkspaceConfiguration = (): vscode.WorkspaceConfiguration => { export function getOmnisharpMSBuildProjectDiagnosticsEvent( fileName: string, - warnings: MSBuildDiagnosticsMessage[], - errors: MSBuildDiagnosticsMessage[] + warnings: protocol.MSBuildDiagnosticsMessage[], + errors: protocol.MSBuildDiagnosticsMessage[] ): OmnisharpServerMsBuildProjectDiagnostics { return new OmnisharpServerMsBuildProjectDiagnostics({ FileName: fileName, @@ -105,7 +103,7 @@ export function getMSBuildDiagnosticsMessage( startColumn: number, endLine: number, endColumn: number -): MSBuildDiagnosticsMessage { +): protocol.MSBuildDiagnosticsMessage { return { LogLevel: logLevel, FileName: fileName, @@ -138,7 +136,7 @@ export function getUnresolvedDependenices(fileName: string): OmnisharpServerUnre }); } -export function getFakeVsCode(): vscodeAdapter.vscode { +export function getFakeVsCode(): vscode.vscode { return { commands: { executeCommand: <_T>(_command: string, ..._rest: any[]) => { @@ -146,16 +144,16 @@ export function getFakeVsCode(): vscodeAdapter.vscode { }, }, languages: { - match: (_selector: vscodeAdapter.DocumentSelector, _document: vscodeAdapter.TextDocument) => { + match: (_selector: vscode.DocumentSelector, _document: vscode.TextDocument) => { throw new Error('Not Implemented'); }, }, window: { activeTextEditor: undefined, - showInformationMessage: (_message: string, ..._items: T[]) => { + showInformationMessage: (_message: string, ..._items: T[]) => { throw new Error('Not Implemented'); }, - showWarningMessage: (_message: string, ..._items: T[]) => { + showWarningMessage: (_message: string, ..._items: T[]) => { throw new Error('Not Implemented'); }, showErrorMessage: (_message: string, ..._items: string[]) => { @@ -164,14 +162,14 @@ export function getFakeVsCode(): vscodeAdapter.vscode { }, workspace: { workspaceFolders: undefined, - getConfiguration: (_section?: string, _resource?: vscodeAdapter.Uri) => { + getConfiguration: (_section?: string, _resource?: vscode.Uri) => { throw new Error('Not Implemented'); }, - asRelativePath: (_pathOrUri: string | vscodeAdapter.Uri, _includeWorkspaceFolder?: boolean) => { + asRelativePath: (_pathOrUri: string | vscode.Uri, _includeWorkspaceFolder?: boolean) => { throw new Error('Not Implemented'); }, createFileSystemWatcher: ( - _globPattern: vscodeAdapter.GlobPattern, + _globPattern: vscode.GlobPattern, _ignoreCreateEvents?: boolean, _ignoreChangeEvents?: boolean, _ignoreDeleteEvents?: boolean @@ -179,10 +177,10 @@ export function getFakeVsCode(): vscodeAdapter.vscode { throw new Error('Not Implemented'); }, onDidChangeConfiguration: ( - _listener: (e: vscodeAdapter.ConfigurationChangeEvent) => any, + _listener: (e: vscode.ConfigurationChangeEvent) => any, _thisArgs?: any, - _disposables?: vscodeAdapter.Disposable[] - ): vscodeAdapter.Disposable => { + _disposables?: vscode.Disposable[] + ): vscode.Disposable => { throw new Error('Not Implemented'); }, }, @@ -193,11 +191,11 @@ export function getFakeVsCode(): vscodeAdapter.vscode { parse: () => { throw new Error('Not Implemented'); }, - file: (f: string): vscodeAdapter.Uri => { + file: (f: string): vscode.Uri => { return { path: f, fsPath: f, - } as unknown as vscodeAdapter.Uri; + } as unknown as vscode.Uri; }, }, version: 'myVersion', @@ -285,18 +283,18 @@ export function getWorkspaceInformationUpdated( }); } -export function getVSCodeWithConfig(vscode: vscode.vscode = getFakeVsCode()) { - const _vscodeConfig = getWorkspaceConfiguration(); +export function getVSCodeWithConfig(vscodeAdapter: vscode.vscode = getFakeVsCode()) { + const _vscodeAdapterConfig = getWorkspaceConfiguration(); - vscode.workspace.getConfiguration = (_section, _resource) => { - return _vscodeConfig; + vscodeAdapter.workspace.getConfiguration = (_section, _resource) => { + return _vscodeAdapterConfig; }; - return vscode; + return vscodeAdapter; } -export function updateConfig(vscode: vscode.vscode, section: string | undefined, config: string, value: any) { - const workspaceConfig = vscode.workspace.getConfiguration(section); +export function updateConfig(vscodeAdapter: vscode.vscode, section: string | undefined, config: string, value: any) { + const workspaceConfig = vscodeAdapter.workspace.getConfiguration(section); const configEntry = section ? `${section}.${config}` : config; workspaceConfig.update(configEntry, value); } diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs deleted file mode 100644 index ce6b9fa31..000000000 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace ReAnalyze -{ - public class SomeInterfaceImpl: ISomeInterface - { - } -} \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs b/test/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs deleted file mode 100644 index cbfc3d9d3..000000000 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -namespace Test -{ - class testissue - { - ///Checks if object is tagged with the tag. - /// The game object. - /// Name of the tag. - /// Returns true if object is tagged with tag. - - public static bool Compare(int gameObject,string tagName) - { - return true; - } - } -} \ No newline at end of file diff --git a/test/artifactTests/jest.config.ts b/test/lsptoolshost/artifactTests/jest.config.ts similarity index 93% rename from test/artifactTests/jest.config.ts rename to test/lsptoolshost/artifactTests/jest.config.ts index 08dc4fc58..5135e6134 100644 --- a/test/artifactTests/jest.config.ts +++ b/test/lsptoolshost/artifactTests/jest.config.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import type { Config } from 'jest'; -import { baseProjectConfig } from '../../baseJestConfig'; +import { baseProjectConfig } from '../../../baseJestConfig'; export const jestArtifactTestsProjectName = 'Artifact Tests'; diff --git a/test/artifactTests/vsix.test.ts b/test/lsptoolshost/artifactTests/vsix.test.ts similarity index 100% rename from test/artifactTests/vsix.test.ts rename to test/lsptoolshost/artifactTests/vsix.test.ts diff --git a/test/integrationTests/buildDiagnostics.integration.test.ts b/test/lsptoolshost/integrationTests/buildDiagnostics.integration.test.ts similarity index 99% rename from test/integrationTests/buildDiagnostics.integration.test.ts rename to test/lsptoolshost/integrationTests/buildDiagnostics.integration.test.ts index 191befe92..c94481110 100644 --- a/test/integrationTests/buildDiagnostics.integration.test.ts +++ b/test/lsptoolshost/integrationTests/buildDiagnostics.integration.test.ts @@ -6,7 +6,7 @@ import * as vscode from 'vscode'; import { describe, test, expect, beforeAll, afterAll, beforeEach, afterEach } from '@jest/globals'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; -import { AnalysisSetting, BuildDiagnosticsService } from '../../src/lsptoolshost/buildDiagnosticsService'; +import { AnalysisSetting, BuildDiagnosticsService } from '../../../src/lsptoolshost/buildDiagnosticsService'; import * as integrationHelpers from './integrationHelpers'; import path = require('path'); describe(`Build and live diagnostics dedupe ${testAssetWorkspace.description}`, () => { diff --git a/test/lsptoolshost/integrationTests/classification.integration.test.ts b/test/lsptoolshost/integrationTests/classification.integration.test.ts new file mode 100644 index 000000000..173cb48f5 --- /dev/null +++ b/test/lsptoolshost/integrationTests/classification.integration.test.ts @@ -0,0 +1,156 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Classification Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'semantictokens.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Semantic classification returns correct token types', async () => { + const expectedTokens: Token[] = [ + // 0:namespace Test + _keyword('namespace', 0, 0), + _namespace('Test', 0, 10), + // 1:{ + _punctuation('{', 1, 0), + // 2: public class TestProgram + _keyword('public', 2, 4), + _keyword('class', 2, 11), + _class('TestProgram', 2, 17), + // 3: { + _punctuation('{', 3, 4), + // 4: public static int TestMain(string[] args) + _keyword('public', 4, 8), + _keyword('static', 4, 15), + _keyword('int', 4, 22), + _staticMethod('TestMain', 4, 26), + _punctuation('(', 4, 34), + _keyword('string', 4, 35), + _punctuation('[', 4, 41), + _punctuation(']', 4, 42), + _parameter('args', 4, 44), + _punctuation(')', 4, 48), + // 5: { + _punctuation('{', 5, 8), + // 6: System.Console.WriteLine(string.Join(',', args)); + _namespace('System', 6, 12), + _operator('.', 6, 18), + _staticClass('Console', 6, 19), + _operator('.', 6, 26), + _staticMethod('WriteLine', 6, 27), + _punctuation('(', 6, 36), + _keyword('string', 6, 37), + _operator('.', 6, 43), + _staticMethod('Join', 6, 44), + _punctuation('(', 6, 48), + _string("','", 6, 49), + _punctuation(')', 6, 52), + _parameter('args', 6, 54), + _punctuation(')', 6, 58), + _punctuation(')', 6, 59), + _punctuation(';', 6, 60), + // 7: return 0; + _controlKeyword('return', 7, 12), + _number('0', 7, 19), + _punctuation(';', 7, 20), + // 8: } + _punctuation('}', 8, 8), + // 9: } + _punctuation('}', 9, 4), + //10: } + _punctuation('}', 10, 0), + ]; + + const tokens = await getTokens(); + + expect(tokens).toStrictEqual(expectedTokens); + }); +}); + +async function getTokens(): Promise { + const legend = ( + await vscode.commands.executeCommand( + 'vscode.provideDocumentSemanticTokensLegend', + vscode.window.activeTextEditor!.document.uri + ) + ); + + const actual = ( + await vscode.commands.executeCommand( + 'vscode.provideDocumentSemanticTokens', + vscode.window.activeTextEditor!.document.uri + ) + ); + + expect(legend).toBeDefined(); + expect(actual).toBeDefined(); + + const actualRanges: Array = []; + let lastLine = 0; + let lastCharacter = 0; + for (let i = 0; i < actual.data.length; i += 5) { + const lineDelta = actual.data[i], + charDelta = actual.data[i + 1], + len = actual.data[i + 2], + typeIdx = actual.data[i + 3], + modSet = actual.data[i + 4]; + const line = lastLine + lineDelta; + const character = lineDelta === 0 ? lastCharacter + charDelta : charDelta; + const tokenClassifiction = [ + legend.tokenTypes[typeIdx], + ...legend.tokenModifiers.filter((_, i) => modSet & (1 << i)), + ].join('.'); + actualRanges.push({ + startLine: line, + character: character, + length: len, + tokenClassifiction: tokenClassifiction, + }); + lastLine = line; + lastCharacter = character; + } + return actualRanges; +} + +interface Token { + startLine: number; + character: number; + length: number; + tokenClassifiction: string; +} + +function t(startLine: number, character: number, length: number, tokenClassifiction: string): Token { + return { startLine, character, length, tokenClassifiction }; +} + +const _keyword = (text: string, line: number, col: number) => t(line, col, text.length, 'keyword'); +const _controlKeyword = (text: string, line: number, col: number) => t(line, col, text.length, 'controlKeyword'); +const _punctuation = (text: string, line: number, col: number) => t(line, col, text.length, 'punctuation'); +const _operator = (text: string, line: number, col: number) => t(line, col, text.length, 'operator'); +const _number = (text: string, line: number, col: number) => t(line, col, text.length, 'number'); +const _string = (text: string, line: number, col: number) => t(line, col, text.length, 'string'); +const _namespace = (text: string, line: number, col: number) => t(line, col, text.length, 'namespace'); +const _class = (text: string, line: number, col: number) => t(line, col, text.length, 'class'); +const _staticClass = (text: string, line: number, col: number) => t(line, col, text.length, 'class.static'); +const _staticMethod = (text: string, line: number, col: number) => t(line, col, text.length, 'method.static'); +const _parameter = (text: string, line: number, col: number) => t(line, col, text.length, 'parameter'); diff --git a/test/lsptoolshost/integrationTests/codeactions.integration.test.ts b/test/lsptoolshost/integrationTests/codeactions.integration.test.ts new file mode 100644 index 000000000..371b1732f --- /dev/null +++ b/test/lsptoolshost/integrationTests/codeactions.integration.test.ts @@ -0,0 +1,349 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + expectText, + openFileInWorkspaceAsync, +} from './integrationHelpers'; + +describe(`[${testAssetWorkspace.description}] Test Code Actions`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + const fileName = path.join('src', 'app', 'CodeActions.cs'); + await openFileInWorkspaceAsync(fileName); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Lightbulb displays actions', async () => { + const actions = await getCodeActions(new vscode.Range(0, 0, 0, 12)); + expect(actions.length).toBeGreaterThanOrEqual(3); + + // Verify we have unresolved code actions. + expect(actions[0].title).toBe('Remove unnecessary usings'); + expect(actions[0].kind).toStrictEqual(vscode.CodeActionKind.QuickFix); + expect(actions[0].edit).toBeUndefined(); + expect(actions[0].command).toBeUndefined(); + + expect(actions[1].title).toBe('Fix All: Remove unnecessary usings'); + expect(actions[1].kind).toStrictEqual(vscode.CodeActionKind.QuickFix); + expect(actions[1].edit).toBeUndefined(); + expect(actions[1].command).toBeDefined(); + + expect(actions[2].title).toBe('Suppress or configure issues'); + expect(actions[2].kind).toStrictEqual(vscode.CodeActionKind.QuickFix); + expect(actions[2].edit).toBeUndefined(); + expect(actions[2].command).toBeDefined(); + }); + + test('Remove unnecessary usings applied', async () => { + const actions = await getCodeActions(new vscode.Range(0, 0, 0, 12), 10); + + expect(actions[0].title).toBe('Remove unnecessary usings'); + expect(actions[0].edit).toBeDefined(); + + await vscode.workspace.applyEdit(actions[0].edit!); + + expectText(vscode.window.activeTextEditor!.document, [ + 'namespace CodeActionsTests;', + '', + 'class CodeActions', + '{', + ' static void Do() { Method(); }', + ' static void Method()', + ' {', + ' var x = 1;', + ' Do();', + ' }', + '}', + ]); + }); + + test('Add accessibility modifiers applied', async () => { + const actions = await getCodeActions(new vscode.Range(6, 16, 6, 19), 10); + + expect(actions[0].title).toBe('Add accessibility modifiers'); + expect(actions[0].edit).toBeDefined(); + + await vscode.workspace.applyEdit(actions[0].edit!); + + expectText(vscode.window.activeTextEditor!.document, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'class CodeActions', + '{', + ' private static void Do() { Method(); }', + ' static void Method()', + ' {', + ' var x = 1;', + ' Do();', + ' }', + '}', + ]); + }); + + test('Fix all in document', async () => { + const action = await getSpecificCodeAction( + new vscode.Range(6, 16, 6, 19), + 'Fix All: Add accessibility modifiers' + ); + + expect(action.edit).toBeUndefined(); + expect(action.command).toBeDefined(); + + await invokeQuickPickAction(action, /*quickPickIndex: Document*/ 0); + + expectText(vscode.window.activeTextEditor!.document, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'internal class CodeActions', + '{', + ' private static void Do() { Method(); }', + '', + ' private static void Method()', + ' {', + ' var x = 1;', + ' Do();', + ' }', + '}', + ]); + }); + + test('Fix all in project', async () => { + const action = await getSpecificCodeAction( + new vscode.Range(6, 16, 6, 19), + 'Fix All: Add accessibility modifiers' + ); + + expect(action.edit).toBeUndefined(); + expect(action.command).toBeDefined(); + + await invokeQuickPickAction(action, /*quickPickIndex: Project*/ 1); + + expectText(vscode.window.activeTextEditor!.document, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'internal class CodeActions', + '{', + ' private static void Do() { Method(); }', + '', + ' private static void Method()', + ' {', + ' var x = 1;', + ' Do();', + ' }', + '}', + ]); + + const projectFile = vscode.workspace.textDocuments.find((d) => d.fileName.endsWith('CodeActionsInProject.cs')); + expect(projectFile).toBeDefined(); + expectText(projectFile!, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'internal class CodeActionsInProject', + '{', + '}', + ]); + }); + + test('Fix all in solution', async () => { + const action = await getSpecificCodeAction( + new vscode.Range(6, 16, 6, 19), + 'Fix All: Add accessibility modifiers' + ); + + expect(action.edit).toBeUndefined(); + expect(action.command).toBeDefined(); + + await invokeQuickPickAction(action, /*quickPickIndex: Solution*/ 2); + + expectText(vscode.window.activeTextEditor!.document, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'internal class CodeActions', + '{', + ' private static void Do() { Method(); }', + '', + ' private static void Method()', + ' {', + ' var x = 1;', + ' Do();', + ' }', + '}', + ]); + + const currentProjectFile = vscode.workspace.textDocuments.find((d) => + d.fileName.endsWith('CodeActionsInProject.cs') + ); + expect(currentProjectFile).toBeDefined(); + expectText(currentProjectFile!, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'internal class CodeActionsInProject', + '{', + '}', + ]); + + const otherProjectFile = vscode.workspace.textDocuments.find((d) => + d.fileName.endsWith('CodeActionsInSolution.cs') + ); + expect(otherProjectFile).toBeDefined(); + expectText(otherProjectFile!, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'internal class CodeActionsInSolution', + '{', + '}', + ]); + }); + + test('Nested action', async () => { + const action = await getSpecificCodeAction(new vscode.Range(9, 12, 9, 12), 'Convert number'); + + expect(action.edit).toBeUndefined(); + expect(action.command).toBeDefined(); + + await invokeQuickPickAction(action, /*quickPickIndex: Convert to binary*/ 0); + + expectText(vscode.window.activeTextEditor!.document, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'class CodeActions', + '{', + ' static void Do() { Method(); }', + ' static void Method()', + ' {', + ' var x = 0b1;', + ' Do();', + ' }', + '}', + ]); + }); + + test('Suppress warning', async () => { + const action = await getSpecificCodeAction(new vscode.Range(9, 12, 9, 12), 'Suppress or configure issues'); + + expect(action.edit).toBeUndefined(); + expect(action.command).toBeDefined(); + + await invokeQuickPickAction(action, /*quickPickIndex: Suppress CS0219 -> in Source*/ 0); + + expectText(vscode.window.activeTextEditor!.document, [ + 'using System;', + '', + 'namespace CodeActionsTests;', + '', + 'class CodeActions', + '{', + ' static void Do() { Method(); }', + ' static void Method()', + ' {', + '#pragma warning disable CS0219 // Variable is assigned but its value is never used', + ' var x = 1;', + '#pragma warning restore CS0219 // Variable is assigned but its value is never used', + ' Do();', + ' }', + '}', + ]); + }); + + test('Configure code style option', async () => { + const action = await getSpecificCodeAction(new vscode.Range(6, 16, 6, 19), 'Suppress or configure issues'); + + expect(action.edit).toBeUndefined(); + expect(action.command).toBeDefined(); + + await invokeQuickPickAction(action, /*quickPickIndex: Configure IDE0040 code style -> never*/ 0); + + const editorConfigFile = vscode.workspace.textDocuments.find((d) => d.fileName.endsWith('.editorconfig')); + expect(editorConfigFile).toBeDefined(); + expect(editorConfigFile!.getText()).toContain('dotnet_style_require_accessibility_modifiers = never'); + }); + + test('Configure analyzer severity', async () => { + const action = await getSpecificCodeAction(new vscode.Range(6, 16, 6, 19), 'Suppress or configure issues'); + + expect(action.edit).toBeUndefined(); + expect(action.command).toBeDefined(); + + await invokeQuickPickAction(action, /*quickPickIndex: Configure IDE0040 severity -> None*/ 4); + + const editorConfigFile = vscode.workspace.textDocuments.find((d) => d.fileName.endsWith('.editorconfig')); + expect(editorConfigFile).toBeDefined(); + expect(editorConfigFile!.getText()).toContain('dotnet_diagnostic.IDE0040.severity = none'); + }); +}); + +async function getCodeActions( + range: vscode.Range, + resolveCount: number | undefined = undefined +): Promise { + const codeActions = await vscode.commands.executeCommand( + 'vscode.executeCodeActionProvider', + vscode.window.activeTextEditor!.document.uri, + range, + /** kind **/ undefined, + resolveCount + ); + return codeActions; +} + +async function getSpecificCodeAction(range: vscode.Range, title: string): Promise { + const codeActions = await getCodeActions(range, 100); + const action = codeActions.find((action) => action.title === title); + if (!action) { + throw new Error(`Code action '${title}' not found in ${codeActions.map((a) => a.title).join(', ')}`); + } + return action; +} + +async function invokeQuickPickAction(codeAction: vscode.CodeAction, quickPickIndex: number): Promise { + // Invoke, but do not await the command (the command blocks until a quick pick item is resolved) + const promise = vscode.commands.executeCommand(codeAction.command!.command, ...codeAction.command!.arguments!); + + // workbench.action.quickOpenSelectNext selects the next quick pick item. + // It must be called at least once to select the first item. + for (let i = 0; i <= quickPickIndex; i++) { + // First call ensures the quick pick is populated with items and the first is selected. + await vscode.commands.executeCommand('workbench.action.quickOpenSelectNext'); + } + + // Accept the selected item + await vscode.commands.executeCommand('workbench.action.acceptSelectedQuickOpenItem'); + + // Finally wait for the command to complete. + await promise; +} diff --git a/test/integrationTests/codelens.integration.test.ts b/test/lsptoolshost/integrationTests/codelens.integration.test.ts similarity index 100% rename from test/integrationTests/codelens.integration.test.ts rename to test/lsptoolshost/integrationTests/codelens.integration.test.ts diff --git a/test/integrationTests/commandEnablement.integration.test.ts b/test/lsptoolshost/integrationTests/commandEnablement.integration.test.ts similarity index 100% rename from test/integrationTests/commandEnablement.integration.test.ts rename to test/lsptoolshost/integrationTests/commandEnablement.integration.test.ts diff --git a/test/integrationTests/completion.integration.test.ts b/test/lsptoolshost/integrationTests/completion.integration.test.ts similarity index 100% rename from test/integrationTests/completion.integration.test.ts rename to test/lsptoolshost/integrationTests/completion.integration.test.ts diff --git a/test/integrationTests/diagnosticsHelpers.ts b/test/lsptoolshost/integrationTests/diagnosticsHelpers.ts similarity index 100% rename from test/integrationTests/diagnosticsHelpers.ts rename to test/lsptoolshost/integrationTests/diagnosticsHelpers.ts diff --git a/test/integrationTests/documentDiagnostics.integration.test.ts b/test/lsptoolshost/integrationTests/documentDiagnostics.integration.test.ts similarity index 98% rename from test/integrationTests/documentDiagnostics.integration.test.ts rename to test/lsptoolshost/integrationTests/documentDiagnostics.integration.test.ts index eb65025b6..502a8c553 100644 --- a/test/integrationTests/documentDiagnostics.integration.test.ts +++ b/test/lsptoolshost/integrationTests/documentDiagnostics.integration.test.ts @@ -6,7 +6,7 @@ import * as vscode from 'vscode'; import { describe, test, beforeAll, afterAll, expect, beforeEach, afterEach } from '@jest/globals'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; -import { AnalysisSetting } from '../../src/lsptoolshost/buildDiagnosticsService'; +import { AnalysisSetting } from '../../../src/lsptoolshost/buildDiagnosticsService'; import * as integrationHelpers from './integrationHelpers'; import path = require('path'); import { getCode, setBackgroundAnalysisScopes, waitForExpectedDiagnostics } from './diagnosticsHelpers'; diff --git a/test/integrationTests/documentSymbolProvider.integration.test.ts b/test/lsptoolshost/integrationTests/documentSymbolProvider.integration.test.ts similarity index 100% rename from test/integrationTests/documentSymbolProvider.integration.test.ts rename to test/lsptoolshost/integrationTests/documentSymbolProvider.integration.test.ts diff --git a/test/integrationTests/expectedCommands.ts b/test/lsptoolshost/integrationTests/expectedCommands.ts similarity index 100% rename from test/integrationTests/expectedCommands.ts rename to test/lsptoolshost/integrationTests/expectedCommands.ts diff --git a/test/lsptoolshost/integrationTests/formatting.integration.test.ts b/test/lsptoolshost/integrationTests/formatting.integration.test.ts new file mode 100644 index 000000000..654cdd48a --- /dev/null +++ b/test/lsptoolshost/integrationTests/formatting.integration.test.ts @@ -0,0 +1,94 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + expectText, + openFileInWorkspaceAsync, +} from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, afterEach } from '@jest/globals'; +import { formatDocumentAsync, formatOnTypeAsync, formatRangeAsync } from './formattingTestHelpers'; + +describe(`[${testAssetWorkspace.description}] Formatting Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'Formatting.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Document formatting formats the entire document', async () => { + await formatDocumentAsync(); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormatting', + '{', + ' public int Property1', + ' {', + ' get; set;', + ' }', + '', + ' public void Method1()', + ' {', + ' System.Console.Write("");', + ' }', + '}', + ]; + expectText(vscode.window.activeTextEditor!.document, expectedText); + }); + + test('Document range formatting formats only the range', async () => { + await formatRangeAsync(new vscode.Range(3, 0, 5, 0)); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormatting', + '{', + ' public int Property1', + ' {', + ' get; set;', + ' }', + '', + ' public void Method1() {', + ' System.Console.Write("");', + ' }', + '}', + ]; + expectText(vscode.window.activeTextEditor!.document, expectedText); + }); + + test('Document on type formatting formats the typed location', async () => { + // The server expects the position to be the position after the inserted character `;` + await formatOnTypeAsync(new vscode.Position(7, 37), ';'); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormatting', + '{', + ' public int Property1 {', + ' get; set; }', + '', + ' public void Method1() {', + ' System.Console.Write("");', + ' }', + '}', + ]; + expectText(vscode.window.activeTextEditor!.document, expectedText); + }); +}); diff --git a/test/lsptoolshost/integrationTests/formattingEditorConfig.integration.test.ts b/test/lsptoolshost/integrationTests/formattingEditorConfig.integration.test.ts new file mode 100644 index 000000000..998b1268f --- /dev/null +++ b/test/lsptoolshost/integrationTests/formattingEditorConfig.integration.test.ts @@ -0,0 +1,100 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + expectText, + openFileInWorkspaceAsync, +} from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, afterEach } from '@jest/globals'; +import { formatDocumentAsync, formatOnTypeAsync, formatRangeAsync } from './formattingTestHelpers'; + +describe(`[${testAssetWorkspace.description}] Formatting With EditorConfig Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync( + path.join('src', 'app', 'folderWithEditorConfig', 'FormattingWithEditorConfig.cs') + ); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Document formatting respects editorconfig', async () => { + await formatDocumentAsync(); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormattingWithEditorConfig {', + ' public int Property1 {', + ' get; set;', + ' }', + '', + ' public void Method1() {', + ' if (true) {', + ' }', + ' }', + '}', + ]; + expectText(vscode.window.activeTextEditor!.document, expectedText); + }); + + test('Document range formatting respects editorconfig', async () => { + await formatRangeAsync(new vscode.Range(3, 0, 6, 0)); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormattingWithEditorConfig', + '{', + ' public int Property1 {', + ' get; set;', + ' }', + '', + ' public void Method1()', + ' {', + ' if (true)', + ' {', + ' }', + ' }', + '}', + ]; + expectText(vscode.window.activeTextEditor!.document, expectedText); + }); + + test('Document on type formatting respects editorconfig', async () => { + // The server expects the position to be the position after the inserted character `}` + await formatOnTypeAsync(new vscode.Position(12, 9), '}'); + + const expectedText = [ + 'namespace Formatting;', + 'class DocumentFormattingWithEditorConfig', + '{', + ' public int Property1', + ' {', + ' get; set;', + ' }', + '', + ' public void Method1()', + ' {', + ' if (true) {', + ' }', + ' }', + '}', + ]; + expectText(vscode.window.activeTextEditor!.document, expectedText); + }); +}); diff --git a/test/lsptoolshost/integrationTests/formattingTestHelpers.ts b/test/lsptoolshost/integrationTests/formattingTestHelpers.ts new file mode 100644 index 000000000..a138115e8 --- /dev/null +++ b/test/lsptoolshost/integrationTests/formattingTestHelpers.ts @@ -0,0 +1,58 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { expect } from '@jest/globals'; + +export async function formatDocumentAsync(): Promise { + const edits = await vscode.commands.executeCommand( + 'vscode.executeFormatDocumentProvider', + vscode.window.activeTextEditor!.document.uri, + { + insertSpaces: true, + tabSize: 4, + } + ); + + await applyEditsAsync(edits); +} + +export async function formatRangeAsync(range: vscode.Range): Promise { + const edits = await vscode.commands.executeCommand( + 'vscode.executeFormatRangeProvider', + vscode.window.activeTextEditor!.document.uri, + range, + { + insertSpaces: true, + tabSize: 4, + } + ); + + await applyEditsAsync(edits); +} + +export async function formatOnTypeAsync(position: vscode.Position, character: string): Promise { + const edits = await vscode.commands.executeCommand( + 'vscode.executeFormatOnTypeProvider', + vscode.window.activeTextEditor!.document.uri, + position, + character, + { + insertSpaces: true, + tabSize: 4, + } + ); + + await applyEditsAsync(edits); +} + +async function applyEditsAsync(edits: vscode.TextEdit[]): Promise { + expect(edits).toBeDefined(); + + const workspaceEdit: vscode.WorkspaceEdit = new vscode.WorkspaceEdit(); + workspaceEdit.set(vscode.window.activeTextEditor!.document.uri, edits); + const succeeded = await vscode.workspace.applyEdit(workspaceEdit); + expect(succeeded).toBe(true); +} diff --git a/test/integrationTests/gotoDefinition.integration.test.ts b/test/lsptoolshost/integrationTests/gotoDefinition.integration.test.ts similarity index 58% rename from test/integrationTests/gotoDefinition.integration.test.ts rename to test/lsptoolshost/integrationTests/gotoDefinition.integration.test.ts index aae1a58c7..348e714c9 100644 --- a/test/integrationTests/gotoDefinition.integration.test.ts +++ b/test/lsptoolshost/integrationTests/gotoDefinition.integration.test.ts @@ -6,7 +6,12 @@ import * as vscode from 'vscode'; import * as path from 'path'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; -import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + findRangeOfString, + openFileInWorkspaceAsync, +} from './integrationHelpers'; import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; describe(`[${testAssetWorkspace.description}] Test Go To Definition`, () => { @@ -79,6 +84,50 @@ describe(`[${testAssetWorkspace.description}] Test Go To Definition`, () => { ); }); + test('Navigates from definition in decompiled source goes to decompiled source', async () => { + await openFileInWorkspaceAsync(path.join('test', 'UnitTest1.cs')); + + // Get definitions + const requestPosition = new vscode.Position(13, 9); + const definitionList = ( + await vscode.commands.executeCommand( + 'vscode.executeDefinitionProvider', + vscode.window.activeTextEditor!.document.uri, + requestPosition + ) + ); + expect(definitionList.length).toEqual(1); + const definitionPath = definitionList[0].uri; + expect(definitionPath.fsPath).toContain('FactAttribute.cs'); + + // Navigate + await navigate(requestPosition, definitionList, 'FactAttribute.cs'); + expect(vscode.window.activeTextEditor?.document.getText()).toContain( + '// Decompiled with ICSharpCode.Decompiler' + ); + + // Get definitions from inside FactAttribute.cs + // Rather than hardcoding a location, we find the location by searching the document as different SDKs may have different versions of the source. + const rangeOfDefinition = findRangeOfString(vscode.window.activeTextEditor!, 'XunitTestCaseDiscoverer')[0]; + const attributeUsageDefinition = ( + await vscode.commands.executeCommand( + 'vscode.executeDefinitionProvider', + vscode.window.activeTextEditor!.document.uri, + rangeOfDefinition.start + ) + ); + + expect(attributeUsageDefinition.length).toEqual(1); + const attributeDefinitionPath = attributeUsageDefinition[0].uri; + expect(attributeDefinitionPath.fsPath).toContain('XunitTestCaseDiscovererAttribute.cs'); + + // Navigate + await navigate(rangeOfDefinition.start, attributeUsageDefinition, 'XunitTestCaseDiscovererAttribute.cs'); + expect(vscode.window.activeTextEditor?.document.getText()).toContain( + '// Decompiled with ICSharpCode.Decompiler' + ); + }); + test('Navigates to definition in metadata as source', async () => { // Get definitions const requestPosition = new vscode.Position(10, 25); @@ -100,6 +149,48 @@ describe(`[${testAssetWorkspace.description}] Test Go To Definition`, () => { ); }); + test('Navigates to definition from inside metadata as source', async () => { + // Get definitions + const requestPosition = new vscode.Position(10, 25); + const definitionList = ( + await vscode.commands.executeCommand( + 'vscode.executeDefinitionProvider', + vscode.window.activeTextEditor!.document.uri, + requestPosition + ) + ); + expect(definitionList.length).toEqual(1); + const definitionPath = definitionList[0].uri; + expect(definitionPath.fsPath).toContain('Console.cs'); + + // Navigate + await navigate(requestPosition, definitionList, 'Console.cs'); + expect(vscode.window.activeTextEditor?.document.getText()).not.toContain( + '// Decompiled with ICSharpCode.Decompiler' + ); + + // Get definitions from inside Console.cs + // Rather than hardcoding a location, we find the location by searching the document as different SDKs may have different versions of the source. + const rangeOfDefinition = findRangeOfString(vscode.window.activeTextEditor!, 'ConsoleColor ForegroundColor')[0]; + const consoleColorDefinition = ( + await vscode.commands.executeCommand( + 'vscode.executeDefinitionProvider', + vscode.window.activeTextEditor!.document.uri, + rangeOfDefinition.start + ) + ); + + expect(consoleColorDefinition.length).toEqual(1); + const consoleColorDefinitionPath = consoleColorDefinition[0].uri; + expect(consoleColorDefinitionPath.fsPath).toContain('ConsoleColor.cs'); + + // Navigate + await navigate(rangeOfDefinition.start, consoleColorDefinition, 'ConsoleColor.cs'); + expect(vscode.window.activeTextEditor?.document.getText()).not.toContain( + '// Decompiled with ICSharpCode.Decompiler' + ); + }); + test('Returns multiple definitions for partial types', async () => { const definitionList = ( await vscode.commands.executeCommand( diff --git a/test/lsptoolshost/integrationTests/gotoImplementation.integration.test.ts b/test/lsptoolshost/integrationTests/gotoImplementation.integration.test.ts new file mode 100644 index 000000000..51a3c4400 --- /dev/null +++ b/test/lsptoolshost/integrationTests/gotoImplementation.integration.test.ts @@ -0,0 +1,61 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + openFileInWorkspaceAsync, + sortLocations, +} from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Test Go To Implementation`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'implementation.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Finds implementations', async () => { + const requestPosition = new vscode.Position(4, 22); + const implementationList = await getImplementations(requestPosition); + + expect(implementationList).toHaveLength(3); + + expect(implementationList[0].uri.path).toContain('BaseClassImplementation.cs'); + expect(implementationList[0].range).toStrictEqual(new vscode.Range(2, 17, 2, 40)); + + expect(implementationList[1].uri.path).toContain('implementation.cs'); + expect(implementationList[1].range).toStrictEqual(new vscode.Range(4, 17, 4, 26)); + + expect(implementationList[2].uri.path).toContain('implementation.cs'); + expect(implementationList[2].range).toStrictEqual(new vscode.Range(5, 17, 5, 26)); + }); +}); + +async function getImplementations(position: vscode.Position): Promise { + const implementationList = ( + await vscode.commands.executeCommand( + 'vscode.executeImplementationProvider', + vscode.window.activeTextEditor!.document.uri, + position + ) + ); + + return sortLocations(implementationList); +} diff --git a/test/lsptoolshost/integrationTests/hover.integration.test.ts b/test/lsptoolshost/integrationTests/hover.integration.test.ts new file mode 100644 index 000000000..46bbe7fac --- /dev/null +++ b/test/lsptoolshost/integrationTests/hover.integration.test.ts @@ -0,0 +1,45 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import { EOL } from 'os'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Hover Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'hover.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Hover returns correct documentation', async () => { + const hovers = ( + await vscode.commands.executeCommand( + 'vscode.executeHoverProvider', + vscode.window.activeTextEditor!.document.uri, + new vscode.Position(33, 27) + ) + ); + + const expected = `\`\`\`csharp${EOL}bool testissue.Compare(int gameObject, string tagName)${EOL}\`\`\`${EOL} ${EOL}A cref testissue ${EOL}**strong text** ${EOL}_italic text_ ${EOL}underline text ${EOL} ${EOL}• Item 1\\. ${EOL}• Item 2\\. ${EOL} ${EOL}[link text](https://google.com) ${EOL} ${EOL}Remarks are cool too\\. ${EOL} ${EOL}Returns: ${EOL}  a string ${EOL} ${EOL}Exceptions: ${EOL}  NullReferenceException ${EOL}`; + + expect(hovers.length).toEqual(1); + expect((hovers[0].contents[0] as vscode.MarkdownString).value).toEqual(expected); + expect(hovers[0].range).toStrictEqual(new vscode.Range(33, 27, 33, 34)); + }); +}); diff --git a/test/razorIntegrationTests/index.ts b/test/lsptoolshost/integrationTests/index.ts similarity index 89% rename from test/razorIntegrationTests/index.ts rename to test/lsptoolshost/integrationTests/index.ts index 26731859a..ac2e6a90a 100644 --- a/test/razorIntegrationTests/index.ts +++ b/test/lsptoolshost/integrationTests/index.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { runIntegrationTests } from '../runIntegrationTests'; +import { runIntegrationTests } from '../../runIntegrationTests'; import { jestIntegrationTestProjectName } from './jest.config'; export async function run() { diff --git a/test/integrationTests/integrationHelpers.ts b/test/lsptoolshost/integrationTests/integrationHelpers.ts similarity index 81% rename from test/integrationTests/integrationHelpers.ts rename to test/lsptoolshost/integrationTests/integrationHelpers.ts index 178195d43..ff2c6562b 100644 --- a/test/integrationTests/integrationHelpers.ts +++ b/test/lsptoolshost/integrationTests/integrationHelpers.ts @@ -5,23 +5,14 @@ import * as vscode from 'vscode'; import * as path from 'path'; -import { CSharpExtensionExports } from '../../src/csharpExtensionExports'; +import { CSharpExtensionExports } from '../../../src/csharpExtensionExports'; import { existsSync } from 'fs'; -import { ServerState } from '../../src/lsptoolshost/serverStateChange'; +import { ServerState } from '../../../src/lsptoolshost/serverStateChange'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { EOL } from 'os'; +import { expect } from '@jest/globals'; export async function activateCSharpExtension(): Promise { - // Ensure the dependent extension exists - when launching via F5 launch.json we can't install the extension prior to opening vscode. - const vscodeDotnetRuntimeExtensionId = 'ms-dotnettools.vscode-dotnet-runtime'; - const dotnetRuntimeExtension = - vscode.extensions.getExtension(vscodeDotnetRuntimeExtensionId); - if (!dotnetRuntimeExtension) { - await vscode.commands.executeCommand('workbench.extensions.installExtension', vscodeDotnetRuntimeExtensionId, { - donotSync: true, - }); - await vscode.commands.executeCommand('workbench.action.reloadWindow'); - } - const csharpExtension = vscode.extensions.getExtension('muhammad-sammy.csharp'); if (!csharpExtension) { throw new Error('Failed to find installation of muhammad-sammy.csharp'); @@ -120,6 +111,28 @@ export async function getCodeLensesAsync(): Promise { }); } +export function sortLocations(locations: vscode.Location[]): vscode.Location[] { + return locations.sort((a, b) => { + const uriCompare = a.uri.fsPath.localeCompare(b.uri.fsPath); + if (uriCompare !== 0) { + return uriCompare; + } + + return a.range.start.compareTo(b.range.start); + }); +} + +export function findRangeOfString(editor: vscode.TextEditor, stringToFind: string): vscode.Range[] { + const text = editor.document.getText(); + const matches = [...text.matchAll(new RegExp(stringToFind, 'gm'))]; + const ranges = matches.map((match) => { + const startPos = editor.document.positionAt(match.index!); + const endPos = editor.document.positionAt(match.index! + stringToFind.length); + return new vscode.Range(startPos, endPos); + }); + return ranges; +} + function isGivenSln(workspace: typeof vscode.workspace, expectedProjectFileName: string) { const primeWorkspace = workspace.workspaceFolders![0]; const projectFileName = primeWorkspace.uri.fsPath.split(path.sep).pop(); @@ -156,3 +169,8 @@ export async function waitForExpectedResult( export async function sleep(ms = 0) { return new Promise((r) => setTimeout(r, ms)); } + +export async function expectText(document: vscode.TextDocument, expectedLines: string[]) { + const expectedText = expectedLines.join(EOL); + expect(document.getText()).toBe(expectedText); +} diff --git a/test/integrationTests/jest.config.ts b/test/lsptoolshost/integrationTests/jest.config.ts similarity index 78% rename from test/integrationTests/jest.config.ts rename to test/lsptoolshost/integrationTests/jest.config.ts index 0d8e8b8ee..4865b32f2 100644 --- a/test/integrationTests/jest.config.ts +++ b/test/lsptoolshost/integrationTests/jest.config.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import type { Config } from 'jest'; -import { baseProjectConfig } from '../../baseJestConfig'; +import { baseProjectConfig } from '../../../baseJestConfig'; export const jestIntegrationTestProjectName = 'Integration Tests'; @@ -14,8 +14,8 @@ const integrationTestConfig: Config = { ...baseProjectConfig, displayName: jestIntegrationTestProjectName, roots: [''], - testEnvironment: '/jestSetup/vsCodeEnvironment.ts', - setupFilesAfterEnv: ['/jestSetup/vsCodeFramework.ts'], + testEnvironment: '/../../vsCodeEnvironment.ts', + setupFilesAfterEnv: ['/../../vsCodeFramework.ts'], }; export default integrationTestConfig; diff --git a/test/integrationTests/lspInlayHints.integration.test.ts b/test/lsptoolshost/integrationTests/lspInlayHints.integration.test.ts similarity index 100% rename from test/integrationTests/lspInlayHints.integration.test.ts rename to test/lsptoolshost/integrationTests/lspInlayHints.integration.test.ts diff --git a/test/integrationTests/onAutoInsert.integration.test.ts b/test/lsptoolshost/integrationTests/onAutoInsert.integration.test.ts similarity index 100% rename from test/integrationTests/onAutoInsert.integration.test.ts rename to test/lsptoolshost/integrationTests/onAutoInsert.integration.test.ts diff --git a/test/lsptoolshost/integrationTests/references.integration.test.ts b/test/lsptoolshost/integrationTests/references.integration.test.ts new file mode 100644 index 000000000..7b9042e25 --- /dev/null +++ b/test/lsptoolshost/integrationTests/references.integration.test.ts @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { + activateCSharpExtension, + closeAllEditorsAsync, + openFileInWorkspaceAsync, + sortLocations, +} from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Test Find References`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'reference.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Finds references in same file', async () => { + const requestPosition = new vscode.Position(13, 23); + const referenceList = await getReferences(requestPosition); + + expect(referenceList.length).toEqual(2); + expect(referenceList[0].uri.path).toContain('reference.cs'); + expect(referenceList[0].range).toStrictEqual(new vscode.Range(6, 20, 6, 23)); + + expect(referenceList[1].uri.path).toContain('reference.cs'); + expect(referenceList[1].range).toStrictEqual(new vscode.Range(13, 22, 13, 25)); + }); + + test('Finds references in other files', async () => { + const requestPosition = new vscode.Position(14, 17); + const referenceList = await getReferences(requestPosition); + + expect(referenceList.length).toEqual(2); + expect(referenceList[0].uri.path).toContain('definition.cs'); + expect(referenceList[0].range).toStrictEqual(new vscode.Range(4, 25, 4, 35)); + + expect(referenceList[1].uri.path).toContain('reference.cs'); + expect(referenceList[1].range).toStrictEqual(new vscode.Range(14, 17, 14, 27)); + }); +}); + +async function getReferences(position: vscode.Position): Promise { + const referenceList = ( + await vscode.commands.executeCommand( + 'vscode.executeReferenceProvider', + vscode.window.activeTextEditor!.document.uri, + position + ) + ); + + return sortLocations(referenceList); +} diff --git a/test/lsptoolshost/integrationTests/signatureHelp.integration.test.ts b/test/lsptoolshost/integrationTests/signatureHelp.integration.test.ts new file mode 100644 index 000000000..6ac5f7aa0 --- /dev/null +++ b/test/lsptoolshost/integrationTests/signatureHelp.integration.test.ts @@ -0,0 +1,85 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import * as path from 'path'; +import testAssetWorkspace from './testAssets/testAssetWorkspace'; +import { activateCSharpExtension, closeAllEditorsAsync, openFileInWorkspaceAsync } from './integrationHelpers'; +import { describe, beforeAll, beforeEach, afterAll, test, expect, afterEach } from '@jest/globals'; + +describe(`[${testAssetWorkspace.description}] Signature Help Tests`, () => { + beforeAll(async () => { + await activateCSharpExtension(); + }); + + beforeEach(async () => { + await openFileInWorkspaceAsync(path.join('src', 'app', 'sigHelp.cs')); + }); + + afterAll(async () => { + await testAssetWorkspace.cleanupWorkspace(); + }); + + afterEach(async () => { + await closeAllEditorsAsync(); + }); + + test('Includes label when no documentation', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(19, 24)); + expect(signatureHelp.signatures[0].label).toEqual(`void sigHelp.noDocMethod()`); + expect(signatureHelp.signatures[0].documentation).toBe(undefined); + }); + + test('Includes method and parameter documentation', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 19)); + expect(signatureHelp.signatures[0].label).toEqual( + `void sigHelp.DoWork(int Int1, float Float1, double Double1)` + ); + expect(signatureHelp.signatures[0].documentation).toEqual(`DoWork is some method.`); + + expect(signatureHelp.signatures[0].parameters[0].label).toEqual(`Int1`); + expect(signatureHelp.signatures[0].parameters[1].label).toEqual(`Float1`); + + expect(signatureHelp.signatures[0].parameters[0].documentation).toEqual(`Used to indicate status.`); + expect(signatureHelp.signatures[0].parameters[1].documentation).toEqual(`Used to specify context.`); + }); + + test('Identifies active parameter if there is no comma', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 19)); + expect(signatureHelp.signatures[0].parameters[signatureHelp.activeParameter].label).toEqual(`Int1`); + }); + + test('Identifies active parameter based on comma', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 21)); + expect(signatureHelp.signatures[0].parameters[signatureHelp.activeParameter].label).toEqual(`Float1`); + }); + + test('Identifies active parameter based on comma for multiple commas', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(18, 28)); + expect(signatureHelp.signatures[0].parameters[signatureHelp.activeParameter].label).toEqual(`Double1`); + }); + + test('Uses inner documentation from inside nested method call', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(20, 24)); + expect(signatureHelp.signatures[0].label).toEqual(`string sigHelp.Inner()`); + expect(signatureHelp.signatures[0].documentation).toEqual(`Inner`); + }); + + test('Uses outer documentation from outside nested method call', async function () { + const signatureHelp = await getSignatureHelp(new vscode.Position(20, 18)); + expect(signatureHelp.signatures[0].label).toEqual(`string sigHelp.Outer(string s)`); + expect(signatureHelp.signatures[0].documentation).toEqual(`Outer`); + }); +}); + +async function getSignatureHelp(position: vscode.Position): Promise { + return ( + await vscode.commands.executeCommand( + 'vscode.executeSignatureHelpProvider', + vscode.window.activeTextEditor!.document.uri, + position + ) + ); +} diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/NuGet.config b/test/lsptoolshost/integrationTests/testAssets/NuGet.config similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/NuGet.config rename to test/lsptoolshost/integrationTests/testAssets/NuGet.config diff --git a/test/integrationTests/testAssets/basicRazorApp21.ts b/test/lsptoolshost/integrationTests/testAssets/basicRazorApp21.ts similarity index 100% rename from test/integrationTests/testAssets/basicRazorApp21.ts rename to test/lsptoolshost/integrationTests/testAssets/basicRazorApp21.ts diff --git a/test/integrationTests/testAssets/singleCsproj.ts b/test/lsptoolshost/integrationTests/testAssets/singleCsproj.ts similarity index 100% rename from test/integrationTests/testAssets/singleCsproj.ts rename to test/lsptoolshost/integrationTests/testAssets/singleCsproj.ts diff --git a/test/integrationTests/testAssets/slnFilterWithCsproj.ts b/test/lsptoolshost/integrationTests/testAssets/slnFilterWithCsproj.ts similarity index 100% rename from test/integrationTests/testAssets/slnFilterWithCsproj.ts rename to test/lsptoolshost/integrationTests/testAssets/slnFilterWithCsproj.ts diff --git a/test/integrationTests/testAssets/slnWithCsproj.ts b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj.ts similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj.ts rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj.ts diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/.gitignore b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.gitignore similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/.gitignore rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.gitignore diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.runsettings b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.runsettings similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.runsettings rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.runsettings diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/A.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/A.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/A.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/A.cs diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/BaseClassImplementation.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/BaseClassImplementation.cs new file mode 100644 index 000000000..a0c05c59b --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/BaseClassImplementation.cs @@ -0,0 +1,6 @@ +namespace minimal +{ + public class BaseClassImplementation : BaseClass + { + } +} \ No newline at end of file diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/CodeActions.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/CodeActions.cs new file mode 100644 index 000000000..ffccc9e36 --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/CodeActions.cs @@ -0,0 +1,13 @@ +using System; + +namespace CodeActionsTests; + +class CodeActions +{ + static void Do() { Method(); } + static void Method() + { + var x = 1; + Do(); + } +} \ No newline at end of file diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/CodeActionsInProject.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/CodeActionsInProject.cs new file mode 100644 index 000000000..1f915f73d --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/CodeActionsInProject.cs @@ -0,0 +1,7 @@ +using System; + +namespace CodeActionsTests; + +class CodeActionsInProject +{ +} \ No newline at end of file diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/Formatting.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/Formatting.cs new file mode 100644 index 000000000..2c669c6b4 --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/Formatting.cs @@ -0,0 +1,10 @@ +namespace Formatting; +class DocumentFormatting +{ + public int Property1 { + get; set; } + + public void Method1() { + System.Console.Write(""); + } +} \ No newline at end of file diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/ISomeInterface.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/ISomeInterface.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/Program.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/Program.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/Program.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/Program.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/app.csproj b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/app.csproj similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/app.csproj rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/app.csproj diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/completion.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/completion.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/completion.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/completion.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/completionBase.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/completionBase.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/definition.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/definition.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/definition.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/definition.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/diagnostics.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/diagnostics.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/documentSymbols.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/documentSymbols.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/.editorconfig b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/.editorconfig new file mode 100644 index 000000000..5a164647b --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/.editorconfig @@ -0,0 +1,2 @@ +[*.{cs}] +csharp_new_line_before_open_brace = none \ No newline at end of file diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/FormattingWithEditorConfig.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/FormattingWithEditorConfig.cs new file mode 100644 index 000000000..4910f0b4b --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/folderWithEditorConfig/FormattingWithEditorConfig.cs @@ -0,0 +1,15 @@ +namespace Formatting; +class DocumentFormattingWithEditorConfig +{ + public int Property1 + { + get; set; + } + + public void Method1() + { + if (true) + { + } + } +} \ No newline at end of file diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs new file mode 100644 index 000000000..3f51e4f3d --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/hover.cs @@ -0,0 +1,39 @@ +using System; +namespace Test +{ + class testissue + { + /// + /// A cref + ///
+ /// strong text + ///
+ /// italic text + ///
+ /// underline text + /// + /// + /// + /// Item 1. + /// + /// + /// Item 2. + /// + /// + /// link text + /// + ///
+ /// + /// Oh no! + /// + /// an int + /// a string + /// + /// Remarks are cool too. + /// + public static bool Compare(int gameObject,string tagName) + { + return true; + } + } +} \ No newline at end of file diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/implementation.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/implementation.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/implementation.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/implementation.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/inlayHints.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/inlayHints.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs similarity index 86% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs index 92737c378..47a32926c 100644 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/reference.cs @@ -12,6 +12,7 @@ public class Bar public Bar() { new Foo().Baz(); + Test.Definition d; } } } \ No newline at end of file diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/remap.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/remap.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/remap.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/remap.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/remapped.txt b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/remapped.txt similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/remapped.txt rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/remapped.txt diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/secondaryDiagnostics.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/secondaryDiagnostics.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/semantictokens.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/semantictokens.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs similarity index 66% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs index 811e90f8c..c9aa73219 100644 --- a/test/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs @@ -18,6 +18,17 @@ public static void main() { DoWork(4, 4.0f, 5.0); noDocMethod(); + Outer(Inner()); } + + /// + /// Outer + /// + public static string Outer(string s) => "Outer"; + + /// + /// Inner + /// + public static string Inner() => "Inner"; } } \ No newline at end of file diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/typeDefinition.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/typeDefinition.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/Class1.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/Class1.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/lib.csproj b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/lib.csproj rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj diff --git a/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/test/CodeActionsInSolution.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/test/CodeActionsInSolution.cs new file mode 100644 index 000000000..c85d0b8cd --- /dev/null +++ b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/test/CodeActionsInSolution.cs @@ -0,0 +1,7 @@ +using System; + +namespace CodeActionsTests; + +class CodeActionsInSolution +{ +} \ No newline at end of file diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/test/test.csproj b/test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/test/test.csproj similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/test/test.csproj rename to test/lsptoolshost/integrationTests/testAssets/slnWithCsproj/test/test.csproj diff --git a/test/integrationTests/testAssets/slnWithGenerator.ts b/test/lsptoolshost/integrationTests/testAssets/slnWithGenerator.ts similarity index 100% rename from test/integrationTests/testAssets/slnWithGenerator.ts rename to test/lsptoolshost/integrationTests/testAssets/slnWithGenerator.ts diff --git a/test/integrationTests/testAssets/spawnGit.ts b/test/lsptoolshost/integrationTests/testAssets/spawnGit.ts similarity index 100% rename from test/integrationTests/testAssets/spawnGit.ts rename to test/lsptoolshost/integrationTests/testAssets/spawnGit.ts diff --git a/test/integrationTests/testAssets/testAssetWorkspace.ts b/test/lsptoolshost/integrationTests/testAssets/testAssetWorkspace.ts similarity index 100% rename from test/integrationTests/testAssets/testAssetWorkspace.ts rename to test/lsptoolshost/integrationTests/testAssets/testAssetWorkspace.ts diff --git a/test/integrationTests/testAssets/testAssets.ts b/test/lsptoolshost/integrationTests/testAssets/testAssets.ts similarity index 95% rename from test/integrationTests/testAssets/testAssets.ts rename to test/lsptoolshost/integrationTests/testAssets/testAssets.ts index 5f385a078..965204fca 100644 --- a/test/integrationTests/testAssets/testAssets.ts +++ b/test/lsptoolshost/integrationTests/testAssets/testAssets.ts @@ -6,8 +6,8 @@ import * as fs from 'async-file'; import * as path from 'path'; import * as vscode from 'vscode'; -import spawnGit from '../../../test/integrationTests/testAssets/spawnGit'; -import { execChildProcess } from '../../../src/common'; +import spawnGit from './spawnGit'; +import { execChildProcess } from '../../../../src/common'; export class TestAssetProject { constructor(project: ITestAssetProject) { diff --git a/test/integrationTests/unitTests.integration.test.ts b/test/lsptoolshost/integrationTests/unitTests.integration.test.ts similarity index 98% rename from test/integrationTests/unitTests.integration.test.ts rename to test/lsptoolshost/integrationTests/unitTests.integration.test.ts index a7bfda189..11e9fcd48 100644 --- a/test/integrationTests/unitTests.integration.test.ts +++ b/test/lsptoolshost/integrationTests/unitTests.integration.test.ts @@ -13,7 +13,7 @@ import { getCodeLensesAsync, openFileInWorkspaceAsync, } from './integrationHelpers'; -import { TestProgress } from '../../src/lsptoolshost/roslynProtocol'; +import { TestProgress } from '../../../src/lsptoolshost/roslynProtocol'; describe(`[${testAssetWorkspace.description}] Test Unit Testing`, () => { beforeAll(async () => { diff --git a/test/integrationTests/workspaceDiagnostics.integration.test.ts b/test/lsptoolshost/integrationTests/workspaceDiagnostics.integration.test.ts similarity index 98% rename from test/integrationTests/workspaceDiagnostics.integration.test.ts rename to test/lsptoolshost/integrationTests/workspaceDiagnostics.integration.test.ts index 4f442ee02..47803daa4 100644 --- a/test/integrationTests/workspaceDiagnostics.integration.test.ts +++ b/test/lsptoolshost/integrationTests/workspaceDiagnostics.integration.test.ts @@ -6,7 +6,7 @@ import * as vscode from 'vscode'; import { describe, test, expect, beforeAll, afterAll } from '@jest/globals'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; -import { AnalysisSetting } from '../../src/lsptoolshost/buildDiagnosticsService'; +import { AnalysisSetting } from '../../../src/lsptoolshost/buildDiagnosticsService'; import * as integrationHelpers from './integrationHelpers'; import { getCode, setBackgroundAnalysisScopes, waitForExpectedDiagnostics } from './diagnosticsHelpers'; describe(`[${testAssetWorkspace.description}] Test diagnostics`, () => { @@ -87,7 +87,7 @@ describe(`[${testAssetWorkspace.description}] Test diagnostics`, () => { }); await waitForExpectedDiagnostics((diagnostics) => { - expect(diagnostics).toHaveLength(31); + expect(diagnostics.length).toBeGreaterThan(2); const diagnosticsInDiagnosticsCs = diagnostics .filter(([uri, _]) => uri.fsPath.endsWith('diagnostics.cs')) diff --git a/test/unitTests/configurationMiddleware.test.ts b/test/lsptoolshost/unitTests/configurationMiddleware.test.ts similarity index 99% rename from test/unitTests/configurationMiddleware.test.ts rename to test/lsptoolshost/unitTests/configurationMiddleware.test.ts index 5c2be26cd..587a863b7 100644 --- a/test/unitTests/configurationMiddleware.test.ts +++ b/test/lsptoolshost/unitTests/configurationMiddleware.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { readFileSync } from 'fs'; -import { convertServerOptionNameToClientConfigurationName } from '../../src/lsptoolshost/optionNameConverter'; +import { convertServerOptionNameToClientConfigurationName } from '../../../src/lsptoolshost/optionNameConverter'; import { describe, test, expect } from '@jest/globals'; const editorBehaviorSection = 1; diff --git a/omnisharptest/omnisharpUnitTests/logging/csharpChannelObserver.test.ts b/test/lsptoolshost/unitTests/csharpChannelObserver.test.ts similarity index 89% rename from omnisharptest/omnisharpUnitTests/logging/csharpChannelObserver.test.ts rename to test/lsptoolshost/unitTests/csharpChannelObserver.test.ts index 5c8291098..722765e2c 100644 --- a/omnisharptest/omnisharpUnitTests/logging/csharpChannelObserver.test.ts +++ b/test/lsptoolshost/unitTests/csharpChannelObserver.test.ts @@ -4,24 +4,22 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect } from '@jest/globals'; -import { getNullChannel } from '../../../test/unitTests/fakes'; +import { getNullChannel } from '../../fakes'; import { CsharpChannelObserver } from '../../../src/shared/observers/csharpChannelObserver'; import { InstallationFailure, - DebuggerNotInstalledFailure, - DebuggerPrerequisiteFailure, - ProjectJsonDeprecatedWarning, BaseEvent, PackageInstallStart, IntegrityCheckFailure, -} from '../../../src/omnisharp/loggingEvents'; + DebuggerNotInstalledFailure, + DebuggerPrerequisiteFailure, +} from '../../../src/shared/loggingEvents'; describe('CsharpChannelObserver', () => { [ new InstallationFailure('someStage', 'someError'), new DebuggerNotInstalledFailure(), new DebuggerPrerequisiteFailure('some failure'), - new ProjectJsonDeprecatedWarning(), new IntegrityCheckFailure('', '', true), new PackageInstallStart(), ].forEach((event: BaseEvent) => { diff --git a/omnisharptest/omnisharpUnitTests/logging/csharpLoggerObserver.test.ts b/test/lsptoolshost/unitTests/csharpLoggerObserver.test.ts similarity index 96% rename from omnisharptest/omnisharpUnitTests/logging/csharpLoggerObserver.test.ts rename to test/lsptoolshost/unitTests/csharpLoggerObserver.test.ts index b09c42649..f757ab824 100644 --- a/omnisharptest/omnisharpUnitTests/logging/csharpLoggerObserver.test.ts +++ b/test/lsptoolshost/unitTests/csharpLoggerObserver.test.ts @@ -4,12 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { getNullChannel } from '../../../test/unitTests/fakes'; +import { getNullChannel } from '../../fakes'; import { CsharpLoggerObserver } from '../../../src/shared/observers/csharpLoggerObserver'; import { PlatformInformation } from '../../../src/shared/platform'; -import * as Event from '../../../src/omnisharp/loggingEvents'; import { PackageError } from '../../../src/packageManager/packageError'; import { Package } from '../../../src/packageManager/package'; +import * as Event from '../../../src/shared/loggingEvents'; describe('CsharpLoggerObserver', () => { let logOutput = ''; @@ -180,12 +180,6 @@ describe('CsharpLoggerObserver', () => { expect(logOutput).toBeTruthy(); }); - test(`ProjectJsonDeprecatedWarning: Some message is logged`, () => { - const event = new Event.ProjectJsonDeprecatedWarning(); - observer.post(event); - expect(logOutput).toBeTruthy(); - }); - test(`InstallationSuccess: Some message is logged`, () => { const event = new Event.InstallationSuccess(); observer.post(event); diff --git a/test/unitTests/jest.config.ts b/test/lsptoolshost/unitTests/jest.config.ts similarity index 90% rename from test/unitTests/jest.config.ts rename to test/lsptoolshost/unitTests/jest.config.ts index 5c180704d..01db2c61b 100644 --- a/test/unitTests/jest.config.ts +++ b/test/lsptoolshost/unitTests/jest.config.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import type { Config } from 'jest'; -import { baseProjectConfig } from '../../baseJestConfig'; +import { baseProjectConfig } from '../../../baseJestConfig'; export const jestUnitTestProjectName = 'Unit Tests'; @@ -19,7 +19,7 @@ const unitTestConfig: Config = { // Specify jest to only run tests in jest folders. // We also have to include the __mocks__ folder. That folder must be next to node_modules so we can't move it, // but if we specify roots, jest won't automatically pick it up. So we have to specify it here. - roots: ['', '../../__mocks__'], + roots: ['', '../../../__mocks__'], }; export default unitTestConfig; diff --git a/test/unitTests/json.test.ts b/test/lsptoolshost/unitTests/json.test.ts similarity index 99% rename from test/unitTests/json.test.ts rename to test/lsptoolshost/unitTests/json.test.ts index 6a55dcd55..d0a4acf4f 100644 --- a/test/unitTests/json.test.ts +++ b/test/lsptoolshost/unitTests/json.test.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { tolerantParse } from '../../src/json'; +import { tolerantParse } from '../../../src/json'; import { describe, test, expect } from '@jest/globals'; describe('JSON', () => { diff --git a/test/unitTests/languageServerConfigChangeObserver.test.ts b/test/lsptoolshost/unitTests/languageServerConfigChangeObserver.test.ts similarity index 97% rename from test/unitTests/languageServerConfigChangeObserver.test.ts rename to test/lsptoolshost/unitTests/languageServerConfigChangeObserver.test.ts index d16b53ac1..31eec3a06 100644 --- a/test/unitTests/languageServerConfigChangeObserver.test.ts +++ b/test/lsptoolshost/unitTests/languageServerConfigChangeObserver.test.ts @@ -5,11 +5,11 @@ import { timeout } from 'rxjs/operators'; import { from as observableFrom, Subject, BehaviorSubject } from 'rxjs'; -import { registerLanguageServerOptionChanges } from '../../src/lsptoolshost/optionChanges'; +import { registerLanguageServerOptionChanges } from '../../../src/lsptoolshost/optionChanges'; import { describe, beforeEach, test, expect } from '@jest/globals'; import * as vscode from 'vscode'; -import { getVSCodeWithConfig, updateConfig } from './fakes'; +import { getVSCodeWithConfig, updateConfig } from '../../fakes'; describe('Option changes observer', () => { let doClickOk: () => void; diff --git a/test/unitTests/migrateOptions.test.ts b/test/lsptoolshost/unitTests/migrateOptions.test.ts similarity index 94% rename from test/unitTests/migrateOptions.test.ts rename to test/lsptoolshost/unitTests/migrateOptions.test.ts index 916bf8aa9..1f2f8cfec 100644 --- a/test/unitTests/migrateOptions.test.ts +++ b/test/lsptoolshost/unitTests/migrateOptions.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { readFileSync } from 'fs'; -import { migrateOptions } from '../../src/shared/migrateOptions'; +import { migrateOptions } from '../../../src/shared/migrateOptions'; import { describe, test, expect } from '@jest/globals'; describe('Migrate configuration should in package.json', () => { diff --git a/test/unitTests/packageNlsJson.test.ts b/test/lsptoolshost/unitTests/packageNlsJson.test.ts similarity index 100% rename from test/unitTests/packageNlsJson.test.ts rename to test/lsptoolshost/unitTests/packageNlsJson.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/advisor.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/advisor.integration.test.ts similarity index 97% rename from omnisharptest/omnisharpIntegrationTests/advisor.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/advisor.integration.test.ts index ee5d8ef48..86bebe051 100644 --- a/omnisharptest/omnisharpIntegrationTests/advisor.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/advisor.integration.test.ts @@ -9,7 +9,7 @@ import * as vscode from 'vscode'; import { activateCSharpExtension, describeIfNotRazorOrGenerator } from './integrationHelpers'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; -import { Advisor } from '../../src/features/diagnosticsProvider'; +import { Advisor } from '../../../src/omnisharp/features/diagnosticsProvider'; function setLimit(to: number | null) { const csharpConfig = vscode.workspace.getConfiguration('csharp'); diff --git a/omnisharptest/omnisharpIntegrationTests/codeActionRename.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/codeActionRename.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/codeActionRename.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/codeActionRename.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/codeLensProvider.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/codeLensProvider.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/codeLensProvider.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/codeLensProvider.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/completionProvider.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/completionProvider.integration.test.ts similarity index 98% rename from omnisharptest/omnisharpIntegrationTests/completionProvider.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/completionProvider.integration.test.ts index 9ed375b51..349f47d52 100644 --- a/omnisharptest/omnisharpIntegrationTests/completionProvider.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/completionProvider.integration.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { expect, test, beforeAll, afterAll } from '@jest/globals'; -import OmniSharpCompletionProvider from '../../src/features/completionProvider'; +import OmniSharpCompletionProvider from '../../../src/omnisharp/features/completionProvider'; import * as vscode from 'vscode'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import * as path from 'path'; diff --git a/omnisharptest/omnisharpIntegrationTests/definitionProvider.test.ts b/test/omnisharp/omnisharpIntegrationTests/definitionProvider.test.ts similarity index 97% rename from omnisharptest/omnisharpIntegrationTests/definitionProvider.test.ts rename to test/omnisharp/omnisharpIntegrationTests/definitionProvider.test.ts index a114f58d7..c647fa85d 100644 --- a/omnisharptest/omnisharpIntegrationTests/definitionProvider.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/definitionProvider.test.ts @@ -5,7 +5,7 @@ import { expect, test, beforeAll, afterAll } from '@jest/globals'; import * as vscode from 'vscode'; -import OmniSharpDefinitionProvider from '../../src/features/definitionProvider'; +import OmniSharpDefinitionProvider from '../../../src/omnisharp/features/definitionProvider'; import * as path from 'path'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import { activateCSharpExtension, describeIfNotRazorOrGenerator, restartOmniSharpServer } from './integrationHelpers'; diff --git a/omnisharptest/omnisharpIntegrationTests/diagnostics.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/diagnostics.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/diagnostics.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/diagnostics.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/documentSymbolProvider.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/documentSymbolProvider.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/documentSymbolProvider.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/documentSymbolProvider.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/documentationCommentAutoFormatting.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/documentationCommentAutoFormatting.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/documentationCommentAutoFormatting.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/documentationCommentAutoFormatting.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/dotnetTest.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/dotnetTest.integration.test.ts similarity index 94% rename from omnisharptest/omnisharpIntegrationTests/dotnetTest.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/dotnetTest.integration.test.ts index f62311166..73a5b1724 100644 --- a/omnisharptest/omnisharpIntegrationTests/dotnetTest.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/dotnetTest.integration.test.ts @@ -8,10 +8,10 @@ import * as vscode from 'vscode'; import * as path from 'path'; import { activateCSharpExtension, describeIfSlnWithCsProj } from './integrationHelpers'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; -import { EventStream } from '../../src/eventStream'; -import { EventType } from '../../src/omnisharp/eventType'; -import { OmnisharpRequestMessage } from '../../src/omnisharp/loggingEvents'; -import { V2 } from '../../src/omnisharp/protocol'; +import { EventStream } from '../../../src/eventStream'; +import { EventType } from '../../../src/shared/eventType'; +import { OmnisharpRequestMessage } from '../../../src/omnisharp/omnisharpLoggingEvents'; +import { V2 } from '../../../src/omnisharp/protocol'; import { isNotNull } from '../testUtil'; // These tests only run on the slnWithCsproj solution diff --git a/omnisharptest/omnisharpIntegrationTests/hoverProvider.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/hoverProvider.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/hoverProvider.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/hoverProvider.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/implementationProvider.test.ts b/test/omnisharp/omnisharpIntegrationTests/implementationProvider.test.ts similarity index 94% rename from omnisharptest/omnisharpIntegrationTests/implementationProvider.test.ts rename to test/omnisharp/omnisharpIntegrationTests/implementationProvider.test.ts index b37b63748..bcb39a937 100644 --- a/omnisharptest/omnisharpIntegrationTests/implementationProvider.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/implementationProvider.test.ts @@ -5,7 +5,7 @@ import { expect, test, beforeAll, afterAll } from '@jest/globals'; import * as vscode from 'vscode'; -import OmniSharpImplementationProvider from '../../src/features/implementationProvider'; +import OmniSharpImplementationProvider from '../../../src/omnisharp/features/implementationProvider'; import * as path from 'path'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import { activateCSharpExtension, describeIfNotRazorOrGenerator } from './integrationHelpers'; diff --git a/test/integrationTests/index.ts b/test/omnisharp/omnisharpIntegrationTests/index.ts similarity index 89% rename from test/integrationTests/index.ts rename to test/omnisharp/omnisharpIntegrationTests/index.ts index 26731859a..ac2e6a90a 100644 --- a/test/integrationTests/index.ts +++ b/test/omnisharp/omnisharpIntegrationTests/index.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { runIntegrationTests } from '../runIntegrationTests'; +import { runIntegrationTests } from '../../runIntegrationTests'; import { jestIntegrationTestProjectName } from './jest.config'; export async function run() { diff --git a/omnisharptest/omnisharpIntegrationTests/inlayHints.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/inlayHints.integration.test.ts similarity index 98% rename from omnisharptest/omnisharpIntegrationTests/inlayHints.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/inlayHints.integration.test.ts index 15086c972..a0e68b4ff 100644 --- a/omnisharptest/omnisharpIntegrationTests/inlayHints.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/inlayHints.integration.test.ts @@ -8,7 +8,7 @@ import * as vscode from 'vscode'; import { activateCSharpExtension, describeIfNotRazorOrGenerator, restartOmniSharpServer } from './integrationHelpers'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import * as path from 'path'; -import { InlayHint, LinePositionSpanTextChange } from '../../src/omnisharp/protocol'; +import { InlayHint, LinePositionSpanTextChange } from '../../../src/omnisharp/protocol'; import { isNotNull } from '../testUtil'; describeIfNotRazorOrGenerator(`Inlay Hints ${testAssetWorkspace.description}`, function () { diff --git a/omnisharptest/omnisharpIntegrationTests/integrationHelpers.ts b/test/omnisharp/omnisharpIntegrationTests/integrationHelpers.ts similarity index 82% rename from omnisharptest/omnisharpIntegrationTests/integrationHelpers.ts rename to test/omnisharp/omnisharpIntegrationTests/integrationHelpers.ts index e5da6162b..7742e1ce2 100644 --- a/omnisharptest/omnisharpIntegrationTests/integrationHelpers.ts +++ b/test/omnisharp/omnisharpIntegrationTests/integrationHelpers.ts @@ -5,10 +5,10 @@ import * as path from 'path'; import * as vscode from 'vscode'; -import { Advisor } from '../../src/features/diagnosticsProvider'; -import { EventStream } from '../../src/eventStream'; -import { EventType } from '../../src/omnisharp/eventType'; -import { OmnisharpExtensionExports } from '../../src/csharpExtensionExports'; +import { Advisor } from '../../../src/omnisharp/features/diagnosticsProvider'; +import { EventStream } from '../../../src/eventStream'; +import { EventType } from '../../../src/shared/eventType'; +import { OmnisharpExtensionExports } from '../../../src/csharpExtensionExports'; import { describe } from '@jest/globals'; export interface ActivationResult { @@ -17,15 +17,6 @@ export interface ActivationResult { } export async function activateCSharpExtension(): Promise { - // Ensure the dependent extension exists - when launching via F5 launch.json we can't install the extension prior to opening vscode. - const vscodeDotnetRuntimeExtensionId = 'ms-dotnettools.vscode-dotnet-runtime'; - const dotnetRuntimeExtension = - vscode.extensions.getExtension(vscodeDotnetRuntimeExtensionId); - if (!dotnetRuntimeExtension) { - await vscode.commands.executeCommand('workbench.extensions.installExtension', vscodeDotnetRuntimeExtensionId); - await vscode.commands.executeCommand('workbench.action.reloadWindow'); - } - const configuration = vscode.workspace.getConfiguration(); configuration.update( 'omnisharp.enableLspDriver', diff --git a/omnisharptest/omnisharpIntegrationTests/jest.config.ts b/test/omnisharp/omnisharpIntegrationTests/jest.config.ts similarity index 74% rename from omnisharptest/omnisharpIntegrationTests/jest.config.ts rename to test/omnisharp/omnisharpIntegrationTests/jest.config.ts index 4143879ed..0845965cd 100644 --- a/omnisharptest/omnisharpIntegrationTests/jest.config.ts +++ b/test/omnisharp/omnisharpIntegrationTests/jest.config.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import type { Config } from 'jest'; -import { baseProjectConfig } from '../../baseJestConfig'; +import { baseProjectConfig } from '../../../baseJestConfig'; export const jestIntegrationTestProjectName = 'OmniSharp Integration Tests'; @@ -14,8 +14,8 @@ const integrationTestConfig: Config = { ...baseProjectConfig, displayName: jestIntegrationTestProjectName, roots: [''], - testEnvironment: '/../../test/integrationTests/jestSetup/vsCodeEnvironment.ts', - setupFilesAfterEnv: ['/../../test/integrationTests/jestSetup/vsCodeFramework.ts'], + testEnvironment: '/../../vsCodeEnvironment.ts', + setupFilesAfterEnv: ['/../../vsCodeFramework.ts'], }; export default integrationTestConfig; diff --git a/omnisharptest/omnisharpIntegrationTests/languageMiddleware.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/languageMiddleware.integration.test.ts similarity index 99% rename from omnisharptest/omnisharpIntegrationTests/languageMiddleware.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/languageMiddleware.integration.test.ts index 5d1bdfed3..b802e7b4f 100644 --- a/omnisharptest/omnisharpIntegrationTests/languageMiddleware.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/languageMiddleware.integration.test.ts @@ -8,7 +8,7 @@ import * as vscode from 'vscode'; import * as path from 'path'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import { activateCSharpExtension, describeIfNotRazorOrGenerator } from './integrationHelpers'; -import { LanguageMiddleware, LanguageMiddlewareFeature } from '../../src/omnisharp/languageMiddlewareFeature'; +import { LanguageMiddleware, LanguageMiddlewareFeature } from '../../../src/omnisharp/languageMiddlewareFeature'; describeIfNotRazorOrGenerator(`${LanguageMiddlewareFeature.name}: ${testAssetWorkspace.description}`, () => { let fileUri: vscode.Uri; diff --git a/omnisharptest/omnisharpIntegrationTests/launchConfiguration.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/launchConfiguration.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/launchConfiguration.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/launchConfiguration.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/launcher.test.ts b/test/omnisharp/omnisharpIntegrationTests/launcher.test.ts similarity index 96% rename from omnisharptest/omnisharpIntegrationTests/launcher.test.ts rename to test/omnisharp/omnisharpIntegrationTests/launcher.test.ts index 3eff18224..72ee28e51 100644 --- a/omnisharptest/omnisharpIntegrationTests/launcher.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/launcher.test.ts @@ -10,8 +10,8 @@ import { resourcesToLaunchTargets, vsls, vslsTarget, -} from '../../src/omnisharp/launcher'; -import { LaunchTargetKind } from '../../src/shared/launchTarget'; +} from '../../../src/omnisharp/launcher'; +import { LaunchTargetKind } from '../../../src/shared/launchTarget'; describe(`launcher:`, () => { const workspaceFolders: vscode.WorkspaceFolder[] = [{ uri: vscode.Uri.parse('/'), name: 'root', index: 0 }]; diff --git a/omnisharptest/omnisharpIntegrationTests/omnisharpCommands.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/omnisharpCommands.integration.test.ts similarity index 92% rename from omnisharptest/omnisharpIntegrationTests/omnisharpCommands.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/omnisharpCommands.integration.test.ts index 9423560ad..efad59c9a 100644 --- a/omnisharptest/omnisharpIntegrationTests/omnisharpCommands.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/omnisharpCommands.integration.test.ts @@ -7,7 +7,11 @@ import { expect, test, beforeAll, afterAll, describe } from '@jest/globals'; import * as vscode from 'vscode'; import { activateCSharpExtension } from './integrationHelpers'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; -import { CommonCommands, OmniSharpCommands, RoslynCommands } from '../../test/integrationTests/expectedCommands'; +import { + CommonCommands, + OmniSharpCommands, + RoslynCommands, +} from '../../lsptoolshost/integrationTests/expectedCommands'; describe(`Command Enablement: ${testAssetWorkspace.description}`, function () { beforeAll(async function () { diff --git a/omnisharptest/omnisharpIntegrationTests/parsedEnvironmentFile.test.ts b/test/omnisharp/omnisharpIntegrationTests/parsedEnvironmentFile.test.ts similarity index 97% rename from omnisharptest/omnisharpIntegrationTests/parsedEnvironmentFile.test.ts rename to test/omnisharp/omnisharpIntegrationTests/parsedEnvironmentFile.test.ts index 5502acf29..22c7e749e 100644 --- a/omnisharptest/omnisharpIntegrationTests/parsedEnvironmentFile.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/parsedEnvironmentFile.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect } from '@jest/globals'; -import { ParsedEnvironmentFile } from '../../src/coreclrDebug/parsedEnvironmentFile'; +import { ParsedEnvironmentFile } from '../../../src/coreclrDebug/parsedEnvironmentFile'; describe('ParsedEnvironmentFile', () => { test('Add single variable', () => { diff --git a/omnisharptest/omnisharpIntegrationTests/poll.ts b/test/omnisharp/omnisharpIntegrationTests/poll.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/poll.ts rename to test/omnisharp/omnisharpIntegrationTests/poll.ts diff --git a/omnisharptest/omnisharpIntegrationTests/reAnalyze.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/reAnalyze.integration.test.ts similarity index 93% rename from omnisharptest/omnisharpIntegrationTests/reAnalyze.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/reAnalyze.integration.test.ts index 32753a3fd..5cb975225 100644 --- a/omnisharptest/omnisharpIntegrationTests/reAnalyze.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/reAnalyze.integration.test.ts @@ -9,10 +9,11 @@ import * as path from 'path'; import { activateCSharpExtension, describeIfNotRazorOrGenerator } from './integrationHelpers'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import { poll, assertWithPoll } from './poll'; -import { EventStream } from '../../src/eventStream'; -import { EventType } from '../../src/omnisharp/eventType'; -import { BaseEvent, OmnisharpBackgroundDiagnosticStatus } from '../../src/omnisharp/loggingEvents'; -import { BackgroundDiagnosticStatus } from '../../src/omnisharp/protocol'; +import { EventStream } from '../../../src/eventStream'; +import { EventType } from '../../../src/shared/eventType'; +import { BaseEvent } from '../../../src/shared/loggingEvents'; +import { OmnisharpBackgroundDiagnosticStatus } from '../../../src/omnisharp/omnisharpLoggingEvents'; +import { BackgroundDiagnosticStatus } from '../../../src/omnisharp/protocol'; function listenEvents(stream: EventStream, type: EventType): T[] { const results: T[] = []; diff --git a/omnisharptest/omnisharpIntegrationTests/referenceProvider.test.ts b/test/omnisharp/omnisharpIntegrationTests/referenceProvider.test.ts similarity index 94% rename from omnisharptest/omnisharpIntegrationTests/referenceProvider.test.ts rename to test/omnisharp/omnisharpIntegrationTests/referenceProvider.test.ts index b1c0753be..4d7605190 100644 --- a/omnisharptest/omnisharpIntegrationTests/referenceProvider.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/referenceProvider.test.ts @@ -5,7 +5,7 @@ import { expect, test, beforeAll, afterAll } from '@jest/globals'; import * as vscode from 'vscode'; -import OmniSharpReferenceProvider from '../../src/features/referenceProvider'; +import OmniSharpReferenceProvider from '../../../src/omnisharp/features/referenceProvider'; import * as path from 'path'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import { activateCSharpExtension, describeIfNotRazorOrGenerator } from './integrationHelpers'; diff --git a/omnisharptest/omnisharpIntegrationTests/semanticTokensProvider.test.ts b/test/omnisharp/omnisharpIntegrationTests/semanticTokensProvider.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/semanticTokensProvider.test.ts rename to test/omnisharp/omnisharpIntegrationTests/semanticTokensProvider.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/signatureHelp.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/signatureHelp.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/signatureHelp.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/signatureHelp.integration.test.ts diff --git a/omnisharptest/omnisharpIntegrationTests/sourceGeneratorDefinitionProvider.test.ts b/test/omnisharp/omnisharpIntegrationTests/sourceGeneratorDefinitionProvider.test.ts similarity index 97% rename from omnisharptest/omnisharpIntegrationTests/sourceGeneratorDefinitionProvider.test.ts rename to test/omnisharp/omnisharpIntegrationTests/sourceGeneratorDefinitionProvider.test.ts index 449d0b197..3edbc9f4f 100644 --- a/omnisharptest/omnisharpIntegrationTests/sourceGeneratorDefinitionProvider.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/sourceGeneratorDefinitionProvider.test.ts @@ -6,7 +6,7 @@ import { expect, test, beforeAll, afterAll } from '@jest/globals'; import * as vscode from 'vscode'; import * as path from 'path'; -import OmniSharpDefinitionProvider from '../../src/features/definitionProvider'; +import OmniSharpDefinitionProvider from '../../../src/omnisharp/features/definitionProvider'; import { activateCSharpExtension, describeIfGenerator, restartOmniSharpServer } from './integrationHelpers'; import { assertWithPoll, sleep } from './poll'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_BasicRazorApp2_1.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_BasicRazorApp2_1.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_BasicRazorApp2_1.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_BasicRazorApp2_1.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_lsp_BasicRazorApp2_1.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_lsp_BasicRazorApp2_1.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_lsp_BasicRazorApp2_1.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/omnisharp_lsp_BasicRazorApp2_1.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor b/test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor rename to test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml b/test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml rename to test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml b/test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml rename to test/omnisharp/omnisharpIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml diff --git a/test/integrationTests/testAssets/NuGet.config b/test/omnisharp/omnisharpIntegrationTests/testAssets/NuGet.config similarity index 100% rename from test/integrationTests/testAssets/NuGet.config rename to test/omnisharp/omnisharpIntegrationTests/testAssets/NuGet.config diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/activeTestAssetWorkspace.ts b/test/omnisharp/omnisharpIntegrationTests/testAssets/activeTestAssetWorkspace.ts similarity index 60% rename from omnisharptest/omnisharpIntegrationTests/testAssets/activeTestAssetWorkspace.ts rename to test/omnisharp/omnisharpIntegrationTests/testAssets/activeTestAssetWorkspace.ts index 2bf613dc0..4dc262b29 100644 --- a/omnisharptest/omnisharpIntegrationTests/testAssets/activeTestAssetWorkspace.ts +++ b/test/omnisharp/omnisharpIntegrationTests/testAssets/activeTestAssetWorkspace.ts @@ -6,13 +6,13 @@ import * as path from 'path'; import * as vscode from 'vscode'; -import { ITestAssetWorkspace } from '../../../test/integrationTests/testAssets/testAssets'; +import { ITestAssetWorkspace } from '../../../lsptoolshost/integrationTests/testAssets/testAssets'; -import singleCsproj from '../../../test/integrationTests/testAssets/singleCsproj'; -import slnWithCsproj from '../../../test/integrationTests/testAssets/slnWithCsproj'; -import slnFilterWithCsproj from '../../../test/integrationTests/testAssets/slnFilterWithCsproj'; -import BasicRazorApp2_1 from '../../../test/integrationTests/testAssets/basicRazorApp21'; -import slnWithGenerator from '../../../test/integrationTests/testAssets/slnWithGenerator'; +import singleCsproj from '../../../lsptoolshost/integrationTests/testAssets/singleCsproj'; +import slnWithCsproj from '../../../lsptoolshost/integrationTests/testAssets/slnWithCsproj'; +import slnFilterWithCsproj from '../../../lsptoolshost/integrationTests/testAssets/slnFilterWithCsproj'; +import BasicRazorApp2_1 from '../../../lsptoolshost/integrationTests/testAssets/basicRazorApp21'; +import slnWithGenerator from '../../../lsptoolshost/integrationTests/testAssets/slnWithGenerator'; import { OmnisharpTestAssetWorkspace } from './omnisharpTestAssetWorkspace'; const testAssetWorkspaces: { [x: string]: ITestAssetWorkspace } = { diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/omnisharpTestAssetWorkspace.ts b/test/omnisharp/omnisharpIntegrationTests/testAssets/omnisharpTestAssetWorkspace.ts similarity index 91% rename from omnisharptest/omnisharpIntegrationTests/testAssets/omnisharpTestAssetWorkspace.ts rename to test/omnisharp/omnisharpIntegrationTests/testAssets/omnisharpTestAssetWorkspace.ts index a41fe54bf..e98b279d7 100644 --- a/omnisharptest/omnisharpIntegrationTests/testAssets/omnisharpTestAssetWorkspace.ts +++ b/test/omnisharp/omnisharpIntegrationTests/testAssets/omnisharpTestAssetWorkspace.ts @@ -4,11 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import { EventStream } from '../../../src/eventStream'; -import { EventType } from '../../../src/omnisharp/eventType'; -import { BaseEvent } from '../../../src/omnisharp/loggingEvents'; +import { EventStream } from '../../../../src/eventStream'; +import { EventType } from '../../../../src/shared/eventType'; +import { BaseEvent } from '../../../../src/shared/loggingEvents'; import { poll } from '../poll'; -import { ITestAssetWorkspace, TestAssetWorkspace } from '../../../test/integrationTests/testAssets/testAssets'; +import { ITestAssetWorkspace, TestAssetWorkspace } from '../../../lsptoolshost/integrationTests/testAssets/testAssets'; import { ActivationResult } from '../integrationHelpers'; export class OmnisharpTestAssetWorkspace extends TestAssetWorkspace { diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.gitignore b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/.gitignore similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.gitignore rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/.gitignore diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_lsp_singleCsproj.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_lsp_singleCsproj.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_lsp_singleCsproj.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_lsp_singleCsproj.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_singleCsproj.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_singleCsproj.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_singleCsproj.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/.vscode/omnisharp_singleCsproj.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/A.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/A.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/A.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/A.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/DocComments.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/DocComments.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/DocComments.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/DocComments.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/ISomeInterface.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/ISomeInterface.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/ISomeInterface.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/ISomeInterface.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/Program.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/Program.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/Program.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/Program.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/SomeInterfaceImpl.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/SomeInterfaceImpl.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/SomeInterfaceImpl.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/SomeInterfaceImpl.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/completion.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/completion.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/completion.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/completion.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completionBase.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/completionBase.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completionBase.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/completionBase.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/definition.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/definition.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/definition.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/definition.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/diagnostics.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/diagnostics.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/diagnostics.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/diagnostics.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/documentSymbols.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/documentSymbols.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/documentSymbols.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/documentSymbols.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/hover.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/hover.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/hover.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/hover.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/implementation.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/implementation.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/implementation.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/implementation.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/inlayHints.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/inlayHints.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/inlayHints.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/inlayHints.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/reference.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/reference.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/reference.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/reference.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remap.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/remap.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remap.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/remap.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remapped.txt b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/remapped.txt similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remapped.txt rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/remapped.txt diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/secondaryDiagnostics.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/secondaryDiagnostics.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/secondaryDiagnostics.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/secondaryDiagnostics.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/semantictokens.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/semantictokens.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/semantictokens.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/semantictokens.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/sigHelp.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/sigHelp.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/sigHelp.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/sigHelp.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/singleCsproj.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/singleCsproj.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/singleCsproj/singleCsproj.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/singleCsproj.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/typeDefinition.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/typeDefinition.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/typeDefinition.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/singleCsproj/typeDefinition.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.gitignore b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.gitignore similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/.gitignore rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.gitignore diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_lsp_slnFilterWithCsproj.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_lsp_slnFilterWithCsproj.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_lsp_slnFilterWithCsproj.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_lsp_slnFilterWithCsproj.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_slnFilterWithCsproj.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_slnFilterWithCsproj.code-workspace similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_slnFilterWithCsproj.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/.vscode/omnisharp_slnFilterWithCsproj.code-workspace diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFile.sln b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFile.sln similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFile.sln rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFile.sln diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFilter.slnf b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFilter.slnf similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFilter.slnf rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/SolutionFilter.slnf diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/A.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/A.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/A.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/A.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/DocComments.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/DocComments.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/DocComments.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/DocComments.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/ISomeInterface.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/ISomeInterface.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/Program.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/Program.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/Program.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/Program.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/SomeInterfaceImpl.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/SomeInterfaceImpl.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/SomeInterfaceImpl.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/SomeInterfaceImpl.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/app.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/app.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/app.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/app.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completion.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completion.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completion.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completion.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completionBase.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/completionBase.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/definition.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/definition.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/definition.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/definition.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/diagnostics.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/diagnostics.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/documentSymbols.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/documentSymbols.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/hover.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/hover.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/hover.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/hover.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/implementation.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/implementation.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/implementation.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/implementation.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/inlayHints.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/inlayHints.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/reference.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/reference.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/reference.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/reference.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remap.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remap.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remap.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remap.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remapped.txt b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remapped.txt similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remapped.txt rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/remapped.txt diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/secondaryDiagnostics.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/secondaryDiagnostics.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/semantictokens.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/semantictokens.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/sigHelp.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/sigHelp.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/sigHelp.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/sigHelp.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/typeDefinition.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/app/typeDefinition.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/Class1.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/Class1.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/lib.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/src/lib/lib.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/UnitTest1.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/UnitTest1.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/UnitTest1.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/UnitTest1.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/test.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/test.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/test.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnFilterWithCsproj/test/test.csproj diff --git a/test/integrationTests/testAssets/slnWithCsproj/.gitignore b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.gitignore similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/.gitignore rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.gitignore diff --git a/test/integrationTests/testAssets/slnWithCsproj/.runsettings b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.runsettings similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/.runsettings rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.runsettings diff --git a/test/integrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/lsp_tools_host_slnWithCsproj.code-workspace diff --git a/test/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_lsp_slnWithCsproj.code-workspace diff --git a/test/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/.vscode/omnisharp_slnWithCsproj.code-workspace diff --git a/test/integrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/b_SecondInOrder_SlnFile.sln diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/A.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/A.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/A.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/A.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/DocComments.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/ISomeInterface.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/Program.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/Program.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/Program.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/Program.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/SomeInterfaceImpl.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/app.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/app.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/app.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/app.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completion.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completion.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completion.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completion.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/completionBase.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/definition.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/definition.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/definition.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/definition.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/diagnostics.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/documentSymbols.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/hover.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/hover.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/hover.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/hover.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/implementation.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/implementation.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/implementation.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/implementation.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/inlayHints.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/reference.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/reference.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/reference.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/reference.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/remap.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remap.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/remap.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remap.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/remapped.txt b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remapped.txt similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/remapped.txt rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/remapped.txt diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/secondaryDiagnostics.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/semantictokens.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/sigHelp.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/app/typeDefinition.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/Class1.cs diff --git a/test/integrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/src/lib/lib.csproj diff --git a/test/integrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs similarity index 100% rename from test/integrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/UnitTest1.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/test.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/test.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/test.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithCsproj/test/test.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/.vscode/settings.json b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/.vscode/settings.json similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/.vscode/settings.json rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/.vscode/settings.json diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/GeneratorTrigger.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/GeneratorTrigger.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/GeneratorTrigger.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/GeneratorTrigger.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/app.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/app.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/app.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/app/app.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/MainGenerator.cs b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/MainGenerator.cs similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/MainGenerator.cs rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/MainGenerator.cs diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/generator.csproj b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/generator.csproj similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/generator.csproj rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/generator/generator.csproj diff --git a/omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/slnWithGenerator.sln b/test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/slnWithGenerator.sln similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/testAssets/slnWithGenerator/slnWithGenerator.sln rename to test/omnisharp/omnisharpIntegrationTests/testAssets/slnWithGenerator/slnWithGenerator.sln diff --git a/omnisharptest/omnisharpIntegrationTests/typeDefinitionProvider.test.ts b/test/omnisharp/omnisharpIntegrationTests/typeDefinitionProvider.test.ts similarity index 97% rename from omnisharptest/omnisharpIntegrationTests/typeDefinitionProvider.test.ts rename to test/omnisharp/omnisharpIntegrationTests/typeDefinitionProvider.test.ts index 5e4572643..3b4bb74dd 100644 --- a/omnisharptest/omnisharpIntegrationTests/typeDefinitionProvider.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/typeDefinitionProvider.test.ts @@ -5,7 +5,7 @@ import { expect, test, beforeAll, afterAll } from '@jest/globals'; import * as vscode from 'vscode'; -import OmniSharpDefinitionProvider from '../../src/features/definitionProvider'; +import OmniSharpDefinitionProvider from '../../../src/omnisharp/features/definitionProvider'; import * as path from 'path'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; import { activateCSharpExtension, describeIfNotRazorOrGenerator, restartOmniSharpServer } from './integrationHelpers'; diff --git a/omnisharptest/omnisharpIntegrationTests/virtualDocumentTracker.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/virtualDocumentTracker.integration.test.ts similarity index 97% rename from omnisharptest/omnisharpIntegrationTests/virtualDocumentTracker.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/virtualDocumentTracker.integration.test.ts index 5c6dc8eb8..cceb330ad 100644 --- a/omnisharptest/omnisharpIntegrationTests/virtualDocumentTracker.integration.test.ts +++ b/test/omnisharp/omnisharpIntegrationTests/virtualDocumentTracker.integration.test.ts @@ -7,7 +7,7 @@ import { expect, test, beforeAll, afterAll } from '@jest/globals'; import * as vscode from 'vscode'; import { activateCSharpExtension, describeIfNotGenerator, isSlnWithGenerator } from './integrationHelpers'; import testAssetWorkspace from './testAssets/activeTestAssetWorkspace'; -import { IDisposable } from '../../src/disposable'; +import { IDisposable } from '../../../src/disposable'; describeIfNotGenerator(`Virtual Document Tracking ${testAssetWorkspace.description}`, function () { const virtualScheme = 'virtual'; diff --git a/omnisharptest/omnisharpIntegrationTests/workspaceSymbolProvider.integration.test.ts b/test/omnisharp/omnisharpIntegrationTests/workspaceSymbolProvider.integration.test.ts similarity index 100% rename from omnisharptest/omnisharpIntegrationTests/workspaceSymbolProvider.integration.test.ts rename to test/omnisharp/omnisharpIntegrationTests/workspaceSymbolProvider.integration.test.ts diff --git a/omnisharptest/omnisharpUnitTests/absolutePath.test.ts b/test/omnisharp/omnisharpUnitTests/absolutePath.test.ts similarity index 88% rename from omnisharptest/omnisharpUnitTests/absolutePath.test.ts rename to test/omnisharp/omnisharpUnitTests/absolutePath.test.ts index 9706a2dc8..7df201e21 100644 --- a/omnisharptest/omnisharpUnitTests/absolutePath.test.ts +++ b/test/omnisharp/omnisharpUnitTests/absolutePath.test.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach, afterEach } from '@jest/globals'; -import { AbsolutePath } from '../../src/packageManager/absolutePath'; -import { TmpAsset, CreateTmpFile } from '../../src/createTmpAsset'; +import { AbsolutePath } from '../../../src/packageManager/absolutePath'; +import { TmpAsset, CreateTmpFile } from '../../../src/createTmpAsset'; import { join } from 'path'; describe(AbsolutePath.name, () => { diff --git a/omnisharptest/omnisharpUnitTests/assets.test.ts b/test/omnisharp/omnisharpUnitTests/assets.test.ts similarity index 99% rename from omnisharptest/omnisharpUnitTests/assets.test.ts rename to test/omnisharp/omnisharpUnitTests/assets.test.ts index 781dac691..8b73e9b63 100644 --- a/omnisharptest/omnisharpUnitTests/assets.test.ts +++ b/test/omnisharp/omnisharpUnitTests/assets.test.ts @@ -14,10 +14,10 @@ import { ProgramLaunchType, replaceCommentPropertiesWithComments, updateJsonWithComments, -} from '../../src/shared/assets'; +} from '../../../src/shared/assets'; import { parse } from 'jsonc-parser'; -import { ProjectDebugInformation } from '../../src/shared/IWorkspaceDebugInformationProvider'; -import { findNetCoreTargetFramework } from '../../src/shared/utils'; +import { ProjectDebugInformation } from '../../../src/shared/IWorkspaceDebugInformationProvider'; +import { findNetCoreTargetFramework } from '../../../src/shared/utils'; import { isNotNull } from '../testUtil'; describe('Asset generation: csproj', () => { diff --git a/omnisharptest/omnisharpUnitTests/common.test.ts b/test/omnisharp/omnisharpUnitTests/common.test.ts similarity index 97% rename from omnisharptest/omnisharpUnitTests/common.test.ts rename to test/omnisharp/omnisharpUnitTests/common.test.ts index 7a669de93..9d454e1e3 100644 --- a/omnisharptest/omnisharpUnitTests/common.test.ts +++ b/test/omnisharp/omnisharpUnitTests/common.test.ts @@ -6,7 +6,7 @@ import { describe, test, expect } from '@jest/globals'; import * as path from 'path'; -import { isSubfolderOf, safeLength, sum } from '../../src/common'; +import { isSubfolderOf, safeLength, sum } from '../../../src/common'; describe('Common', () => { describe('safeLength', () => { diff --git a/omnisharptest/omnisharpUnitTests/coreclrDebug/targetArchitecture.test.ts b/test/omnisharp/omnisharpUnitTests/coreclrDebug/targetArchitecture.test.ts similarity index 96% rename from omnisharptest/omnisharpUnitTests/coreclrDebug/targetArchitecture.test.ts rename to test/omnisharp/omnisharpUnitTests/coreclrDebug/targetArchitecture.test.ts index f6c4fccbf..ad12001af 100644 --- a/omnisharptest/omnisharpUnitTests/coreclrDebug/targetArchitecture.test.ts +++ b/test/omnisharp/omnisharpUnitTests/coreclrDebug/targetArchitecture.test.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect } from '@jest/globals'; -import { getTargetArchitecture } from '../../../src/coreclrDebug/util'; -import { PlatformInformation } from '../../../src/shared/platform'; -import { DotnetInfo } from '../../../src/shared/utils/dotnetInfo'; +import { getTargetArchitecture } from '../../../../src/coreclrDebug/util'; +import { PlatformInformation } from '../../../../src/shared/platform'; +import { DotnetInfo } from '../../../../src/shared/utils/dotnetInfo'; describe('getTargetArchitecture Tests', () => { describe('Windows', () => { diff --git a/omnisharptest/omnisharpUnitTests/fakes/fakeDotnetResolver.ts b/test/omnisharp/omnisharpUnitTests/fakes/fakeDotnetResolver.ts similarity index 82% rename from omnisharptest/omnisharpUnitTests/fakes/fakeDotnetResolver.ts rename to test/omnisharp/omnisharpUnitTests/fakes/fakeDotnetResolver.ts index 16face947..d74aeb759 100644 --- a/omnisharptest/omnisharpUnitTests/fakes/fakeDotnetResolver.ts +++ b/test/omnisharp/omnisharpUnitTests/fakes/fakeDotnetResolver.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IHostExecutableResolver } from '../../../src/shared/constants/IHostExecutableResolver'; -import { HostExecutableInformation } from '../../../src/shared/constants/hostExecutableInformation'; +import { IHostExecutableResolver } from '../../../../src/shared/constants/IHostExecutableResolver'; +import { HostExecutableInformation } from '../../../../src/shared/constants/hostExecutableInformation'; export const fakeMonoInfo: HostExecutableInformation = { version: 'someDotNetVersion', diff --git a/omnisharptest/omnisharpUnitTests/fakes/fakeMonoResolver.ts b/test/omnisharp/omnisharpUnitTests/fakes/fakeMonoResolver.ts similarity index 82% rename from omnisharptest/omnisharpUnitTests/fakes/fakeMonoResolver.ts rename to test/omnisharp/omnisharpUnitTests/fakes/fakeMonoResolver.ts index 6b8be4445..97c45f410 100644 --- a/omnisharptest/omnisharpUnitTests/fakes/fakeMonoResolver.ts +++ b/test/omnisharp/omnisharpUnitTests/fakes/fakeMonoResolver.ts @@ -3,8 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { IHostExecutableResolver } from '../../../src/shared/constants/IHostExecutableResolver'; -import { HostExecutableInformation } from '../../../src/shared/constants/hostExecutableInformation'; +import { IHostExecutableResolver } from '../../../../src/shared/constants/IHostExecutableResolver'; +import { HostExecutableInformation } from '../../../../src/shared/constants/hostExecutableInformation'; export const fakeMonoInfo: HostExecutableInformation = { version: 'someMonoVersion', diff --git a/omnisharptest/omnisharpUnitTests/features/reportIssue.test.ts b/test/omnisharp/omnisharpUnitTests/features/reportIssue.test.ts similarity index 94% rename from omnisharptest/omnisharpUnitTests/features/reportIssue.test.ts rename to test/omnisharp/omnisharpUnitTests/features/reportIssue.test.ts index 13b730615..ff305b40b 100644 --- a/omnisharptest/omnisharpUnitTests/features/reportIssue.test.ts +++ b/test/omnisharp/omnisharpUnitTests/features/reportIssue.test.ts @@ -4,10 +4,10 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import reportIssue from '../../../src/shared/reportIssue'; -import { FakeMonoResolver, fakeMonoInfo } from '../../omnisharpUnitTests/fakes/fakeMonoResolver'; -import { FakeDotnetResolver } from '../../omnisharpUnitTests/fakes/fakeDotnetResolver'; -import { DotnetInfo } from '../../../src/shared/utils/dotnetInfo'; +import reportIssue from '../../../../src/shared/reportIssue'; +import { FakeMonoResolver, fakeMonoInfo } from '../fakes/fakeMonoResolver'; +import { FakeDotnetResolver } from '../fakes/fakeDotnetResolver'; +import { DotnetInfo } from '../../../../src/shared/utils/dotnetInfo'; import { jest, describe, test, expect, beforeEach } from '@jest/globals'; describe(`${reportIssue.name}`, () => { diff --git a/omnisharptest/omnisharpUnitTests/informationMessageObserver.test.ts b/test/omnisharp/omnisharpUnitTests/informationMessageObserver.test.ts similarity index 97% rename from omnisharptest/omnisharpUnitTests/informationMessageObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/informationMessageObserver.test.ts index 52ad86613..3659812a8 100644 --- a/omnisharptest/omnisharpUnitTests/informationMessageObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/informationMessageObserver.test.ts @@ -5,8 +5,8 @@ import * as vscode from 'vscode'; import { jest, describe, test, expect, beforeEach, afterEach } from '@jest/globals'; -import { InformationMessageObserver } from '../../src/observers/informationMessageObserver'; -import { getUnresolvedDependenices, getWorkspaceConfiguration } from '../../test/unitTests/fakes'; +import { InformationMessageObserver } from '../../../src/omnisharp/observers/informationMessageObserver'; +import { getUnresolvedDependenices, getWorkspaceConfiguration } from '../../fakes'; import { Subject, from as observableFrom } from 'rxjs'; import { timeout } from 'rxjs/operators'; diff --git a/omnisharptest/omnisharpUnitTests/installRuntimeDependencies.test.ts b/test/omnisharp/omnisharpUnitTests/installRuntimeDependencies.test.ts similarity index 89% rename from omnisharptest/omnisharpUnitTests/installRuntimeDependencies.test.ts rename to test/omnisharp/omnisharpUnitTests/installRuntimeDependencies.test.ts index 55409e471..e1a3b89f7 100644 --- a/omnisharptest/omnisharpUnitTests/installRuntimeDependencies.test.ts +++ b/test/omnisharp/omnisharpUnitTests/installRuntimeDependencies.test.ts @@ -4,13 +4,13 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { installRuntimeDependencies } from '../../src/installRuntimeDependencies'; -import IInstallDependencies from '../../src/packageManager/IInstallDependencies'; -import { EventStream } from '../../src/eventStream'; -import { PlatformInformation } from '../../src/shared/platform'; -import TestEventBus from '../omnisharpUnitTests/testAssets/testEventBus'; -import { AbsolutePathPackage } from '../../src/packageManager/absolutePathPackage'; -import { Package } from '../../src/packageManager/package'; +import { installRuntimeDependencies } from '../../../src/installRuntimeDependencies'; +import IInstallDependencies from '../../../src/packageManager/IInstallDependencies'; +import { EventStream } from '../../../src/eventStream'; +import { PlatformInformation } from '../../../src/shared/platform'; +import TestEventBus from './testAssets/testEventBus'; +import { AbsolutePathPackage } from '../../../src/packageManager/absolutePathPackage'; +import { Package } from '../../../src/packageManager/package'; import { isNotNull } from '../testUtil'; describe(`${installRuntimeDependencies.name}`, () => { diff --git a/omnisharptest/omnisharpUnitTests/jest.config.ts b/test/omnisharp/omnisharpUnitTests/jest.config.ts similarity index 90% rename from omnisharptest/omnisharpUnitTests/jest.config.ts rename to test/omnisharp/omnisharpUnitTests/jest.config.ts index b913f9a25..842dc5e76 100644 --- a/omnisharptest/omnisharpUnitTests/jest.config.ts +++ b/test/omnisharp/omnisharpUnitTests/jest.config.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import type { Config } from 'jest'; -import { baseProjectConfig } from '../../baseJestConfig'; +import { baseProjectConfig } from '../../../baseJestConfig'; export const jestOmniSharpUnitTestProjectName = 'OmniSharp Unit Tests'; @@ -19,7 +19,7 @@ const omnisharpConfig: Config = { // Specify jest to only run tests in jest folders. // We also have to include the __mocks__ folder. That folder must be next to node_modules so we can't move it, // but if we specify roots, jest won't automatically pick it up. So we have to specify it here. - roots: ['', '/../../__mocks__'], + roots: ['', '/../../../__mocks__'], }; export default omnisharpConfig; diff --git a/omnisharptest/omnisharpUnitTests/logging/backgroundWorkStatusBarObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/backgroundWorkStatusBarObserver.test.ts similarity index 83% rename from omnisharptest/omnisharpUnitTests/logging/backgroundWorkStatusBarObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/backgroundWorkStatusBarObserver.test.ts index a30c7c0ab..8d44d5f99 100644 --- a/omnisharptest/omnisharpUnitTests/logging/backgroundWorkStatusBarObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/backgroundWorkStatusBarObserver.test.ts @@ -4,10 +4,10 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { StatusBarItem } from '../../../src/vscodeAdapter'; -import { OmnisharpBackgroundDiagnosticStatus } from '../../../src/omnisharp/loggingEvents'; -import { BackgroundWorkStatusBarObserver } from '../../../src/observers/backgroundWorkStatusBarObserver'; -import { BackgroundDiagnosticStatus } from '../../../src/omnisharp/protocol'; +import { StatusBarItem } from '../../../../src/vscodeAdapter'; +import { OmnisharpBackgroundDiagnosticStatus } from '../../../../src/omnisharp/omnisharpLoggingEvents'; +import { BackgroundWorkStatusBarObserver } from '../../../../src/omnisharp/observers/backgroundWorkStatusBarObserver'; +import { BackgroundDiagnosticStatus } from '../../../../src/omnisharp/protocol'; describe('BackgroundWorkStatusBarObserver', () => { let showCalled: boolean; diff --git a/omnisharptest/omnisharpUnitTests/logging/dotnetChannelObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/dotnetChannelObserver.test.ts similarity index 81% rename from omnisharptest/omnisharpUnitTests/logging/dotnetChannelObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/dotnetChannelObserver.test.ts index 88b7b569d..016bbb4f4 100644 --- a/omnisharptest/omnisharpUnitTests/logging/dotnetChannelObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/dotnetChannelObserver.test.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { DotNetChannelObserver } from '../../../src/observers/dotnetChannelObserver'; -import { getNullChannel } from '../../../test/unitTests/fakes'; -import { CommandDotNetRestoreStart } from '../../../src/omnisharp/loggingEvents'; +import { DotNetChannelObserver } from '../../../../src/omnisharp/observers/dotnetChannelObserver'; +import { getNullChannel } from '../../../fakes'; +import { CommandDotNetRestoreStart } from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('DotnetChannelObserver', () => { let hasShown: boolean; diff --git a/omnisharptest/omnisharpUnitTests/logging/dotnetLoggerObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/dotnetLoggerObserver.test.ts similarity index 81% rename from omnisharptest/omnisharpUnitTests/logging/dotnetLoggerObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/dotnetLoggerObserver.test.ts index 529c9d1f1..0e5eee364 100644 --- a/omnisharptest/omnisharpUnitTests/logging/dotnetLoggerObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/dotnetLoggerObserver.test.ts @@ -4,14 +4,14 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect } from '@jest/globals'; -import { getNullChannel } from '../../../test/unitTests/fakes'; -import { DotnetLoggerObserver } from '../../../src/observers/dotnetLoggerObserver'; +import { getNullChannel } from '../../../fakes'; +import { DotnetLoggerObserver } from '../../../../src/omnisharp/observers/dotnetLoggerObserver'; +import { EventWithMessage } from '../../../../src/shared/loggingEvents'; import { + CommandDotNetRestoreFailed, CommandDotNetRestoreProgress, CommandDotNetRestoreSucceeded, - CommandDotNetRestoreFailed, - EventWithMessage, -} from '../../../src/omnisharp/loggingEvents'; +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('DotnetLoggerObserver', () => { [ diff --git a/omnisharptest/omnisharpUnitTests/logging/dotnetTestChannelObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/dotnetTestChannelObserver.test.ts similarity index 84% rename from omnisharptest/omnisharpUnitTests/logging/dotnetTestChannelObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/dotnetTestChannelObserver.test.ts index ed0a47348..cb2c57dce 100644 --- a/omnisharptest/omnisharpUnitTests/logging/dotnetTestChannelObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/dotnetTestChannelObserver.test.ts @@ -4,16 +4,16 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { getNullChannel } from '../../../test/unitTests/fakes'; +import { getNullChannel } from '../../../fakes'; +import { BaseEvent } from '../../../../src/shared/loggingEvents'; +import DotnetTestChannelObserver from '../../../../src/omnisharp/observers/dotnetTestChannelObserver'; import { - BaseEvent, - DotNetTestsInClassDebugStart, - DotNetTestRunStart, + DotNetTestDebugStart, DotNetTestRunFailure, + DotNetTestRunStart, + DotNetTestsInClassDebugStart, DotNetTestsInClassRunStart, - DotNetTestDebugStart, -} from '../../../src/omnisharp/loggingEvents'; -import DotnetTestChannelObserver from '../../../src/observers/dotnetTestChannelObserver'; +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('DotnetTestChannelObserver', () => { let hasShown: boolean; diff --git a/omnisharptest/omnisharpUnitTests/logging/dotnetTestLoggerObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/dotnetTestLoggerObserver.test.ts similarity index 94% rename from omnisharptest/omnisharpUnitTests/logging/dotnetTestLoggerObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/dotnetTestLoggerObserver.test.ts index a5b74ae40..dc01fc6bc 100644 --- a/omnisharptest/omnisharpUnitTests/logging/dotnetTestLoggerObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/dotnetTestLoggerObserver.test.ts @@ -4,24 +4,23 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { getNullChannel } from '../../../test/unitTests/fakes'; +import { getNullChannel } from '../../../fakes'; +import { EventWithMessage, BaseEvent } from '../../../../src/shared/loggingEvents'; +import DotNetTestLoggerObserver from '../../../../src/omnisharp/observers/dotnetTestLoggerObserver'; +import * as protocol from '../../../../src/omnisharp/protocol'; import { - EventWithMessage, - DotNetTestDebugWarning, - DotNetTestDebugStart, - BaseEvent, - DotNetTestRunStart, + DotNetTestDebugComplete, + DotNetTestDebugInContextStart, DotNetTestDebugProcessStart, + DotNetTestDebugStart, + DotNetTestDebugWarning, DotNetTestMessage, - DotNetTestDebugComplete, - ReportDotNetTestResults, + DotNetTestRunInContextStart, + DotNetTestRunStart, DotNetTestsInClassDebugStart, DotNetTestsInClassRunStart, - DotNetTestRunInContextStart, - DotNetTestDebugInContextStart, -} from '../../../src/omnisharp/loggingEvents'; -import DotNetTestLoggerObserver from '../../../src/observers/dotnetTestLoggerObserver'; -import * as protocol from '../../../src/omnisharp/protocol'; + ReportDotNetTestResults, +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe(`${DotNetTestLoggerObserver.name}`, () => { let appendedMessage: string; diff --git a/omnisharptest/omnisharpUnitTests/logging/errorMessageObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/errorMessageObserver.test.ts similarity index 82% rename from omnisharptest/omnisharpUnitTests/logging/errorMessageObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/errorMessageObserver.test.ts index be5566621..df72f9f02 100644 --- a/omnisharptest/omnisharpUnitTests/logging/errorMessageObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/errorMessageObserver.test.ts @@ -4,17 +4,12 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { vscode } from '../../../src/vscodeAdapter'; - -import { ErrorMessageObserver } from '../../../src/observers/errorMessageObserver'; -import { - ZipError, - DotNetTestRunFailure, - DotNetTestDebugStartFailure, - EventWithMessage, - IntegrityCheckFailure, -} from '../../../src/omnisharp/loggingEvents'; -import { getFakeVsCode } from '../../../test/unitTests/fakes'; +import { vscode } from '../../../../src/vscodeAdapter'; + +import { ErrorMessageObserver } from '../../../../src/omnisharp/observers/errorMessageObserver'; +import { ZipError, EventWithMessage, IntegrityCheckFailure } from '../../../../src/shared/loggingEvents'; +import { getFakeVsCode } from '../../../fakes'; +import { DotNetTestDebugStartFailure, DotNetTestRunFailure } from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('ErrorMessageObserver', () => { const vscode: vscode = getFakeVsCode(); diff --git a/omnisharptest/omnisharpUnitTests/logging/omnisharpChannelObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/omnisharpChannelObserver.test.ts similarity index 91% rename from omnisharptest/omnisharpUnitTests/logging/omnisharpChannelObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/omnisharpChannelObserver.test.ts index 3a88349ca..29bc6ced0 100644 --- a/omnisharptest/omnisharpUnitTests/logging/omnisharpChannelObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/omnisharpChannelObserver.test.ts @@ -5,16 +5,16 @@ import * as vscode from 'vscode'; import { jest, describe, test, expect, beforeEach } from '@jest/globals'; -import { getNullChannel, getWorkspaceConfiguration } from '../../../test/unitTests/fakes'; -import { OmnisharpChannelObserver } from '../../../src/observers/omnisharpChannelObserver'; +import { getNullChannel, getWorkspaceConfiguration } from '../../../fakes'; +import { OmnisharpChannelObserver } from '../../../../src/omnisharp/observers/omnisharpChannelObserver'; +import { BaseEvent } from '../../../../src/shared/loggingEvents'; +import { Subject } from 'rxjs'; import { OmnisharpFailure, - ShowOmniSharpChannel, - BaseEvent, OmnisharpRestart, OmnisharpServerOnStdErr, -} from '../../../src/omnisharp/loggingEvents'; -import { Subject } from 'rxjs'; + ShowOmniSharpChannel, +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('OmnisharpChannelObserver', () => { let hasShown: boolean; diff --git a/omnisharptest/omnisharpUnitTests/logging/omnisharpDebugModeLoggerObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/omnisharpDebugModeLoggerObserver.test.ts similarity index 95% rename from omnisharptest/omnisharpUnitTests/logging/omnisharpDebugModeLoggerObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/omnisharpDebugModeLoggerObserver.test.ts index c5e3fee7d..09ffa8a09 100644 --- a/omnisharptest/omnisharpUnitTests/logging/omnisharpDebugModeLoggerObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/omnisharpDebugModeLoggerObserver.test.ts @@ -3,19 +3,19 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { getNullChannel } from '../../../test/unitTests/fakes'; +import { getNullChannel } from '../../../fakes'; +import { EventWithMessage } from '../../../../src/shared/loggingEvents'; +import { OmnisharpDebugModeLoggerObserver } from '../../../../src/omnisharp/observers/omnisharpDebugModeLoggerObserver'; import { - OmnisharpServerVerboseMessage, - EventWithMessage, + OmnisharpEventPacketReceived, OmnisharpRequestMessage, - OmnisharpServerEnqueueRequest, OmnisharpServerDequeueRequest, - OmnisharpServerProcessRequestStart, - OmnisharpEventPacketReceived, + OmnisharpServerEnqueueRequest, OmnisharpServerProcessRequestComplete, + OmnisharpServerProcessRequestStart, OmnisharpServerRequestCancelled, -} from '../../../src/omnisharp/loggingEvents'; -import { OmnisharpDebugModeLoggerObserver } from '../../../src/observers/omnisharpDebugModeLoggerObserver'; + OmnisharpServerVerboseMessage, +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('OmnisharpDebugModeLoggerObserver', () => { let logOutput = ''; diff --git a/omnisharptest/omnisharpUnitTests/logging/omnisharpLoggerObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/omnisharpLoggerObserver.test.ts similarity index 96% rename from omnisharptest/omnisharpUnitTests/logging/omnisharpLoggerObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/omnisharpLoggerObserver.test.ts index 2945d9d84..48c3c4725 100644 --- a/omnisharptest/omnisharpUnitTests/logging/omnisharpLoggerObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/omnisharpLoggerObserver.test.ts @@ -2,12 +2,11 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { getNullChannel } from '../../../test/unitTests/fakes'; +import { getNullChannel } from '../../../fakes'; import { describe, test, expect, beforeEach } from '@jest/globals'; -import { OmnisharpLoggerObserver } from '../../../src/observers/omnisharpLoggerObserver'; +import { OmnisharpLoggerObserver } from '../../../../src/omnisharp/observers/omnisharpLoggerObserver'; import { OmnisharpServerMsBuildProjectDiagnostics, - EventWithMessage, OmnisharpServerOnStdErr, OmnisharpServerMessage, OmnisharpServerOnServerError, @@ -16,9 +15,10 @@ import { OmnisharpServerOnError, OmnisharpFailure, OmnisharpEventPacketReceived, -} from '../../../src/omnisharp/loggingEvents'; +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; import { OutputChannel } from 'vscode'; -import { PlatformInformation } from '../../../src/shared/platform'; +import { PlatformInformation } from '../../../../src/shared/platform'; +import { EventWithMessage } from '../../../../src/shared/loggingEvents'; describe('OmnisharpLoggerObserver', () => { let logOutput = ''; diff --git a/omnisharptest/omnisharpUnitTests/logging/omnisharpStatusBarObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/omnisharpStatusBarObserver.test.ts similarity index 94% rename from omnisharptest/omnisharpUnitTests/logging/omnisharpStatusBarObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/omnisharpStatusBarObserver.test.ts index 5db4b97cf..8bf0a4731 100644 --- a/omnisharptest/omnisharpUnitTests/logging/omnisharpStatusBarObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/omnisharpStatusBarObserver.test.ts @@ -4,21 +4,26 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { StatusBarItem } from '../../../src/vscodeAdapter'; +import { StatusBarItem } from '../../../../src/vscodeAdapter'; +import { + DownloadStart, + InstallationStart, + DownloadProgress, + BaseEvent, + InstallationSuccess, +} from '../../../../src/shared/loggingEvents'; import { OmnisharpOnBeforeServerInstall, OmnisharpOnBeforeServerStart, OmnisharpServerOnServerError, OmnisharpServerOnStart, OmnisharpServerOnStop, - DownloadStart, - InstallationStart, - DownloadProgress, OmnisharpServerOnStdErr, - BaseEvent, - InstallationSuccess, -} from '../../../src/omnisharp/loggingEvents'; -import { OmnisharpStatusBarObserver, StatusBarColors } from '../../../src/observers/omnisharpStatusBarObserver'; +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; +import { + OmnisharpStatusBarObserver, + StatusBarColors, +} from '../../../../src/omnisharp/observers/omnisharpStatusBarObserver'; describe('OmnisharpStatusBarObserver', () => { let showCalled: boolean; diff --git a/omnisharptest/omnisharpUnitTests/logging/projectStatusBarObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/projectStatusBarObserver.test.ts similarity index 88% rename from omnisharptest/omnisharpUnitTests/logging/projectStatusBarObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/projectStatusBarObserver.test.ts index b06f6070b..dd5da182b 100644 --- a/omnisharptest/omnisharpUnitTests/logging/projectStatusBarObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/projectStatusBarObserver.test.ts @@ -4,10 +4,13 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { getWorkspaceInformationUpdated, getMSBuildWorkspaceInformation } from '../../../test/unitTests/fakes'; -import { StatusBarItem } from '../../../src/vscodeAdapter'; -import { ProjectStatusBarObserver } from '../../../src/observers/projectStatusBarObserver'; -import { OmnisharpOnMultipleLaunchTargets, OmnisharpServerOnStop } from '../../../src/omnisharp/loggingEvents'; +import { getWorkspaceInformationUpdated, getMSBuildWorkspaceInformation } from '../../../fakes'; +import { StatusBarItem } from '../../../../src/vscodeAdapter'; +import { ProjectStatusBarObserver } from '../../../../src/omnisharp/observers/projectStatusBarObserver'; +import { + OmnisharpOnMultipleLaunchTargets, + OmnisharpServerOnStop, +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('ProjectStatusBarObserver', () => { let showCalled: boolean; diff --git a/omnisharptest/omnisharpUnitTests/logging/razorLoggerObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/razorLoggerObserver.test.ts similarity index 87% rename from omnisharptest/omnisharpUnitTests/logging/razorLoggerObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/razorLoggerObserver.test.ts index 842608194..9336ca79a 100644 --- a/omnisharptest/omnisharpUnitTests/logging/razorLoggerObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/razorLoggerObserver.test.ts @@ -3,13 +3,13 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { getNullChannel } from '../../../test/unitTests/fakes'; -import { RazorLoggerObserver } from '../../../src/observers/razorLoggerObserver'; +import { getNullChannel } from '../../../fakes'; +import { RazorLoggerObserver } from '../../../../src/omnisharp/observers/razorLoggerObserver'; import { RazorPluginPathSpecified, RazorPluginPathDoesNotExist, RazorDevModeActive, -} from '../../../src/omnisharp/loggingEvents'; +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; describe('RazorLoggerObserver', () => { let logOutput = ''; diff --git a/omnisharptest/omnisharpUnitTests/logging/telemetryObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/telemetryObserver.test.ts similarity index 93% rename from omnisharptest/omnisharpUnitTests/logging/telemetryObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/telemetryObserver.test.ts index f4880e56e..08cf21513 100644 --- a/omnisharptest/omnisharpUnitTests/logging/telemetryObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/telemetryObserver.test.ts @@ -4,12 +4,10 @@ *--------------------------------------------------------------------------------------------*/ import { beforeEach, test, describe, expect } from '@jest/globals'; -import { TelemetryObserver } from '../../../src/observers/telemetryObserver'; -import { PlatformInformation } from '../../../src/shared/platform'; +import { TelemetryObserver } from '../../../../src/omnisharp/observers/telemetryObserver'; +import { PlatformInformation } from '../../../../src/shared/platform'; +import { PackageInstallation, InstallationFailure, InstallationSuccess } from '../../../../src/shared/loggingEvents'; import { - PackageInstallation, - InstallationFailure, - InstallationSuccess, TestExecutionCountReport, TelemetryEventWithMeasures, OmnisharpDelayTrackerEventMeasures, @@ -17,10 +15,10 @@ import { TelemetryEvent, ProjectConfiguration, TelemetryErrorEvent, -} from '../../../src/omnisharp/loggingEvents'; -import { getNullTelemetryReporter } from '../../../test/unitTests/fakes'; -import { Package } from '../../../src/packageManager/package'; -import { PackageError } from '../../../src/packageManager/packageError'; +} from '../../../../src/omnisharp/omnisharpLoggingEvents'; +import { getNullTelemetryReporter } from '../../../fakes'; +import { Package } from '../../../../src/packageManager/package'; +import { PackageError } from '../../../../src/packageManager/packageError'; import { isNotNull } from '../../testUtil'; describe('TelemetryReporterObserver', () => { diff --git a/omnisharptest/omnisharpUnitTests/logging/warningMessageObserver.test.ts b/test/omnisharp/omnisharpUnitTests/logging/warningMessageObserver.test.ts similarity index 98% rename from omnisharptest/omnisharpUnitTests/logging/warningMessageObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/logging/warningMessageObserver.test.ts index 73e867cc4..d0e1e19a7 100644 --- a/omnisharptest/omnisharpUnitTests/logging/warningMessageObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/logging/warningMessageObserver.test.ts @@ -3,14 +3,14 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach } from '@jest/globals'; -import { WarningMessageObserver } from '../../../src/observers/warningMessageObserver'; +import { WarningMessageObserver } from '../../../../src/omnisharp/observers/warningMessageObserver'; import { getFakeVsCode, getMSBuildDiagnosticsMessage, getOmnisharpMSBuildProjectDiagnosticsEvent, getOmnisharpServerOnErrorEvent, -} from '../../../test/unitTests/fakes'; -import { vscode } from '../../../src/vscodeAdapter'; +} from '../../../fakes'; +import { vscode } from '../../../../src/vscodeAdapter'; import { TestScheduler } from 'rxjs/testing'; import { from as observableFrom, Subject } from 'rxjs'; import { timeout, map } from 'rxjs/operators'; diff --git a/omnisharptest/omnisharpUnitTests/omnisharp/omniSharpMonoResolver.test.ts b/test/omnisharp/omnisharpUnitTests/omnisharp/omniSharpMonoResolver.test.ts similarity index 93% rename from omnisharptest/omnisharpUnitTests/omnisharp/omniSharpMonoResolver.test.ts rename to test/omnisharp/omnisharpUnitTests/omnisharp/omniSharpMonoResolver.test.ts index d084153cb..af8b9c7c9 100644 --- a/omnisharptest/omnisharpUnitTests/omnisharp/omniSharpMonoResolver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/omnisharp/omniSharpMonoResolver.test.ts @@ -5,10 +5,10 @@ import * as vscode from 'vscode'; import { describe, test, expect, beforeEach, jest } from '@jest/globals'; -import { OmniSharpMonoResolver } from '../../../src/omnisharp/omniSharpMonoResolver'; +import { OmniSharpMonoResolver } from '../../../../src/omnisharp/omniSharpMonoResolver'; import { join } from 'path'; -import { getWorkspaceConfiguration } from '../../../test/unitTests/fakes'; +import { getWorkspaceConfiguration } from '../../../fakes'; describe(`${OmniSharpMonoResolver.name}`, () => { let getMonoCalled: boolean; diff --git a/omnisharptest/omnisharpUnitTests/omnisharpDownloader.test.ts b/test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts similarity index 84% rename from omnisharptest/omnisharpUnitTests/omnisharpDownloader.test.ts rename to test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts index 6cb120494..bdfb65f6e 100644 --- a/omnisharptest/omnisharpUnitTests/omnisharpDownloader.test.ts +++ b/test/omnisharp/omnisharpUnitTests/omnisharpDownloader.test.ts @@ -4,16 +4,16 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach, afterEach } from '@jest/globals'; -import { OmnisharpDownloader } from '../../src/omnisharp/omnisharpDownloader'; -import NetworkSettings from '../../src/networkSettings'; -import { EventStream } from '../../src/eventStream'; -import { PlatformInformation } from '../../src/shared/platform'; -import { CreateTmpDir, TmpAsset } from '../../src/createTmpAsset'; -import * as util from '../../src/common'; +import { OmnisharpDownloader } from '../../../src/omnisharp/omnisharpDownloader'; +import NetworkSettings from '../../../src/networkSettings'; +import { EventStream } from '../../../src/eventStream'; +import { PlatformInformation } from '../../../src/shared/platform'; +import { CreateTmpDir, TmpAsset } from '../../../src/createTmpAsset'; +import * as util from '../../../src/common'; import * as path from 'path'; -import MockHttpsServer from '../omnisharpUnitTests/testAssets/mockHttpsServer'; -import TestZip from '../omnisharpUnitTests/testAssets/testZip'; -import { createTestFile } from '../omnisharpUnitTests/testAssets/testFile'; +import MockHttpsServer from './testAssets/mockHttpsServer'; +import TestZip from './testAssets/testZip'; +import { createTestFile } from './testAssets/testFile'; import { PackageInstallation, LogPlatformInfo, @@ -24,10 +24,10 @@ import { InstallationStart, InstallationSuccess, PackageInstallStart, -} from '../../src/omnisharp/loggingEvents'; -import TestEventBus from '../omnisharpUnitTests/testAssets/testEventBus'; -import { testPackageJSON } from '../omnisharpUnitTests/testAssets/testAssets'; -import { modernNetVersion } from '../../src/omnisharp/omnisharpPackageCreator'; +} from '../../../src/shared/loggingEvents'; +import TestEventBus from './testAssets/testEventBus'; +import { testPackageJSON } from './testAssets/testAssets'; +import { modernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator'; [true, false].forEach((useFramework) => { describe(`OmnisharpDownloader (useFramework: ${useFramework})`, () => { diff --git a/omnisharptest/omnisharpUnitTests/omnisharpManager.test.ts b/test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts similarity index 91% rename from omnisharptest/omnisharpUnitTests/omnisharpManager.test.ts rename to test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts index 93226e665..f4edaf802 100644 --- a/omnisharptest/omnisharpUnitTests/omnisharpManager.test.ts +++ b/test/omnisharp/omnisharpUnitTests/omnisharpManager.test.ts @@ -4,19 +4,19 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach, afterEach } from '@jest/globals'; -import { OmnisharpManager } from '../../src/omnisharp/omnisharpManager'; -import MockHttpsServer from '../omnisharpUnitTests/testAssets/mockHttpsServer'; -import TestZip from '../omnisharpUnitTests/testAssets/testZip'; -import { createTestFile } from '../omnisharpUnitTests/testAssets/testFile'; -import { PlatformInformation } from '../../src/shared/platform'; -import { OmnisharpDownloader } from '../../src/omnisharp/omnisharpDownloader'; -import NetworkSettings from '../../src/networkSettings'; -import { EventStream } from '../../src/eventStream'; -import { testPackageJSON } from '../omnisharpUnitTests/testAssets/testAssets'; -import { TmpAsset, CreateTmpDir, CreateTmpFile } from '../../src/createTmpAsset'; +import { OmnisharpManager } from '../../../src/omnisharp/omnisharpManager'; +import MockHttpsServer from './testAssets/mockHttpsServer'; +import TestZip from './testAssets/testZip'; +import { createTestFile } from './testAssets/testFile'; +import { PlatformInformation } from '../../../src/shared/platform'; +import { OmnisharpDownloader } from '../../../src/omnisharp/omnisharpDownloader'; +import NetworkSettings from '../../../src/networkSettings'; +import { EventStream } from '../../../src/eventStream'; +import { testPackageJSON } from './testAssets/testAssets'; +import { TmpAsset, CreateTmpDir, CreateTmpFile } from '../../../src/createTmpAsset'; import * as path from 'path'; -import * as util from '../../src/common'; -import { modernNetVersion } from '../../src/omnisharp/omnisharpPackageCreator'; +import * as util from '../../../src/common'; +import { modernNetVersion } from '../../../src/omnisharp/omnisharpPackageCreator'; describe(OmnisharpManager.name, () => { let server: MockHttpsServer; diff --git a/omnisharptest/omnisharpUnitTests/omnisharpPackageCreator.test.ts b/test/omnisharp/omnisharpUnitTests/omnisharpPackageCreator.test.ts similarity index 98% rename from omnisharptest/omnisharpUnitTests/omnisharpPackageCreator.test.ts rename to test/omnisharp/omnisharpUnitTests/omnisharpPackageCreator.test.ts index acfd63bc5..68425752c 100644 --- a/omnisharptest/omnisharpUnitTests/omnisharpPackageCreator.test.ts +++ b/test/omnisharp/omnisharpUnitTests/omnisharpPackageCreator.test.ts @@ -8,9 +8,9 @@ import { SetBinaryAndGetPackage, GetPackagesFromVersion, modernNetVersion, -} from '../../src/omnisharp/omnisharpPackageCreator'; -import { Package } from '../../src/packageManager/package'; -import { testPackageJSON } from '../omnisharpUnitTests/testAssets/testAssets'; +} from '../../../src/omnisharp/omnisharpPackageCreator'; +import { Package } from '../../../src/packageManager/package'; +import { testPackageJSON } from './testAssets/testAssets'; import { isNotNull } from '../testUtil'; describe('GetOmnisharpPackage : Output package depends on the input package and other input parameters like serverUrl', () => { diff --git a/omnisharptest/omnisharpUnitTests/optionChangeObserver.test.ts b/test/omnisharp/omnisharpUnitTests/optionChangeObserver.test.ts similarity index 97% rename from omnisharptest/omnisharpUnitTests/optionChangeObserver.test.ts rename to test/omnisharp/omnisharpUnitTests/optionChangeObserver.test.ts index f24983699..de1b4c1b7 100644 --- a/omnisharptest/omnisharpUnitTests/optionChangeObserver.test.ts +++ b/test/omnisharp/omnisharpUnitTests/optionChangeObserver.test.ts @@ -5,11 +5,11 @@ import { timeout } from 'rxjs/operators'; import { from as observableFrom, Subject, BehaviorSubject } from 'rxjs'; -import { registerOmnisharpOptionChanges } from '../../src/omnisharp/omnisharpOptionChanges'; +import { registerOmnisharpOptionChanges } from '../../../src/omnisharp/omnisharpOptionChanges'; import { describe, beforeEach, test, expect } from '@jest/globals'; import * as vscode from 'vscode'; -import { getVSCodeWithConfig, updateConfig } from '../../test/unitTests/fakes'; +import { getVSCodeWithConfig, updateConfig } from '../../fakes'; describe('OmniSharpConfigChangeObserver', () => { let doClickOk: () => void; diff --git a/omnisharptest/omnisharpUnitTests/optionStream.test.ts b/test/omnisharp/omnisharpUnitTests/optionStream.test.ts similarity index 93% rename from omnisharptest/omnisharpUnitTests/optionStream.test.ts rename to test/omnisharp/omnisharpUnitTests/optionStream.test.ts index 21923dbe7..6817977ef 100644 --- a/omnisharptest/omnisharpUnitTests/optionStream.test.ts +++ b/test/omnisharp/omnisharpUnitTests/optionStream.test.ts @@ -6,8 +6,8 @@ import * as vscode from 'vscode'; import { jest, describe, test, expect, beforeEach } from '@jest/globals'; import { Observable } from 'rxjs'; -import createOptionStream from '../../src/shared/observables/createOptionStream'; -import Disposable from '../../src/disposable'; +import createOptionStream from '../../../src/shared/observables/createOptionStream'; +import Disposable from '../../../src/disposable'; describe('OptionStream', () => { let listenerFunction: Array<(e: vscode.ConfigurationChangeEvent) => any>; diff --git a/omnisharptest/omnisharpUnitTests/options.test.ts b/test/omnisharp/omnisharpUnitTests/options.test.ts similarity index 97% rename from omnisharptest/omnisharpUnitTests/options.test.ts rename to test/omnisharp/omnisharpUnitTests/options.test.ts index 203168696..a07b9c099 100644 --- a/omnisharptest/omnisharpUnitTests/options.test.ts +++ b/test/omnisharp/omnisharpUnitTests/options.test.ts @@ -7,8 +7,8 @@ import * as vscode from 'vscode'; import { jest, describe, test, expect, beforeEach } from '@jest/globals'; import { URI } from 'vscode-uri'; import * as path from 'path'; -import { commonOptions, omnisharpOptions } from '../../src/shared/options'; -import { getWorkspaceConfiguration } from '../../test/unitTests/fakes'; +import { commonOptions, omnisharpOptions } from '../../../src/shared/options'; +import { getWorkspaceConfiguration } from '../../fakes'; describe('Options tests', () => { beforeEach(() => { diff --git a/omnisharptest/omnisharpUnitTests/packages/downloadAndInstallPackages.test.ts b/test/omnisharp/omnisharpUnitTests/packages/downloadAndInstallPackages.test.ts similarity index 90% rename from omnisharptest/omnisharpUnitTests/packages/downloadAndInstallPackages.test.ts rename to test/omnisharp/omnisharpUnitTests/packages/downloadAndInstallPackages.test.ts index 6468a0f6e..b71736036 100644 --- a/omnisharptest/omnisharpUnitTests/packages/downloadAndInstallPackages.test.ts +++ b/test/omnisharp/omnisharpUnitTests/packages/downloadAndInstallPackages.test.ts @@ -5,12 +5,12 @@ import { describe, test, expect, beforeEach, afterEach } from '@jest/globals'; import * as path from 'path'; -import * as util from '../../../src/common'; -import { CreateTmpDir, TmpAsset } from '../../../src/createTmpAsset'; -import TestZip from '../../omnisharpUnitTests/testAssets/testZip'; -import { downloadAndInstallPackages } from '../../../src/packageManager/downloadAndInstallPackages'; -import NetworkSettings from '../../../src/networkSettings'; -import { EventStream } from '../../../src/eventStream'; +import * as util from '../../../../src/common'; +import { CreateTmpDir, TmpAsset } from '../../../../src/createTmpAsset'; +import TestZip from '../testAssets/testZip'; +import { downloadAndInstallPackages } from '../../../../src/packageManager/downloadAndInstallPackages'; +import NetworkSettings from '../../../../src/networkSettings'; +import { EventStream } from '../../../../src/eventStream'; import { DownloadStart, DownloadSizeObtained, @@ -21,13 +21,13 @@ import { IntegrityCheckFailure, DownloadFailure, InstallationFailure, -} from '../../../src/omnisharp/loggingEvents'; -import MockHttpsServer from '../../omnisharpUnitTests/testAssets/mockHttpsServer'; -import { createTestFile } from '../../omnisharpUnitTests/testAssets/testFile'; -import TestEventBus from '../../omnisharpUnitTests/testAssets/testEventBus'; -import { AbsolutePathPackage } from '../../../src/packageManager/absolutePathPackage'; -import { AbsolutePath } from '../../../src/packageManager/absolutePath'; -import { DownloadValidator } from '../../../src/packageManager/isValidDownload'; +} from '../../../../src/shared/loggingEvents'; +import MockHttpsServer from '../testAssets/mockHttpsServer'; +import { createTestFile } from '../testAssets/testFile'; +import TestEventBus from '../testAssets/testEventBus'; +import { AbsolutePathPackage } from '../../../../src/packageManager/absolutePathPackage'; +import { AbsolutePath } from '../../../../src/packageManager/absolutePath'; +import { DownloadValidator } from '../../../../src/packageManager/isValidDownload'; describe(`${downloadAndInstallPackages.name}`, () => { let tmpInstallDir: TmpAsset; diff --git a/omnisharptest/omnisharpUnitTests/packages/fileDownloader.test.ts b/test/omnisharp/omnisharpUnitTests/packages/fileDownloader.test.ts similarity index 93% rename from omnisharptest/omnisharpUnitTests/packages/fileDownloader.test.ts rename to test/omnisharp/omnisharpUnitTests/packages/fileDownloader.test.ts index 852f1c0a1..73719d77e 100644 --- a/omnisharptest/omnisharpUnitTests/packages/fileDownloader.test.ts +++ b/test/omnisharp/omnisharpUnitTests/packages/fileDownloader.test.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach, afterEach } from '@jest/globals'; -import { EventStream } from '../../../src/eventStream'; -import { DownloadFile } from '../../../src/packageManager/fileDownloader'; -import NetworkSettings from '../../../src/networkSettings'; +import { EventStream } from '../../../../src/eventStream'; +import { DownloadFile } from '../../../../src/packageManager/fileDownloader'; +import NetworkSettings from '../../../../src/networkSettings'; import { DownloadStart, DownloadSizeObtained, @@ -14,9 +14,9 @@ import { DownloadSuccess, DownloadFallBack, DownloadFailure, -} from '../../../src/omnisharp/loggingEvents'; -import MockHttpsServer from '../../omnisharpUnitTests/testAssets/mockHttpsServer'; -import TestEventBus from '../../omnisharpUnitTests/testAssets/testEventBus'; +} from '../../../../src/shared/loggingEvents'; +import MockHttpsServer from '../testAssets/mockHttpsServer'; +import TestEventBus from '../testAssets/testEventBus'; describe('FileDownloader', () => { const fileDescription = 'Test file'; diff --git a/omnisharptest/omnisharpUnitTests/packages/isValidDownload.test.ts b/test/omnisharp/omnisharpUnitTests/packages/isValidDownload.test.ts similarity index 89% rename from omnisharptest/omnisharpUnitTests/packages/isValidDownload.test.ts rename to test/omnisharp/omnisharpUnitTests/packages/isValidDownload.test.ts index 21430cf2c..c53f7f192 100644 --- a/omnisharptest/omnisharpUnitTests/packages/isValidDownload.test.ts +++ b/test/omnisharp/omnisharpUnitTests/packages/isValidDownload.test.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect } from '@jest/globals'; -import { isValidDownload } from '../../../src/packageManager/isValidDownload'; -import { EventStream } from '../../../src/eventStream'; +import { isValidDownload } from '../../../../src/packageManager/isValidDownload'; +import { EventStream } from '../../../../src/eventStream'; describe(`${isValidDownload.name}`, () => { const sampleBuffer = Buffer.from('sampleBuffer'); diff --git a/omnisharptest/omnisharpUnitTests/packages/packageFilterer.test.ts b/test/omnisharp/omnisharpUnitTests/packages/packageFilterer.test.ts similarity index 92% rename from omnisharptest/omnisharpUnitTests/packages/packageFilterer.test.ts rename to test/omnisharp/omnisharpUnitTests/packages/packageFilterer.test.ts index a65405ce9..85423fd52 100644 --- a/omnisharptest/omnisharpUnitTests/packages/packageFilterer.test.ts +++ b/test/omnisharp/omnisharpUnitTests/packages/packageFilterer.test.ts @@ -3,10 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { describe, test, expect, beforeEach, jest } from '@jest/globals'; -import { PlatformInformation } from '../../../src/shared/platform'; -import { getNotInstalledPackagesForPlatform } from '../../../src/packageManager/packageFilterer'; -import { Package } from '../../../src/packageManager/package'; -import { AbsolutePathPackage } from '../../../src/packageManager/absolutePathPackage'; +import { PlatformInformation } from '../../../../src/shared/platform'; +import { getNotInstalledPackagesForPlatform } from '../../../../src/packageManager/packageFilterer'; +import { Package } from '../../../../src/packageManager/package'; +import { AbsolutePathPackage } from '../../../../src/packageManager/absolutePathPackage'; import { MockedFunction } from 'jest-mock'; import * as fs from 'fs'; import { join } from 'path'; diff --git a/omnisharptest/omnisharpUnitTests/packages/zipInstaller.test.ts b/test/omnisharp/omnisharpUnitTests/packages/zipInstaller.test.ts similarity index 86% rename from omnisharptest/omnisharpUnitTests/packages/zipInstaller.test.ts rename to test/omnisharp/omnisharpUnitTests/packages/zipInstaller.test.ts index 66be19b33..b963342fa 100644 --- a/omnisharptest/omnisharpUnitTests/packages/zipInstaller.test.ts +++ b/test/omnisharp/omnisharpUnitTests/packages/zipInstaller.test.ts @@ -6,16 +6,16 @@ import { describe, test, expect, beforeEach, afterEach } from '@jest/globals'; import * as fs from 'async-file'; import * as path from 'path'; -import * as util from '../../../src/common'; -import { CreateTmpDir, TmpAsset } from '../../../src/createTmpAsset'; -import { InstallZip } from '../../../src/packageManager/zipInstaller'; -import { EventStream } from '../../../src/eventStream'; -import { PlatformInformation } from '../../../src/shared/platform'; -import { BaseEvent, InstallationStart, ZipError } from '../../../src/omnisharp/loggingEvents'; -import { createTestFile } from '../../omnisharpUnitTests/testAssets/testFile'; -import TestZip from '../../omnisharpUnitTests/testAssets/testZip'; -import TestEventBus from '../../omnisharpUnitTests/testAssets/testEventBus'; -import { AbsolutePath } from '../../../src/packageManager/absolutePath'; +import * as util from '../../../../src/common'; +import { CreateTmpDir, TmpAsset } from '../../../../src/createTmpAsset'; +import { InstallZip } from '../../../../src/packageManager/zipInstaller'; +import { EventStream } from '../../../../src/eventStream'; +import { PlatformInformation } from '../../../../src/shared/platform'; +import { BaseEvent, InstallationStart, ZipError } from '../../../../src/shared/loggingEvents'; +import { createTestFile } from '../testAssets/testFile'; +import TestZip from '../testAssets/testZip'; +import TestEventBus from '../testAssets/testEventBus'; +import { AbsolutePath } from '../../../../src/packageManager/absolutePath'; describe('ZipInstaller', () => { const binaries = [createTestFile('binary1', 'binary1.txt'), createTestFile('binary2', 'binary2.txt')]; diff --git a/omnisharptest/omnisharpUnitTests/platform.test.ts b/test/omnisharp/omnisharpUnitTests/platform.test.ts similarity index 98% rename from omnisharptest/omnisharpUnitTests/platform.test.ts rename to test/omnisharp/omnisharpUnitTests/platform.test.ts index ed0385192..4d332c22d 100644 --- a/omnisharptest/omnisharpUnitTests/platform.test.ts +++ b/test/omnisharp/omnisharpUnitTests/platform.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect } from '@jest/globals'; -import { LinuxDistribution } from '../../src/shared/platform'; +import { LinuxDistribution } from '../../../src/shared/platform'; describe('Platform', () => { test('Retrieve correct information for Ubuntu 14.04', () => { diff --git a/omnisharptest/omnisharpUnitTests/processPicker.test.ts b/test/omnisharp/omnisharpUnitTests/processPicker.test.ts similarity index 99% rename from omnisharptest/omnisharpUnitTests/processPicker.test.ts rename to test/omnisharp/omnisharpUnitTests/processPicker.test.ts index dfde38bac..1f9f7f238 100644 --- a/omnisharptest/omnisharpUnitTests/processPicker.test.ts +++ b/test/omnisharp/omnisharpUnitTests/processPicker.test.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { describe, test, expect } from '@jest/globals'; -import { RemoteAttachPicker, Process, CimProcessParser } from '../../src/features/processPicker'; +import { RemoteAttachPicker, Process, CimProcessParser } from '../../../src/shared/processPicker'; describe('Remote Process Picker: Validate quoting arguments.', () => { test('Argument with no spaces', () => { diff --git a/omnisharptest/omnisharpUnitTests/testAssets/getConfigChangeEvent.ts b/test/omnisharp/omnisharpUnitTests/testAssets/getConfigChangeEvent.ts similarity index 88% rename from omnisharptest/omnisharpUnitTests/testAssets/getConfigChangeEvent.ts rename to test/omnisharp/omnisharpUnitTests/testAssets/getConfigChangeEvent.ts index 1086caf96..47a8db2c8 100644 --- a/omnisharptest/omnisharpUnitTests/testAssets/getConfigChangeEvent.ts +++ b/test/omnisharp/omnisharpUnitTests/testAssets/getConfigChangeEvent.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ConfigurationChangeEvent } from '../../../src/vscodeAdapter'; +import { ConfigurationChangeEvent } from '../../../../src/vscodeAdapter'; export function GetConfigChangeEvent(changingConfig: string): ConfigurationChangeEvent { return { diff --git a/omnisharptest/omnisharpUnitTests/testAssets/mockHttpsServer.ts b/test/omnisharp/omnisharpUnitTests/testAssets/mockHttpsServer.ts similarity index 89% rename from omnisharptest/omnisharpUnitTests/testAssets/mockHttpsServer.ts rename to test/omnisharp/omnisharpUnitTests/testAssets/mockHttpsServer.ts index e2dd76bf0..cea2c21fe 100644 --- a/omnisharptest/omnisharpUnitTests/testAssets/mockHttpsServer.ts +++ b/test/omnisharp/omnisharpUnitTests/testAssets/mockHttpsServer.ts @@ -44,8 +44,8 @@ export default class MockHttpsServer { const server = new ServerMock(null, { host: 'localhost', port: port, - key: await fs.readFile('omnisharptest/omnisharpUnitTests/testAssets/private.pem'), - cert: await fs.readFile('omnisharptest/omnisharpUnitTests/testAssets/public.pem'), + key: await fs.readFile('test/omnisharp/omnisharpUnitTests/testAssets/private.pem'), + cert: await fs.readFile('test/omnisharp/omnisharpUnitTests/testAssets/public.pem'), }); return new MockHttpsServer(server, `https://localhost:${port}`); diff --git a/omnisharptest/omnisharpUnitTests/testAssets/private.pem b/test/omnisharp/omnisharpUnitTests/testAssets/private.pem similarity index 100% rename from omnisharptest/omnisharpUnitTests/testAssets/private.pem rename to test/omnisharp/omnisharpUnitTests/testAssets/private.pem diff --git a/omnisharptest/omnisharpUnitTests/testAssets/public.pem b/test/omnisharp/omnisharpUnitTests/testAssets/public.pem similarity index 100% rename from omnisharptest/omnisharpUnitTests/testAssets/public.pem rename to test/omnisharp/omnisharpUnitTests/testAssets/public.pem diff --git a/omnisharptest/omnisharpUnitTests/testAssets/testAssets.ts b/test/omnisharp/omnisharpUnitTests/testAssets/testAssets.ts similarity index 100% rename from omnisharptest/omnisharpUnitTests/testAssets/testAssets.ts rename to test/omnisharp/omnisharpUnitTests/testAssets/testAssets.ts diff --git a/omnisharptest/omnisharpUnitTests/testAssets/testEventBus.ts b/test/omnisharp/omnisharpUnitTests/testAssets/testEventBus.ts similarity index 80% rename from omnisharptest/omnisharpUnitTests/testAssets/testEventBus.ts rename to test/omnisharp/omnisharpUnitTests/testAssets/testEventBus.ts index 25b7b44ff..5370d02e0 100644 --- a/omnisharptest/omnisharpUnitTests/testAssets/testEventBus.ts +++ b/test/omnisharp/omnisharpUnitTests/testAssets/testEventBus.ts @@ -3,9 +3,9 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { EventStream } from '../../../src/eventStream'; -import { BaseEvent } from '../../../src/omnisharp/loggingEvents'; -import Disposable, { IDisposable } from '../../../src/disposable'; +import { EventStream } from '../../../../src/eventStream'; +import { BaseEvent } from '../../../../src/shared/loggingEvents'; +import Disposable, { IDisposable } from '../../../../src/disposable'; export default class TestEventBus { private eventBus: Array; diff --git a/omnisharptest/omnisharpUnitTests/testAssets/testFile.ts b/test/omnisharp/omnisharpUnitTests/testAssets/testFile.ts similarity index 100% rename from omnisharptest/omnisharpUnitTests/testAssets/testFile.ts rename to test/omnisharp/omnisharpUnitTests/testAssets/testFile.ts diff --git a/omnisharptest/omnisharpUnitTests/testAssets/testZip.ts b/test/omnisharp/omnisharpUnitTests/testAssets/testZip.ts similarity index 100% rename from omnisharptest/omnisharpUnitTests/testAssets/testZip.ts rename to test/omnisharp/omnisharpUnitTests/testAssets/testZip.ts diff --git a/omnisharptest/runFeatureTests.ts b/test/omnisharp/runFeatureTests.ts similarity index 100% rename from omnisharptest/runFeatureTests.ts rename to test/omnisharp/runFeatureTests.ts diff --git a/omnisharptest/testUtil.ts b/test/omnisharp/testUtil.ts similarity index 100% rename from omnisharptest/testUtil.ts rename to test/omnisharp/testUtil.ts diff --git a/test/razorIntegrationTests/formatting.integration.test.ts b/test/razor/razorIntegrationTests/formatting.integration.test.ts similarity index 97% rename from test/razorIntegrationTests/formatting.integration.test.ts rename to test/razor/razorIntegrationTests/formatting.integration.test.ts index 1407c2fc6..bb59c8e8c 100644 --- a/test/razorIntegrationTests/formatting.integration.test.ts +++ b/test/razor/razorIntegrationTests/formatting.integration.test.ts @@ -7,7 +7,7 @@ import * as path from 'path'; import * as vscode from 'vscode'; import { describe, beforeAll, afterAll, test, expect, beforeEach } from '@jest/globals'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; -import * as integrationHelpers from '../integrationTests/integrationHelpers'; +import * as integrationHelpers from '../../lsptoolshost/integrationTests/integrationHelpers'; describe(`Razor Formatting ${testAssetWorkspace.description}`, function () { beforeAll(async function () { diff --git a/test/razorIntegrationTests/hover.integration.test.ts b/test/razor/razorIntegrationTests/hover.integration.test.ts similarity index 95% rename from test/razorIntegrationTests/hover.integration.test.ts rename to test/razor/razorIntegrationTests/hover.integration.test.ts index 50ca0d712..5564ab466 100644 --- a/test/razorIntegrationTests/hover.integration.test.ts +++ b/test/razor/razorIntegrationTests/hover.integration.test.ts @@ -7,7 +7,7 @@ import * as path from 'path'; import * as vscode from 'vscode'; import { describe, beforeAll, afterAll, test, expect, beforeEach } from '@jest/globals'; import testAssetWorkspace from './testAssets/testAssetWorkspace'; -import * as integrationHelpers from '../integrationTests/integrationHelpers'; +import * as integrationHelpers from '../../lsptoolshost/integrationTests/integrationHelpers'; describe(`Razor Hover ${testAssetWorkspace.description}`, function () { beforeAll(async function () { diff --git a/omnisharptest/omnisharpIntegrationTests/index.ts b/test/razor/razorIntegrationTests/index.ts similarity index 88% rename from omnisharptest/omnisharpIntegrationTests/index.ts rename to test/razor/razorIntegrationTests/index.ts index e3473f5f9..ac2e6a90a 100644 --- a/omnisharptest/omnisharpIntegrationTests/index.ts +++ b/test/razor/razorIntegrationTests/index.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { runIntegrationTests } from '../../test/runIntegrationTests'; +import { runIntegrationTests } from '../../runIntegrationTests'; import { jestIntegrationTestProjectName } from './jest.config'; export async function run() { diff --git a/test/razorIntegrationTests/jest.config.ts b/test/razor/razorIntegrationTests/jest.config.ts similarity index 75% rename from test/razorIntegrationTests/jest.config.ts rename to test/razor/razorIntegrationTests/jest.config.ts index 7157e8c75..fd5bec1dc 100644 --- a/test/razorIntegrationTests/jest.config.ts +++ b/test/razor/razorIntegrationTests/jest.config.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import type { Config } from 'jest'; -import { baseProjectConfig } from '../../baseJestConfig'; +import { baseProjectConfig } from '../../../baseJestConfig'; export const jestIntegrationTestProjectName = 'Razor Integration Tests'; @@ -14,8 +14,8 @@ const integrationTestConfig: Config = { ...baseProjectConfig, displayName: jestIntegrationTestProjectName, roots: [''], - testEnvironment: '/../integrationTests/jestSetup/vsCodeEnvironment.ts', - setupFilesAfterEnv: ['/../integrationTests/jestSetup/vsCodeFramework.ts'], + testEnvironment: '/../../vsCodeEnvironment.ts', + setupFilesAfterEnv: ['/../../vsCodeFramework.ts'], }; export default integrationTestConfig; diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/lsp_tools_host_BasicRazorApp2_1.code-workspace b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/lsp_tools_host_BasicRazorApp2_1.code-workspace similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/lsp_tools_host_BasicRazorApp2_1.code-workspace rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/.vscode/lsp_tools_host_BasicRazorApp2_1.code-workspace diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.csproj diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.sln b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.sln similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.sln rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/BasicRazorApp2_1.sln diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/BadlyFormatted.razor b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/BadlyFormatted.razor similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/BadlyFormatted.razor rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/BadlyFormatted.razor diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/ErrorHaver.razor diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Pages/Index.cshtml diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/Program.cs diff --git a/test/razorIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml b/test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml similarity index 100% rename from test/razorIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml rename to test/razor/razorIntegrationTests/testAssets/BasicRazorApp2_1/_ViewImports.cshtml diff --git a/test/razorIntegrationTests/testAssets/NuGet.config b/test/razor/razorIntegrationTests/testAssets/NuGet.config similarity index 100% rename from test/razorIntegrationTests/testAssets/NuGet.config rename to test/razor/razorIntegrationTests/testAssets/NuGet.config diff --git a/test/razorIntegrationTests/testAssets/basicRazorApp21.ts b/test/razor/razorIntegrationTests/testAssets/basicRazorApp21.ts similarity index 84% rename from test/razorIntegrationTests/testAssets/basicRazorApp21.ts rename to test/razor/razorIntegrationTests/testAssets/basicRazorApp21.ts index 51d51301d..8d6eff9a1 100644 --- a/test/razorIntegrationTests/testAssets/basicRazorApp21.ts +++ b/test/razor/razorIntegrationTests/testAssets/basicRazorApp21.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { ITestAssetWorkspace } from '../../integrationTests/testAssets/testAssets'; +import { ITestAssetWorkspace } from '../../../lsptoolshost/integrationTests/testAssets/testAssets'; const workspace: ITestAssetWorkspace = { description: 'Basic Razor app', diff --git a/test/razorIntegrationTests/testAssets/testAssetWorkspace.ts b/test/razor/razorIntegrationTests/testAssets/testAssetWorkspace.ts similarity index 86% rename from test/razorIntegrationTests/testAssets/testAssetWorkspace.ts rename to test/razor/razorIntegrationTests/testAssets/testAssetWorkspace.ts index c193e4468..6e1692c01 100644 --- a/test/razorIntegrationTests/testAssets/testAssetWorkspace.ts +++ b/test/razor/razorIntegrationTests/testAssets/testAssetWorkspace.ts @@ -7,7 +7,7 @@ import * as path from 'path'; import * as vscode from 'vscode'; import BasicRazorApp2_1 from './basicRazorApp21'; -import { ITestAssetWorkspace, TestAssetWorkspace } from '../../integrationTests/testAssets/testAssets'; +import { ITestAssetWorkspace, TestAssetWorkspace } from '../../../lsptoolshost/integrationTests/testAssets/testAssets'; const testAssetWorkspaces: { [x: string]: ITestAssetWorkspace } = { BasicRazorApp2_1, diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/README.md diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/JavaScript.tmLanguage.json b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/JavaScript.tmLanguage.json similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/JavaScript.tmLanguage.json rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/JavaScript.tmLanguage.json diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/UpdateTextMate.ps1 b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/UpdateTextMate.ps1 similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/UpdateTextMate.ps1 rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/UpdateTextMate.ps1 diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/csharp.tmLanguage.json b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/csharp.tmLanguage.json similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/csharp.tmLanguage.json rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/csharp.tmLanguage.json diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/css.tmLanguage.json b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/css.tmLanguage.json similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/css.tmLanguage.json rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/css.tmLanguage.json diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/__snapshots__/grammarTests.test.ts.snap diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/addTagHelperDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/addTagHelperDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/addTagHelperDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/addTagHelperDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/attributeDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/attributeDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/attributeDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/attributeDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeBlock.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeBlock.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeBlock.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeBlock.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/codeDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/doStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/doStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/doStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/doStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/elsePart.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/elsePart.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/elsePart.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/elsePart.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressionInAttribute.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressionInAttribute.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressionInAttribute.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressionInAttribute.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressions.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressions.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressions.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/explicitExpressions.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/forStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/forStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/forStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/forStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/foreachStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/foreachStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/foreachStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/foreachStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/functionsDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/functionsDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/functionsDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/functionsDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/grammarTests.test.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/grammarTests.test.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/grammarTests.test.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/grammarTests.test.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/htmlDynamicAttribute.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/ifStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/ifStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/ifStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/ifStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implementsDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implementsDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implementsDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implementsDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressionInAttribute.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressionInAttribute.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressionInAttribute.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressionInAttribute.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressions.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressions.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressions.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/implicitExpressions.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/ITokenizedContent.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/ITokenizedContent.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/ITokenizedContent.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/ITokenizedContent.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/snapshotFactory.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/snapshotFactory.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/snapshotFactory.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/snapshotFactory.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/testUtilities.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/testUtilities.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/testUtilities.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/testUtilities.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/tokenizedContentProvider.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/tokenizedContentProvider.ts similarity index 86% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/tokenizedContentProvider.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/tokenizedContentProvider.ts index 61fe9432c..c04117bcb 100644 --- a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/tokenizedContentProvider.ts +++ b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/infrastructure/tokenizedContentProvider.ts @@ -12,7 +12,7 @@ import { ITokenizedContent } from './ITokenizedContent'; let razorGrammarCache: IGrammar | undefined; const wasmBin = fs.readFileSync( - path.join(__dirname, '../../../../../node_modules/vscode-oniguruma/release/onig.wasm') + path.join(__dirname, '../../../../../../node_modules/vscode-oniguruma/release/onig.wasm') ).buffer; const vscodeOnigurumaLib = oniguruma.loadWASM(wasmBin).then(() => { return { @@ -80,16 +80,16 @@ async function loadRawGrammar(filePath: string) { async function getScopeToFilePathRegistry() { const razorRawGrammar = await loadRawGrammar('src/razor/syntaxes/aspnetcorerazor.tmLanguage.json'); const htmlRawGrammar = await loadRawGrammar( - 'test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json' + 'test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/html.tmLanguage.json' ); const cssRawGrammar = await loadRawGrammar( - 'test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/css.tmLanguage.json' + 'test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/css.tmLanguage.json' ); const javaScriptRawGrammar = await loadRawGrammar( - 'test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/JavaScript.tmLanguage.json' + 'test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/JavaScript.tmLanguage.json' ); const csharpRawGrammar = await loadRawGrammar( - 'test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/csharp.tmLanguage.json' + 'test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/embeddedGrammars/csharp.tmLanguage.json' ); const scopeToRawGrammarFilePath: { [key: string]: IRawGrammar } = { 'text.aspnetcorerazor': razorRawGrammar, diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/inheritsDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/inheritsDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/inheritsDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/inheritsDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/injectDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/injectDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/injectDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/injectDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/layoutDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/layoutDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/layoutDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/layoutDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/lockStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/lockStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/lockStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/lockStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/modelDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/modelDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/modelDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/modelDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/namespaceDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/namespaceDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/namespaceDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/namespaceDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/pageDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/pageDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/pageDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/pageDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/preservewhitespaceDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/preservewhitespaceDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/preservewhitespaceDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/preservewhitespaceDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorComment.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorComment.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorComment.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorComment.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorTemplate.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorTemplate.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorTemplate.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/razorTemplate.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/removeTagHelperDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/removeTagHelperDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/removeTagHelperDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/removeTagHelperDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/rendermodeDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/rendermodeDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/rendermodeDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/rendermodeDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/scriptBlock.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/scriptBlock.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/scriptBlock.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/scriptBlock.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/sectionDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/sectionDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/sectionDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/sectionDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/styleBlock.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/styleBlock.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/styleBlock.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/styleBlock.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/switchStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/switchStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/switchStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/switchStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tagHelperPrefixDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tagHelperPrefixDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tagHelperPrefixDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tagHelperPrefixDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/transitions.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/transitions.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/transitions.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/transitions.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tryStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tryStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tryStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/tryStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/typeparamDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/typeparamDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/typeparamDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/typeparamDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingDirective.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingDirective.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingDirective.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingDirective.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/usingStatement.ts diff --git a/test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/whileStatement.ts b/test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/whileStatement.ts similarity index 100% rename from test/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/whileStatement.ts rename to test/razor/razorTests/Microsoft.AspNetCore.Razor.VSCode.Grammar.Test/tests/whileStatement.ts diff --git a/test/razorTests/jest.config.ts b/test/razor/razorTests/jest.config.ts similarity index 94% rename from test/razorTests/jest.config.ts rename to test/razor/razorTests/jest.config.ts index 1d5497c95..3a24378f4 100644 --- a/test/razorTests/jest.config.ts +++ b/test/razor/razorTests/jest.config.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import type { Config } from 'jest'; -import { baseProjectConfig } from '../../baseJestConfig'; +import { baseProjectConfig } from '../../../baseJestConfig'; export const razorTestProjectName = 'Razor Unit Tests'; diff --git a/test/integrationTests/jestSetup/vsCodeEnvironment.ts b/test/vsCodeEnvironment.ts similarity index 100% rename from test/integrationTests/jestSetup/vsCodeEnvironment.ts rename to test/vsCodeEnvironment.ts diff --git a/test/integrationTests/jestSetup/vsCodeFramework.ts b/test/vsCodeFramework.ts similarity index 100% rename from test/integrationTests/jestSetup/vsCodeFramework.ts rename to test/vsCodeFramework.ts diff --git a/test/vscodeLauncher.ts b/test/vscodeLauncher.ts index 4e3f70e20..1b51df03a 100644 --- a/test/vscodeLauncher.ts +++ b/test/vscodeLauncher.ts @@ -23,15 +23,20 @@ async function main() { console.log('Display: ' + process.env.DISPLAY); const fullArgs = [...args, '--install-extension', 'ms-dotnettools.vscode-dotnet-runtime']; - console.log(fullArgs); - const result = cp.spawnSync(cli, fullArgs, { + + // Since we're using shell execute, spaces in the CLI path will get interpeted as args + // Therefore we wrap the CLI path in quotes as on MacOS the path can contain spaces. + const cliWrapped = `"${cli}"`; + console.log(`${cliWrapped} ${fullArgs}`); + + const result = cp.spawnSync(cliWrapped, fullArgs, { encoding: 'utf-8', stdio: 'inherit', // Workaround as described in https://github.com/nodejs/node/issues/52554 shell: true, }); - if (result.error) { - throw new Error(`Failed to install the runtime extension: ${result.error}`); + if (result.error || result.status !== 0) { + throw new Error(`Failed to install the runtime extension: ${JSON.stringify(result)}`); } // The folder containing the Extension Manifest package.json diff --git a/version.json b/version.json index caef03ac9..daaeeb396 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/master/src/NerdBank.GitVersioning/version.schema.json", - "version": "2.45", + "version": "2.48", "publicReleaseRefSpec": [ "^refs/heads/release$", "^refs/heads/prerelease$", diff --git a/wallaby.js b/wallaby.js index 896b1f45e..2f854e80b 100644 --- a/wallaby.js +++ b/wallaby.js @@ -6,10 +6,10 @@ module.exports = function(_wallaby) { files: [ "src/**/*.ts*", "src/**/*.css", - "omnisharptest/omnisharpUnitTests/**/*.ts*", - "!omnisharptest/omnisharpUnitTests/**/*.test.ts*" + "test/omnisharp/omnisharpUnitTests/**/*.ts*", + "!test/omnisharp/omnisharpUnitTests/**/*.test.ts*" ], - tests: ["omnisharptest/omnisharpUnitTests/**/*.test.ts*"], + tests: ["test/omnisharp/omnisharpUnitTests/**/*.test.ts*"], debug: true,