From 550ff98311fc3ff5f658fbe605334a3ab85f3ed4 Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 09:59:31 -0700 Subject: [PATCH 01/10] feat: add UseTypeSpecNext support for C# emitter pipeline Add a common reusable script (eng/emitters/scripts/Update-TypeSpecNext.ps1) that uses @azure-tools/typespec-bump-deps to update TypeSpec dependencies to their @next versions. The script only mutates package manifests and can be adopted by any emitter. Implement the UseTypeSpecNext branch in the C# Initialize-Repository.ps1 and expose the flag as a pipeline parameter in the C# publish pipeline so operators can toggle it on manual runs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/emitters/scripts/Update-TypeSpecNext.ps1 | 43 +++++++++++++++++++ .../eng/pipeline/publish.yml | 7 ++- .../eng/scripts/Initialize-Repository.ps1 | 4 +- 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 eng/emitters/scripts/Update-TypeSpecNext.ps1 diff --git a/eng/emitters/scripts/Update-TypeSpecNext.ps1 b/eng/emitters/scripts/Update-TypeSpecNext.ps1 new file mode 100644 index 00000000000..3090e026d9b --- /dev/null +++ b/eng/emitters/scripts/Update-TypeSpecNext.ps1 @@ -0,0 +1,43 @@ +#Requires -Version 7.0 + +<# +.SYNOPSIS + Updates TypeSpec dependencies in package.json to the latest @next versions. + +.DESCRIPTION + Uses @azure-tools/typespec-bump-deps to update all TypeSpec-related dependencies + in the specified package.json file(s) to their latest @next versions. This script + only mutates the package manifest(s) — it does NOT run npm install. + + The caller (typically Initialize-Repository.ps1) is responsible for running + npm install after this script completes. + +.PARAMETER PackageJsonPaths + One or more paths to package.json files to update. Paths are relative to the + current working directory. + +.EXAMPLE + ./Update-TypeSpecNext.ps1 -PackageJsonPaths "package.json" + +.EXAMPLE + ./Update-TypeSpecNext.ps1 -PackageJsonPaths "package.json", "emitter/package.json" +#> + +param( + [Parameter(Mandatory = $true)] + [string[]] $PackageJsonPaths +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 3.0 + +. "$PSScriptRoot/CommandInvocation-Helpers.ps1" + +Write-Host "Updating TypeSpec dependencies to @next versions..." + +# Build the argument list from the provided paths +$pathArgs = ($PackageJsonPaths | ForEach-Object { "`"$_`"" }) -join " " + +Invoke-LoggedCommand "npx -y @azure-tools/typespec-bump-deps@latest --use-peer-ranges $pathArgs" + +Write-Host "TypeSpec dependencies updated to @next versions." diff --git a/packages/http-client-csharp/eng/pipeline/publish.yml b/packages/http-client-csharp/eng/pipeline/publish.yml index e369e98bebd..7fdb6e8c9f2 100644 --- a/packages/http-client-csharp/eng/pipeline/publish.yml +++ b/packages/http-client-csharp/eng/pipeline/publish.yml @@ -29,6 +29,11 @@ parameters: type: boolean default: true + - name: UseTypeSpecNext + displayName: Use TypeSpec Next (update dependencies to @next versions) + type: boolean + default: false + extends: template: /eng/common/pipelines/templates/1es-redirect.yml @@ -37,7 +42,7 @@ extends: - template: /eng/emitters/pipelines/templates/stages/emitter-stages.yml parameters: BuildPrereleaseVersion: true - UseTypeSpecNext: false + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} Publish: ${{replace(replace('True',eq(variables['Build.SourceBranchName'], 'main'), 'public'),'True','internal')}} PublishDependsOnTest: ${{ parameters.RunTests }} PackagePath: /packages/http-client-csharp diff --git a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 index 259d3e2b633..07785cd877e 100644 --- a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 @@ -29,7 +29,9 @@ try { Invoke-LoggedCommand "npm ci" } elseif ($UseTypeSpecNext) { - # TODO: add use typespec next to template later + Write-Host "Updating TypeSpec dependencies to @next versions..." + & "$packageRoot/../../eng/emitters/scripts/Update-TypeSpecNext.ps1" -PackageJsonPaths "package.json" + Invoke-LoggedCommand "npm install" } else { Invoke-LoggedCommand "npm ci" From bb906569e7a9315d93fad59ba4c580b0950edef5 Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 10:06:48 -0700 Subject: [PATCH 02/10] refactor: move typespec-bump-deps to pipeline YAML template Move the npx @azure-tools/typespec-bump-deps invocation from the PowerShell wrapper script into build-step.yml as a conditional pipeline step. This gives better visibility in the Azure DevOps UI, makes the step truly common across all emitters, and matches the Python approach. - Add conditional step in build-step.yml to run typespec-bump-deps - Remove eng/emitters/scripts/Update-TypeSpecNext.ps1 - Simplify C# Initialize-Repository.ps1 to only handle npm install Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../pipelines/templates/steps/build-step.yml | 5 +++ eng/emitters/scripts/Update-TypeSpecNext.ps1 | 43 ------------------- .../eng/scripts/Initialize-Repository.ps1 | 2 - 3 files changed, 5 insertions(+), 45 deletions(-) delete mode 100644 eng/emitters/scripts/Update-TypeSpecNext.ps1 diff --git a/eng/emitters/pipelines/templates/steps/build-step.yml b/eng/emitters/pipelines/templates/steps/build-step.yml index 597d2e09618..2352b172f38 100644 --- a/eng/emitters/pipelines/templates/steps/build-step.yml +++ b/eng/emitters/pipelines/templates/steps/build-step.yml @@ -72,6 +72,11 @@ steps: - ${{ parameters.AdditionalInitializeSteps }} + - ${{ if parameters.UseTypeSpecNext }}: + - script: npx -y @azure-tools/typespec-bump-deps@latest --use-peer-ranges package.json + displayName: "Update TypeSpec dependencies to @next" + workingDirectory: $(selfRepositoryPath)${{ parameters.PackagePath }} + - task: PowerShell@2 displayName: "Run initialize script" inputs: diff --git a/eng/emitters/scripts/Update-TypeSpecNext.ps1 b/eng/emitters/scripts/Update-TypeSpecNext.ps1 deleted file mode 100644 index 3090e026d9b..00000000000 --- a/eng/emitters/scripts/Update-TypeSpecNext.ps1 +++ /dev/null @@ -1,43 +0,0 @@ -#Requires -Version 7.0 - -<# -.SYNOPSIS - Updates TypeSpec dependencies in package.json to the latest @next versions. - -.DESCRIPTION - Uses @azure-tools/typespec-bump-deps to update all TypeSpec-related dependencies - in the specified package.json file(s) to their latest @next versions. This script - only mutates the package manifest(s) — it does NOT run npm install. - - The caller (typically Initialize-Repository.ps1) is responsible for running - npm install after this script completes. - -.PARAMETER PackageJsonPaths - One or more paths to package.json files to update. Paths are relative to the - current working directory. - -.EXAMPLE - ./Update-TypeSpecNext.ps1 -PackageJsonPaths "package.json" - -.EXAMPLE - ./Update-TypeSpecNext.ps1 -PackageJsonPaths "package.json", "emitter/package.json" -#> - -param( - [Parameter(Mandatory = $true)] - [string[]] $PackageJsonPaths -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 3.0 - -. "$PSScriptRoot/CommandInvocation-Helpers.ps1" - -Write-Host "Updating TypeSpec dependencies to @next versions..." - -# Build the argument list from the provided paths -$pathArgs = ($PackageJsonPaths | ForEach-Object { "`"$_`"" }) -join " " - -Invoke-LoggedCommand "npx -y @azure-tools/typespec-bump-deps@latest --use-peer-ranges $pathArgs" - -Write-Host "TypeSpec dependencies updated to @next versions." diff --git a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 index 07785cd877e..00694d8bd4d 100644 --- a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 @@ -29,8 +29,6 @@ try { Invoke-LoggedCommand "npm ci" } elseif ($UseTypeSpecNext) { - Write-Host "Updating TypeSpec dependencies to @next versions..." - & "$packageRoot/../../eng/emitters/scripts/Update-TypeSpecNext.ps1" -PackageJsonPaths "package.json" Invoke-LoggedCommand "npm install" } else { From c8cedf0db9b50e4adf709f4f3b80ee2c39664d0d Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 10:20:02 -0700 Subject: [PATCH 03/10] fix: use --legacy-peer-deps for UseTypeSpecNext npm install When typespec-bump-deps updates dependencies to @next versions, transitive peer dependency constraints may not yet be satisfied (e.g. azure-core@next still declares peerDep on compiler@^1.11.0 while compiler@1.12.0-dev is installed). Use --legacy-peer-deps to skip strict peer dep resolution, matching the behavior of pnpm --no-frozen-lockfile used by Python. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../http-client-csharp/eng/scripts/Initialize-Repository.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 index 00694d8bd4d..31ec42e7304 100644 --- a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 @@ -29,7 +29,7 @@ try { Invoke-LoggedCommand "npm ci" } elseif ($UseTypeSpecNext) { - Invoke-LoggedCommand "npm install" + Invoke-LoggedCommand "npm install --legacy-peer-deps" } else { Invoke-LoggedCommand "npm ci" From 10cfea2bdc226f0dfdd048fdb3219aa141f74522 Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 10:26:51 -0700 Subject: [PATCH 04/10] fix: ignore npm ls exit code when using UseTypeSpecNext With @next versions, transitive peer dependency mismatches are expected (e.g. azure-core@next may still declare peer on compiler@^1.11.0 while compiler@1.12.0-dev is installed). Use -IgnoreExitCode on npm ls to prevent the pipeline from failing on these expected warnings. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../eng/scripts/Initialize-Repository.ps1 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 index 31ec42e7304..86a86378ee5 100644 --- a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 @@ -35,7 +35,13 @@ try { Invoke-LoggedCommand "npm ci" } - Invoke-LoggedCommand "npm ls -a" -GroupOutput + if ($UseTypeSpecNext) { + # npm ls may report peer dependency mismatches with @next versions; ignore exit code + Invoke-LoggedCommand "npm ls -a" -GroupOutput -IgnoreExitCode + } + else { + Invoke-LoggedCommand "npm ls -a" -GroupOutput + } Write-Host "artifactStagingDirectory: $env:BUILD_ARTIFACTSTAGINGDIRECTORY" Write-Host "BuildArtifactsPath: $BuildArtifactsPath" From 5a46e69c76fa9380f3959a11e1939bd64ab50abe Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 10:36:20 -0700 Subject: [PATCH 05/10] fix: reset LASTEXITCODE after ignored npm ls Invoke-LoggedCommand -IgnoreExitCode suppresses the error message but does not reset $LASTEXITCODE. PowerShell then exits with code 1, causing the ADO task to fail. Explicitly reset to 0 after the call. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../http-client-csharp/eng/scripts/Initialize-Repository.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 index 86a86378ee5..a92d3e2614c 100644 --- a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 @@ -38,6 +38,7 @@ try { if ($UseTypeSpecNext) { # npm ls may report peer dependency mismatches with @next versions; ignore exit code Invoke-LoggedCommand "npm ls -a" -GroupOutput -IgnoreExitCode + $global:LASTEXITCODE = 0 } else { Invoke-LoggedCommand "npm ls -a" -GroupOutput From b64fd86e1fd176a00e8a98a06ae602ac5e9b7d81 Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 12:27:22 -0700 Subject: [PATCH 06/10] fix: set legacy-peer-deps for tsp-client generate-config-files The tsp-client generate-config-files command runs npm install internally, which fails on peer dep conflicts with @next versions. Set npm config legacy-peer-deps=true before the CreateAzureSdkForNetPR stage when UseTypeSpecNext is enabled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/http-client-csharp/eng/pipeline/publish.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/http-client-csharp/eng/pipeline/publish.yml b/packages/http-client-csharp/eng/pipeline/publish.yml index 7fdb6e8c9f2..2421f4181b5 100644 --- a/packages/http-client-csharp/eng/pipeline/publish.yml +++ b/packages/http-client-csharp/eng/pipeline/publish.yml @@ -160,6 +160,12 @@ extends: npm install -g semver displayName: Install semver + - ${{ if parameters.UseTypeSpecNext }}: + - pwsh: | + npm config set legacy-peer-deps=true + Write-Host "Set npm legacy-peer-deps=true for TypeSpec Next" + displayName: Configure npm for TypeSpec Next + - task: PowerShell@2 displayName: Update package.json with injected dependencies inputs: From 698f0ecbe9a8571bf5a0d1f00980ab468766ccf5 Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 14:15:21 -0700 Subject: [PATCH 07/10] fix: use env var for legacy-peer-deps in CreateAzureSdkForNetPR The Submit-AzureSdkForNetPr.ps1 script sets NPM_CONFIG_USERCONFIG to a custom .npmrc for registry auth, which overrides the user-level .npmrc where 'npm config set' writes. Use the npm_config_legacy_peer_deps environment variable instead, which takes precedence over all .npmrc files and is inherited by child processes (tsp-client's internal npm install). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/http-client-csharp/eng/pipeline/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/http-client-csharp/eng/pipeline/publish.yml b/packages/http-client-csharp/eng/pipeline/publish.yml index 2421f4181b5..2b3e1caf755 100644 --- a/packages/http-client-csharp/eng/pipeline/publish.yml +++ b/packages/http-client-csharp/eng/pipeline/publish.yml @@ -162,8 +162,8 @@ extends: - ${{ if parameters.UseTypeSpecNext }}: - pwsh: | - npm config set legacy-peer-deps=true - Write-Host "Set npm legacy-peer-deps=true for TypeSpec Next" + Write-Host "##vso[task.setvariable variable=npm_config_legacy_peer_deps]true" + Write-Host "Set npm_config_legacy_peer_deps=true for TypeSpec Next" displayName: Configure npm for TypeSpec Next - task: PowerShell@2 From d577e00e1cb2939a0de14cde49b67925931c3b58 Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 15:09:50 -0700 Subject: [PATCH 08/10] fix: use --force instead of --legacy-peer-deps --legacy-peer-deps skips installing conflicting peer deps entirely, causing packages like @typespec/streams and @typespec/events to be missing at runtime. --force installs all packages including peer deps but ignores version conflicts. Also set TSPCLIENT_FORCE_INSTALL=true for tsp-client's internal npm install (tsp-client already supports this env var natively). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/http-client-csharp/eng/pipeline/publish.yml | 5 +++-- .../http-client-csharp/eng/scripts/Initialize-Repository.ps1 | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/http-client-csharp/eng/pipeline/publish.yml b/packages/http-client-csharp/eng/pipeline/publish.yml index 2b3e1caf755..e4908c2948e 100644 --- a/packages/http-client-csharp/eng/pipeline/publish.yml +++ b/packages/http-client-csharp/eng/pipeline/publish.yml @@ -162,8 +162,9 @@ extends: - ${{ if parameters.UseTypeSpecNext }}: - pwsh: | - Write-Host "##vso[task.setvariable variable=npm_config_legacy_peer_deps]true" - Write-Host "Set npm_config_legacy_peer_deps=true for TypeSpec Next" + Write-Host "##vso[task.setvariable variable=npm_config_force]true" + Write-Host "##vso[task.setvariable variable=TSPCLIENT_FORCE_INSTALL]true" + Write-Host "Set npm --force and TSPCLIENT_FORCE_INSTALL for TypeSpec Next" displayName: Configure npm for TypeSpec Next - task: PowerShell@2 diff --git a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 index a92d3e2614c..cf86034541c 100644 --- a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 @@ -29,7 +29,7 @@ try { Invoke-LoggedCommand "npm ci" } elseif ($UseTypeSpecNext) { - Invoke-LoggedCommand "npm install --legacy-peer-deps" + Invoke-LoggedCommand "npm install --force" } else { Invoke-LoggedCommand "npm ci" From ab00cab78c68e3fa6bf7ffe4454320167f70e6f2 Mon Sep 17 00:00:00 2001 From: jolov Date: Tue, 14 Apr 2026 15:51:37 -0700 Subject: [PATCH 09/10] fix: pass UseTypeSpecNext to test pipeline stages The test stage calls Initialize-Repository.ps1 with -BuildArtifactsPath which uses npm ci (strict peer dep enforcement). When UseTypeSpecNext is true, npm ci needs --force to handle peer dep conflicts in @next packages. Thread UseTypeSpecNext through emitter-stages.yml -> test-job.yml -> test-step.yml -> Initialize-Repository.ps1 so the test leg uses npm ci --force when needed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- eng/emitters/pipelines/templates/jobs/test-job.yml | 5 +++++ eng/emitters/pipelines/templates/stages/emitter-stages.yml | 6 ++++++ eng/emitters/pipelines/templates/steps/test-step.yml | 6 +++++- .../eng/scripts/Initialize-Repository.ps1 | 7 ++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/eng/emitters/pipelines/templates/jobs/test-job.yml b/eng/emitters/pipelines/templates/jobs/test-job.yml index 48833d5616a..a4e2a06587c 100644 --- a/eng/emitters/pipelines/templates/jobs/test-job.yml +++ b/eng/emitters/pipelines/templates/jobs/test-job.yml @@ -52,6 +52,10 @@ parameters: type: string default: "3.12" + - name: UseTypeSpecNext + type: boolean + default: false + jobs: - job: Test_${{ parameters.Os }}_${{ split(parameters.NodeVersion, '.')[0] }} ${{ if eq(parameters.Os, 'linux') }}: @@ -83,6 +87,7 @@ jobs: CadlRanchName: ${{ parameters.CadlRanchName }} EnableCadlRanchReport: ${{ parameters.EnableCadlRanchReport }} PythonVersion: ${{ parameters.PythonVersion }} + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} ${{ if parameters.EmitArtifacts }}: templateContext: outputs: diff --git a/eng/emitters/pipelines/templates/stages/emitter-stages.yml b/eng/emitters/pipelines/templates/stages/emitter-stages.yml index 0ef45d4ec1e..3e50c505725 100644 --- a/eng/emitters/pipelines/templates/stages/emitter-stages.yml +++ b/eng/emitters/pipelines/templates/stages/emitter-stages.yml @@ -192,6 +192,7 @@ stages: CadlRanchName: ${{ parameters.CadlRanchName }} # only needed for first job EnableCadlRanchReport: ${{ parameters.EnableCadlRanchReport }} PythonVersion: ${{ parameters.PythonVersion }} + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} - template: /eng/emitters/pipelines/templates/jobs/test-job.yml parameters: AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }} @@ -202,6 +203,7 @@ stages: NodeVersion: 22.x Os: linux PythonVersion: ${{ parameters.PythonVersion }} + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} - template: /eng/emitters/pipelines/templates/jobs/test-job.yml parameters: AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }} @@ -212,6 +214,7 @@ stages: NodeVersion: 20.x Os: windows PythonVersion: ${{ parameters.PythonVersion }} + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} - template: /eng/emitters/pipelines/templates/jobs/test-job.yml parameters: AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }} @@ -222,6 +225,7 @@ stages: NodeVersion: 22.x Os: windows PythonVersion: ${{ parameters.PythonVersion }} + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} # Regen Test stage # Responsible for running any regen tests needed to validate no manual changes were done. @@ -246,6 +250,7 @@ stages: Os: windows TestMatrix: ${{ parameters.TestMatrix }} PythonVersion: ${{ parameters.PythonVersion }} + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} - template: /eng/emitters/pipelines/templates/jobs/test-job.yml parameters: AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }} @@ -255,6 +260,7 @@ stages: Os: linux TestMatrix: ${{ parameters.TestMatrix }} PythonVersion: ${{ parameters.PythonVersion }} + UseTypeSpecNext: ${{ parameters.UseTypeSpecNext }} # Publish stage # Responsible for publishing the packages in `build_artifacts/packages` and producing `emitter-package-lock.json` diff --git a/eng/emitters/pipelines/templates/steps/test-step.yml b/eng/emitters/pipelines/templates/steps/test-step.yml index c5b21d216c3..f2cdf86217c 100644 --- a/eng/emitters/pipelines/templates/steps/test-step.yml +++ b/eng/emitters/pipelines/templates/steps/test-step.yml @@ -44,6 +44,10 @@ parameters: type: string default: "3.12" + - name: UseTypeSpecNext + type: boolean + default: false + steps: - checkout: self @@ -69,7 +73,7 @@ steps: inputs: pwsh: true filePath: $(selfRepositoryPath)${{ parameters.PackagePath }}/eng/scripts/Initialize-Repository.ps1 - arguments: -BuildArtifactsPath '$(buildArtifactsPath)' + arguments: -BuildArtifactsPath '$(buildArtifactsPath)' -UseTypeSpecNext:$${{ parameters.UseTypeSpecNext }} workingDirectory: $(selfRepositoryPath) - task: PowerShell@2 diff --git a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 index cf86034541c..837aacc6046 100644 --- a/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 +++ b/packages/http-client-csharp/eng/scripts/Initialize-Repository.ps1 @@ -26,7 +26,12 @@ try { Copy-Item "$lockFilesPath/emitter/package.json" './package.json' -Force Copy-Item "$lockFilesPath/emitter/package-lock.json" './package-lock.json' -Force - Invoke-LoggedCommand "npm ci" + if ($UseTypeSpecNext) { + Invoke-LoggedCommand "npm ci --force" + } + else { + Invoke-LoggedCommand "npm ci" + } } elseif ($UseTypeSpecNext) { Invoke-LoggedCommand "npm install --force" From 86ee3102044a79ae2595749248de9d878117aad2 Mon Sep 17 00:00:00 2001 From: jolov Date: Wed, 15 Apr 2026 11:05:40 -0700 Subject: [PATCH 10/10] fix: update NuGet packages to 6.14.3 for GHSA-g4vj-cjjj-v7hg Update NuGet.Configuration, NuGet.Versioning, and NuGet.Protocol from 6.14.0 to 6.14.3 to address the defense-in-depth security advisory GHSA-g4vj-cjjj-v7hg affecting versions >= 6.14.0, <= 6.14.2. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- packages/http-client-csharp/generator/Packages.Data.props | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/http-client-csharp/generator/Packages.Data.props b/packages/http-client-csharp/generator/Packages.Data.props index e0d387e0cfb..3ddf0a7e750 100644 --- a/packages/http-client-csharp/generator/Packages.Data.props +++ b/packages/http-client-csharp/generator/Packages.Data.props @@ -10,9 +10,9 @@ - - - + + +