diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index a8c4910b15ed..6a0943145f5c 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -603,9 +603,6 @@
# ServiceLabel: %Media Services
# ServiceOwners: @naiteeks @bennage @giakas
-# PRLabel: %Microsoft Playwright Testing
-/sdk/playwrighttesting/ @puagarwa @ShreyaAnand
-
# ServiceLabel: %Microsoft Playwright Testing
# ServiceOwners: @puagarwa @ShreyaAnand
@@ -873,10 +870,10 @@
# ServiceOwners: @shahbj79 @mit2nil @aygoya @ganganarayanan
# PRLabel: %Synapse
-/sdk/synapse/ @yanjungao718
+/sdk/synapse/ @yanjungao718 @wanyang7
# ServiceLabel: %Synapse
-# ServiceOwners: @yanjungao718
+# ServiceOwners: @yanjungao718 @wanyang7
# PRLabel: %Tables
/sdk/tables/ @christothes @jorgerangel-msft
@@ -1168,6 +1165,14 @@
# ServiceLabel: %Weights & Biases %Mgmt
# ServiceOwners: @aggarwalsw
+
+# PRLabel: %Workload Orchestration
+/sdk/workloadorchestration/Azure.ResourceManager.*/ @atharvau
+
+# ServiceLabel: %Workload Orchestration %Mgmt
+# ServiceOwners: @atharvau
+
+
# ######## Eng Sys ########
/eng/ @hallipr @weshaggard @benbp
/eng/common/ @Azure/azure-sdk-eng
diff --git a/.vscode/cspell.json b/.vscode/cspell.json
index 4ccba02fecdf..aa08477c6af8 100644
--- a/.vscode/cspell.json
+++ b/.vscode/cspell.json
@@ -74,6 +74,8 @@
"cpus",
"cref",
"Dapr",
+ "decompile",
+ "decompiled",
"deduplication",
"deletesas",
"deserializable",
@@ -1821,6 +1823,13 @@
"Akri",
"Bucketized"
]
+ },
+ {
+ "filename": "**/sdk/workloadorchestration/**/*.cs",
+ "words": [
+ "Inprogress",
+ "Undeployed"
+ ]
}
],
"allowCompoundWords": true
diff --git a/doc/GeneratorMigration/Library_Inventory.md b/doc/GeneratorMigration/Library_Inventory.md
index 0bdc0e385c1e..2080a7e81dc6 100644
--- a/doc/GeneratorMigration/Library_Inventory.md
+++ b/doc/GeneratorMigration/Library_Inventory.md
@@ -2,26 +2,27 @@
## Summary
-- Total libraries: 408
-- Management Plane (Swagger): 168
-- Management Plane (TSP-Old): 49
+- Total libraries: 412
+- Management Plane (Swagger): 167
+- Management Plane (TSP-Old): 52
- Management Plane (TypeSpec - @azure-typespec/http-client-csharp): 0
-- Management Plane (TypeSpec - @azure-typespec/http-client-csharp-mgmt): 2
+- Management Plane (TypeSpec - @azure-typespec/http-client-csharp-mgmt): 3
- Management Plane (TypeSpec - @typespec/http-client-csharp): 0
-- Data Plane (Swagger): 114
+- Data Plane (Swagger): 115
- Data Plane (TSP-Old): 27
-- Data Plane (TypeSpec - @azure-typespec/http-client-csharp): 7
+- Data Plane (TypeSpec - @azure-typespec/http-client-csharp): 8
- Data Plane (TypeSpec - @azure-typespec/http-client-csharp-mgmt): 0
- Data Plane (TypeSpec - @typespec/http-client-csharp): 2
-- No generator: 39
+- No generator: 38
## Data Plane Libraries using TypeSpec (@azure-typespec/http-client-csharp)
-TypeSpec with @azure-typespec/http-client-csharp generator is detected by the presence of a tsp-location.yaml file with an emitterPackageJsonPath value referencing @azure-typespec/http-client-csharp, or through special handling for specific libraries. Total: 7
+TypeSpec with @azure-typespec/http-client-csharp generator is detected by the presence of a tsp-location.yaml file with an emitterPackageJsonPath value referencing @azure-typespec/http-client-csharp, or through special handling for specific libraries. Total: 8
| Service | Library | Path |
| ------- | ------- | ---- |
+| ai | Azure.AI.VoiceLive | sdk/ai/Azure.AI.VoiceLive |
| appconfiguration | Azure.Data.AppConfiguration | sdk/appconfiguration/Azure.Data.AppConfiguration |
| eventgrid | Azure.Messaging.EventGrid.Namespaces | sdk/eventgrid/Azure.Messaging.EventGrid.Namespaces |
| eventgrid | Azure.Messaging.EventGrid.SystemEvents | sdk/eventgrid/Azure.Messaging.EventGrid.SystemEvents |
@@ -78,7 +79,7 @@ TypeSpec with old generator is detected by the presence of a tsp-location.yaml f
## Data Plane Libraries using Swagger
-Total: 114
+Total: 115
| Service | Library | Path |
| ------- | ------- | ---- |
@@ -142,7 +143,6 @@ Total: 114
| monitor | Azure.Monitor.Query | sdk/monitor/Azure.Monitor.Query |
| objectanchors | Azure.MixedReality.ObjectAnchors.Conversion | sdk/objectanchors/Azure.MixedReality.ObjectAnchors.Conversion |
| personalizer | Azure.AI.Personalizer | sdk/personalizer/Azure.AI.Personalizer |
-| playwrighttesting | Azure.Developer.MicrosoftPlaywrightTesting.TestLogger | sdk/playwrighttesting/Azure.Developer.MicrosoftPlaywrightTesting.TestLogger |
| provisioning | Azure.Provisioning | sdk/provisioning/Azure.Provisioning |
| provisioning | Azure.Provisioning.AppConfiguration | sdk/provisioning/Azure.Provisioning.AppConfiguration |
| provisioning | Azure.Provisioning.AppContainers | sdk/provisioning/Azure.Provisioning.AppContainers |
@@ -158,6 +158,8 @@ Total: 114
| provisioning | Azure.Provisioning.KeyVault | sdk/provisioning/Azure.Provisioning.KeyVault |
| provisioning | Azure.Provisioning.Kubernetes | sdk/provisioning/Azure.Provisioning.Kubernetes |
| provisioning | Azure.Provisioning.KubernetesConfiguration | sdk/provisioning/Azure.Provisioning.KubernetesConfiguration |
+| provisioning | Azure.Provisioning.Kusto | sdk/provisioning/Azure.Provisioning.Kusto |
+| provisioning | Azure.Provisioning.Network | sdk/provisioning/Azure.Provisioning.Network |
| provisioning | Azure.Provisioning.OperationalInsights | sdk/provisioning/Azure.Provisioning.OperationalInsights |
| provisioning | Azure.Provisioning.PostgreSql | sdk/provisioning/Azure.Provisioning.PostgreSql |
| provisioning | Azure.Provisioning.Redis | sdk/provisioning/Azure.Provisioning.Redis |
@@ -200,17 +202,18 @@ Total: 114
## Management Plane Libraries using TypeSpec (@azure-typespec/http-client-csharp-mgmt)
-TypeSpec with @azure-typespec/http-client-csharp-mgmt generator is detected by the presence of a tsp-location.yaml file with an emitterPackageJsonPath value referencing @azure-typespec/http-client-csharp-mgmt, or through special handling for specific libraries. Total: 2
+TypeSpec with @azure-typespec/http-client-csharp-mgmt generator is detected by the presence of a tsp-location.yaml file with an emitterPackageJsonPath value referencing @azure-typespec/http-client-csharp-mgmt, or through special handling for specific libraries. Total: 3
| Service | Library | Path |
| ------- | ------- | ---- |
+| computerecommender | Azure.ResourceManager.Compute.Recommender | sdk/computerecommender/Azure.ResourceManager.Compute.Recommender |
| portalservices | Azure.ResourceManager.PortalServicesCopilot | sdk/portalservices/Azure.ResourceManager.PortalServicesCopilot |
| storageactions | Azure.ResourceManager.StorageActions | sdk/storageactions/Azure.ResourceManager.StorageActions |
## Management Plane Libraries using TypeSpec (Old Generator)
-TypeSpec with old generator is detected by the presence of a tsp-location.yaml file without an emitterPackageJsonPath value, tspconfig.yaml file, tsp directory, or *.tsp files. Total: 49
+TypeSpec with old generator is detected by the presence of a tsp-location.yaml file without an emitterPackageJsonPath value, tspconfig.yaml file, tsp directory, or *.tsp files. Total: 52
| Service | Library | Path |
| ------- | ------- | ---- |
@@ -225,11 +228,13 @@ TypeSpec with old generator is detected by the presence of a tsp-location.yaml f
| connectedcache | Azure.ResourceManager.ConnectedCache | sdk/connectedcache/Azure.ResourceManager.ConnectedCache |
| containerorchestratorruntime | Azure.ResourceManager.ContainerOrchestratorRuntime | sdk/containerorchestratorruntime/Azure.ResourceManager.ContainerOrchestratorRuntime |
| databasewatcher | Azure.ResourceManager.DatabaseWatcher | sdk/databasewatcher/Azure.ResourceManager.DatabaseWatcher |
+| databox | Azure.ResourceManager.DataBox | sdk/databox/Azure.ResourceManager.DataBox |
| dellstorage | Azure.ResourceManager.Dell.Storage | sdk/dellstorage/Azure.ResourceManager.Dell.Storage |
| dependencymap | Azure.ResourceManager.DependencyMap | sdk/dependencymap/Azure.ResourceManager.DependencyMap |
| deviceprovisioningservices | Azure.ResourceManager.DeviceProvisioningServices | sdk/deviceprovisioningservices/Azure.ResourceManager.DeviceProvisioningServices |
| deviceregistry | Azure.ResourceManager.DeviceRegistry | sdk/deviceregistry/Azure.ResourceManager.DeviceRegistry |
| devopsinfrastructure | Azure.ResourceManager.DevOpsInfrastructure | sdk/devopsinfrastructure/Azure.ResourceManager.DevOpsInfrastructure |
+| disconnectedoperations | Azure.ResourceManager.DisconnectedOperations | sdk/disconnectedoperations/Azure.ResourceManager.DisconnectedOperations |
| durabletask | Azure.ResourceManager.DurableTask | sdk/durabletask/Azure.ResourceManager.DurableTask |
| elasticsan | Azure.ResourceManager.ElasticSan | sdk/elasticsan/Azure.ResourceManager.ElasticSan |
| fabric | Azure.ResourceManager.Fabric | sdk/fabric/Azure.ResourceManager.Fabric |
@@ -248,10 +253,10 @@ TypeSpec with old generator is detected by the presence of a tsp-location.yaml f
| pineconevectordb | Azure.ResourceManager.PineconeVectorDB | sdk/pineconevectordb/Azure.ResourceManager.PineconeVectorDB |
| planetarycomputer | Azure.ResourceManager.PlanetaryComputer | sdk/planetarycomputer/Azure.ResourceManager.PlanetaryComputer |
| playwright | Azure.ResourceManager.Playwright | sdk/playwright/Azure.ResourceManager.Playwright |
-| playwrighttesting | Azure.ResourceManager.PlaywrightTesting | sdk/playwrighttesting/Azure.ResourceManager.PlaywrightTesting |
| purestorageblock | Azure.ResourceManager.PureStorageBlock | sdk/purestorageblock/Azure.ResourceManager.PureStorageBlock |
| recoveryservices | Azure.ResourceManager.RecoveryServices | sdk/recoveryservices/Azure.ResourceManager.RecoveryServices |
| recoveryservices-datareplication | Azure.ResourceManager.RecoveryServicesDataReplication | sdk/recoveryservices-datareplication/Azure.ResourceManager.RecoveryServicesDataReplication |
+| resources | Azure.ResourceManager.Resources.Bicep | sdk/resources/Azure.ResourceManager.Resources.Bicep |
| secretsstoreextension | Azure.ResourceManager.SecretsStoreExtension | sdk/secretsstoreextension/Azure.ResourceManager.SecretsStoreExtension |
| selfhelp | Azure.ResourceManager.SelfHelp | sdk/selfhelp/Azure.ResourceManager.SelfHelp |
| servicefabricmanagedclusters | Azure.ResourceManager.ServiceFabricManagedClusters | sdk/servicefabricmanagedclusters/Azure.ResourceManager.ServiceFabricManagedClusters |
@@ -262,12 +267,13 @@ TypeSpec with old generator is detected by the presence of a tsp-location.yaml f
| storagemover | Azure.ResourceManager.StorageMover | sdk/storagemover/Azure.ResourceManager.StorageMover |
| terraform | Azure.ResourceManager.Terraform | sdk/terraform/Azure.ResourceManager.Terraform |
| weightsandbiases | Azure.ResourceManager.WeightsAndBiases | sdk/weightsandbiases/Azure.ResourceManager.WeightsAndBiases |
+| workloadorchestration | Azure.ResourceManager.WorkloadOrchestration | sdk/workloadorchestration/Azure.ResourceManager.WorkloadOrchestration |
| workloadssapvirtualinstance | Azure.ResourceManager.WorkloadsSapVirtualInstance | sdk/workloadssapvirtualinstance/Azure.ResourceManager.WorkloadsSapVirtualInstance |
## Management Plane Libraries using Swagger
-Total: 168
+Total: 167
| Service | Library | Path |
| ------- | ------- | ---- |
@@ -311,7 +317,6 @@ Total: 168
| cosmosdbforpostgresql | Azure.ResourceManager.CosmosDBForPostgreSql | sdk/cosmosdbforpostgresql/Azure.ResourceManager.CosmosDBForPostgreSql |
| costmanagement | Azure.ResourceManager.CostManagement | sdk/costmanagement/Azure.ResourceManager.CostManagement |
| customer-insights | Azure.ResourceManager.CustomerInsights | sdk/customer-insights/Azure.ResourceManager.CustomerInsights |
-| databox | Azure.ResourceManager.DataBox | sdk/databox/Azure.ResourceManager.DataBox |
| databoxedge | Azure.ResourceManager.DataBoxEdge | sdk/databoxedge/Azure.ResourceManager.DataBoxEdge |
| datadog | Azure.ResourceManager.Datadog | sdk/datadog/Azure.ResourceManager.Datadog |
| datafactory | Azure.ResourceManager.DataFactory | sdk/datafactory/Azure.ResourceManager.DataFactory |
@@ -443,7 +448,7 @@ Total: 168
## Libraries with No Generator
-Libraries with no generator have neither autorest.md nor tsp-location.yaml files. Total: 39
+Libraries with no generator have neither autorest.md nor tsp-location.yaml files. Total: 38
| Service | Library | Path |
| ------- | ------- | ---- |
@@ -475,7 +480,6 @@ Libraries with no generator have neither autorest.md nor tsp-location.yaml files
| loadtestservice | Azure.Developer.Playwright.NUnit | sdk/loadtestservice/Azure.Developer.Playwright.NUnit |
| modelsrepository | Azure.IoT.ModelsRepository | sdk/modelsrepository/Azure.IoT.ModelsRepository |
| monitor | Azure.Monitor.OpenTelemetry.AspNetCore | sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore |
-| playwrighttesting | Azure.Developer.MicrosoftPlaywrightTesting.NUnit | sdk/playwrighttesting/Azure.Developer.MicrosoftPlaywrightTesting.NUnit |
| provisioning | Azure.Provisioning.Deployment | sdk/provisioning/Azure.Provisioning.Deployment |
| provisioning | Generator | sdk/provisioning/Generator |
| servicebus | Azure.Messaging.ServiceBus | sdk/servicebus/Azure.Messaging.ServiceBus |
diff --git a/eng/CodeGeneration.targets b/eng/CodeGeneration.targets
index b8b6bd695718..3565942c1a60 100644
--- a/eng/CodeGeneration.targets
+++ b/eng/CodeGeneration.targets
@@ -5,7 +5,7 @@
<_TypeSpecProjectGenerateCommand>npx --no-install --package=@azure-tools/typespec-client-generator-cli --yes tsp-client generate --no-prompt --output-dir $(MSBuildProjectDirectory)/../
<_TypeSpecProjectSyncAndGenerateCommand>npx --no-install --package=@azure-tools/typespec-client-generator-cli --yes tsp-client update --no-prompt --output-dir $(MSBuildProjectDirectory)/../
<_SaveInputs Condition="'$(SaveInputs)' == 'true'">--save-inputs
- <_Trace Condition="'$(Trace)' == 'true'">--trace @typespec/http-client-csharp @azure-typespec/http-client-csharp @azure-typespec/http-client-csharp-mgmt
+ <_Trace Condition="'$(Trace)' == 'true'">--trace @typespec/http-client-csharp @azure-typespec/http-client-csharp @azure-typespec/http-client-csharp-mgmt --debug
$(TypespecAdditionalOptions)%3Bgenerate-test-project=true
generate-test-project=true
diff --git a/eng/Packages.Data.props b/eng/Packages.Data.props
index edf3606364fb..85af6e9936a0 100644
--- a/eng/Packages.Data.props
+++ b/eng/Packages.Data.props
@@ -205,7 +205,7 @@
-
+
@@ -297,7 +297,7 @@
All should have PrivateAssets="All" set so they don't become package dependencies
-->
-
+
@@ -466,7 +466,7 @@
1.0.0-dev.20250805.1
- 1.0.0-alpha.20250908.5
+ 1.0.0-alpha.20250918.1
1.0.0-alpha.20250903.2
\ No newline at end of file
diff --git a/eng/azure-typespec-http-client-csharp-emitter-package-lock.json b/eng/azure-typespec-http-client-csharp-emitter-package-lock.json
index 2ffa540a8a1b..af851f369304 100644
--- a/eng/azure-typespec-http-client-csharp-emitter-package-lock.json
+++ b/eng/azure-typespec-http-client-csharp-emitter-package-lock.json
@@ -5,38 +5,38 @@
"packages": {
"": {
"dependencies": {
- "@azure-typespec/http-client-csharp": "1.0.0-alpha.20250908.4"
+ "@azure-typespec/http-client-csharp": "1.0.0-alpha.20250912.2"
},
"devDependencies": {
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.0",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/versioning": "0.73.0"
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
+ "@typespec/compiler": "1.4.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/versioning": "0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-core": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.59.0.tgz",
- "integrity": "sha512-3vTWDTSR+P0qeyFcOKTgXortNOeA3nsyKTPpZqfFZVTtNFiiO17UWAM2Eg3i0IpNQ3qxMMAksIkwt1bqltTDqA==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.60.0.tgz",
+ "integrity": "sha512-Pmm7blxnEZZ7lhMJWWsiIqMrFthaCK6uu7f+ONN7dq0Mjc/O9w8+43tAIXwnGz1OKAWmiToh3EDbaxeWyt/FhQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/rest": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/rest": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-resource-manager": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.59.0.tgz",
- "integrity": "sha512-q0UkBnwWE4+9ivAkwAOOrDF9kvSb+qRIvMXJdUlqGfwFqDkOvQFwHSzSDeL/mBNK2fB9NIePKPFjDGP9lpC0vQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.60.0.tgz",
+ "integrity": "sha512-u0gqgSO5lIcpZN11MBAmRnR7kM1eoBLO8cKB86bXrxLt2vAkYpuL4hWp0A+QJjQy/YI5rrijeBF0visqBJnR4A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -47,34 +47,34 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/versioning": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-rulesets": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.59.0.tgz",
- "integrity": "sha512-+eKYH25ptj6SZHT+/YfxrX+g6HMAQQTphmHmqOoRCbbfPaE8l855OaDrwEgh5NDLV8WXnHpzTNI0dsYipEp10g==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.60.0.tgz",
+ "integrity": "sha512-4sx9StBWkmnBfLJ9b23RSwCs0TkTElaU9+6a/cS6JS0F7UggP/KLQd6LG59D0u9ByXM2x9pvYPO8l/K7UOXoPg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "^0.59.0",
- "@azure-tools/typespec-client-generator-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "^0.60.0",
+ "@azure-tools/typespec-client-generator-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@azure-tools/typespec-client-generator-core": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.59.0.tgz",
- "integrity": "sha512-5+pVcOr7Uyq4IaZ3oLjLi8jnBuR+t/B8hQF4CZo+goe/uK+WkmDfw1TlY14G2ve7W7v8m9+Sk2nil6bN1uHWEQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.60.0.tgz",
+ "integrity": "sha512-JV9uiqxDCzVVFeMctm4ebmUI4982B3dCdKx0nmonjfRf9a2/MXilEKExPIaNVR3ZqbFPXM/IepheY8t9YZNqSQ==",
"license": "MIT",
"dependencies": {
"change-case": "~5.4.4",
@@ -85,25 +85,25 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/sse": "^0.73.0",
- "@typespec/streams": "^0.73.0",
- "@typespec/versioning": "^0.73.0",
- "@typespec/xml": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/sse": "^0.74.0",
+ "@typespec/streams": "^0.74.0",
+ "@typespec/versioning": "^0.74.0",
+ "@typespec/xml": "^0.74.0"
}
},
"node_modules/@azure-typespec/http-client-csharp": {
- "version": "1.0.0-alpha.20250908.4",
- "resolved": "https://registry.npmjs.org/@azure-typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250908.4.tgz",
- "integrity": "sha512-/rfnpFY0Sm4JZJP3AtSQb6zvRfMghZ4bbgCKH8hkD65t4UQKKVwvBgHv68MXEg0QsPvkZDWi4qFgJ/kYP0SXVw==",
+ "version": "1.0.0-alpha.20250912.2",
+ "resolved": "https://registry.npmjs.org/@azure-typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250912.2.tgz",
+ "integrity": "sha512-RImdae8o0zJRTVo2dOx8tLY7t59IqNjlaYuqSVvSoyJgEH9XT6Fb3MyhCUpKbnNfLUq/qAq2LdHsEeqSwrKWbw==",
"license": "MIT",
"dependencies": {
- "@typespec/http-client-csharp": "1.0.0-alpha.20250908.5"
+ "@typespec/http-client-csharp": "1.0.0-alpha.20250912.2"
}
},
"node_modules/@babel/code-frame": {
@@ -514,9 +514,9 @@
}
},
"node_modules/@typespec/compiler": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.3.0.tgz",
- "integrity": "sha512-OqpoNP3C2y8riA6C5RofPMvmj9jNiGyyhde0tM2ZE7IBOv7BBaTDqw4CJD22YnC8JEilRfPmvdVCViNrPHEjrA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.4.0.tgz",
+ "integrity": "sha512-/AFiU3ImuhH/vHKzSGv7I2peewdJ7YLhgMCfFDNk6Ae0a5Ylrc8R1GOATVilisEPBFG9lnjHn3uUcyaZs5VWRw==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "~7.27.1",
@@ -546,29 +546,29 @@
}
},
"node_modules/@typespec/events": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.73.0.tgz",
- "integrity": "sha512-etlhp86amDaElD/UX27u9I4O58zREov73HkkV3xbdTWpv2RqOKyD3mkyGAWsW3hKaGVIxwHOvKcOZ2j+b07Gpw==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.74.0.tgz",
+ "integrity": "sha512-CY6JTtheMKAUlxiPmwx2fLIAWEwezsXmQYUMRhyuW44Q73unQIkexE43LUnNWOJSZckYucqUp+ihXh7jxzWeVQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/http": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.3.0.tgz",
- "integrity": "sha512-4W3KsmBHZGgECVbvyh7S7KQG06948XyVVzae+UbVDDxoUj/x4Ry0AXw3q4HmzB2BVhxw6JBrwBuVa5mxjVMzdw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.4.0.tgz",
+ "integrity": "sha512-Y0PDDtBu+oZnwivfhbL0lN6Mk3QiCxZ66DgB5kFjcgKNpnXf0u440PPyaL42a8lbchzz5lVwz+cinyIMI89FIQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
},
"peerDependenciesMeta": {
"@typespec/streams": {
@@ -577,99 +577,98 @@
}
},
"node_modules/@typespec/http-client-csharp": {
- "version": "1.0.0-alpha.20250908.5",
- "resolved": "https://registry.npmjs.org/@typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250908.5.tgz",
- "integrity": "sha512-zB3QrNQWBi248oYUIwnfnMDmxZLpNblNXZMzYdM3PzandepZAo0U+AWLaeovEPnGvIi8shEt3CmhbJAouil3qA==",
+ "version": "1.0.0-alpha.20250912.2",
+ "resolved": "https://registry.npmjs.org/@typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250912.2.tgz",
+ "integrity": "sha512-N3rMrsOj1jXw8dMBCvcNelLEGw+y3divFUAgYOMLM+1xYYhs34525MS7z2L8k2wLv81crW40BwRC7OzQnDjeDQ==",
"license": "MIT",
"peerDependencies": {
- "@azure-tools/typespec-azure-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@azure-tools/typespec-client-generator-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": ">=0.73.0 <0.74.0 || ~0.74.0-0",
- "@typespec/streams": ">=0.73.0 <0.74.0 || ~0.74.0-0",
- "@typespec/versioning": ">=0.73.0 <0.74.0 || ~0.74.0-0"
+ "@azure-tools/typespec-client-generator-core": ">=0.60.0 < 0.61.0 || ~0.61.0-0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": ">=0.74.0 <0.75.0 || ~0.75.0-0",
+ "@typespec/streams": ">=0.74.0 <0.75.0 || ~0.75.0-0",
+ "@typespec/versioning": ">=0.74.0 <0.75.0 || ~0.75.0-0"
}
},
"node_modules/@typespec/openapi": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.3.0.tgz",
- "integrity": "sha512-BSeshjCZQodVGyVHn7ytcUeIcUGjqbG2Ac0NLOQaaKnISVrhTWNcgo5aFTqxAa24ZL/EuhqlSauLyYce2EV9fw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.4.0.tgz",
+ "integrity": "sha512-ZfrCsmZG/Zt1laLaWC0pKvnZr4jqrm/YS/YuZe/gVrSYKBxGLopXle7H0wrSSMYkIVCNCLiC68/HqRxV6XTfoA==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/rest": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.73.0.tgz",
- "integrity": "sha512-28hgFGvreBg34Xuguw+E++pQC/kbRxy1Bpx/9nU7x87Ly6ykns3lpx74gjY9ByE8VYKVbXtC7lzdnp19DRSjIQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.74.0.tgz",
+ "integrity": "sha512-dE+Xmv01AQ7m8jUvEbGsUQLSVo3sLzMpnHRbQEOnJX42oDqtIsz/2GEOXKQpNm1AKBISK66E2FFB5boz999Ziw==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/sse": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.73.0.tgz",
- "integrity": "sha512-WTnRJ1b1M3RPzlHxhnK9sh6+AGKPKWpuA0TSAqzyxb/uRHFYLNeoDKPOnlQ749SJ8lJz71Oh0nUsP3vB0EzO6Q==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.74.0.tgz",
+ "integrity": "sha512-+m7/elbGp7q/kqCGaBRj8v8wVMWKVEV8AsZOjf1PY2MkMUrux9ivOijBIktgoLBXDn+ocO2qVfFrHWG2slZSaw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
}
},
"node_modules/@typespec/streams": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.73.0.tgz",
- "integrity": "sha512-pL4xffHXEIhBQKPlB9L4AKuM0bn44WsGKjnz91wa6wBtP/CbsPrGQicof0Z7GPGdddtDi4G8PWGmJtVFw53V9g==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.74.0.tgz",
+ "integrity": "sha512-LIWizQgzGt8qN8ravte4DrPLPNOk9ge73bV9Us2TOECagTVQWwgMVy7+o/Beff3sOLQO/sEOwfzvmnNpSlauHg==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/versioning": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.73.0.tgz",
- "integrity": "sha512-cfFvzTsvsu4VpdwZcRULr3p/fawKZnjiJClQxlLcYW0dLs/5k5jh7l0YyPkYvgkOcncUrIB6hIu82tQhKrMDKQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.74.0.tgz",
+ "integrity": "sha512-eFIa23tycWJgv3Lxyu6jUlRi02dhtQE4Jjx3Ui5vEbwHW8pMEzuyF7ALt1c+V9HOLkfDkS4dJkiOVIoikZHPvQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/xml": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.73.0.tgz",
- "integrity": "sha512-vlMM8/L22O/PbI3ovj3qoww/3Z8wNwn7og4jzlGRM93jZBJvrOeDSwZo1Dc4rMJyU6KfjPkP3/l5TLbgW8x0zA==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.74.0.tgz",
+ "integrity": "sha512-NiXatOfpyPxU94f2tEBAygxJeS7CvIr5lvnfZkC0tUHwkiJeLrI1jt13kDVB5CE6zNK6I3d7c37xsQs9WXGFAQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/ajv": {
@@ -976,9 +975,9 @@
}
},
"node_modules/get-east-asian-width": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.1.tgz",
- "integrity": "sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
"license": "MIT",
"engines": {
"node": ">=18"
diff --git a/eng/azure-typespec-http-client-csharp-emitter-package.json b/eng/azure-typespec-http-client-csharp-emitter-package.json
index cae332042744..07614f15c8a9 100644
--- a/eng/azure-typespec-http-client-csharp-emitter-package.json
+++ b/eng/azure-typespec-http-client-csharp-emitter-package.json
@@ -1,17 +1,17 @@
{
"main": "dist/src/index.js",
"dependencies": {
- "@azure-typespec/http-client-csharp": "1.0.0-alpha.20250908.4"
+ "@azure-typespec/http-client-csharp": "1.0.0-alpha.20250912.2"
},
"devDependencies": {
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.0",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/versioning": "0.73.0"
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
+ "@typespec/compiler": "1.4.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/versioning": "0.74.0"
}
}
\ No newline at end of file
diff --git a/eng/azure-typespec-http-client-csharp-mgmt-emitter-package-lock.json b/eng/azure-typespec-http-client-csharp-mgmt-emitter-package-lock.json
index f064fb9ac8c4..ca3e3820c50a 100644
--- a/eng/azure-typespec-http-client-csharp-mgmt-emitter-package-lock.json
+++ b/eng/azure-typespec-http-client-csharp-mgmt-emitter-package-lock.json
@@ -5,39 +5,39 @@
"packages": {
"": {
"dependencies": {
- "@azure-typespec/http-client-csharp-mgmt": "1.0.0-alpha.20250902.3"
+ "@azure-typespec/http-client-csharp-mgmt": "1.0.0-alpha.20250917.2"
},
"devDependencies": {
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.0",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.0",
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
"@azure-tools/typespec-liftr-base": "0.8.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/versioning": "0.73.0"
+ "@typespec/compiler": "1.4.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/versioning": "0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-core": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.59.0.tgz",
- "integrity": "sha512-3vTWDTSR+P0qeyFcOKTgXortNOeA3nsyKTPpZqfFZVTtNFiiO17UWAM2Eg3i0IpNQ3qxMMAksIkwt1bqltTDqA==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.60.0.tgz",
+ "integrity": "sha512-Pmm7blxnEZZ7lhMJWWsiIqMrFthaCK6uu7f+ONN7dq0Mjc/O9w8+43tAIXwnGz1OKAWmiToh3EDbaxeWyt/FhQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/rest": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/rest": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-resource-manager": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.59.0.tgz",
- "integrity": "sha512-q0UkBnwWE4+9ivAkwAOOrDF9kvSb+qRIvMXJdUlqGfwFqDkOvQFwHSzSDeL/mBNK2fB9NIePKPFjDGP9lpC0vQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.60.0.tgz",
+ "integrity": "sha512-u0gqgSO5lIcpZN11MBAmRnR7kM1eoBLO8cKB86bXrxLt2vAkYpuL4hWp0A+QJjQy/YI5rrijeBF0visqBJnR4A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -48,34 +48,34 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/versioning": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-rulesets": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.59.0.tgz",
- "integrity": "sha512-+eKYH25ptj6SZHT+/YfxrX+g6HMAQQTphmHmqOoRCbbfPaE8l855OaDrwEgh5NDLV8WXnHpzTNI0dsYipEp10g==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.60.0.tgz",
+ "integrity": "sha512-4sx9StBWkmnBfLJ9b23RSwCs0TkTElaU9+6a/cS6JS0F7UggP/KLQd6LG59D0u9ByXM2x9pvYPO8l/K7UOXoPg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "^0.59.0",
- "@azure-tools/typespec-client-generator-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "^0.60.0",
+ "@azure-tools/typespec-client-generator-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@azure-tools/typespec-client-generator-core": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.59.0.tgz",
- "integrity": "sha512-5+pVcOr7Uyq4IaZ3oLjLi8jnBuR+t/B8hQF4CZo+goe/uK+WkmDfw1TlY14G2ve7W7v8m9+Sk2nil6bN1uHWEQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.60.0.tgz",
+ "integrity": "sha512-JV9uiqxDCzVVFeMctm4ebmUI4982B3dCdKx0nmonjfRf9a2/MXilEKExPIaNVR3ZqbFPXM/IepheY8t9YZNqSQ==",
"license": "MIT",
"dependencies": {
"change-case": "~5.4.4",
@@ -86,16 +86,16 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/sse": "^0.73.0",
- "@typespec/streams": "^0.73.0",
- "@typespec/versioning": "^0.73.0",
- "@typespec/xml": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/sse": "^0.74.0",
+ "@typespec/streams": "^0.74.0",
+ "@typespec/versioning": "^0.74.0",
+ "@typespec/xml": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-liftr-base": {
@@ -105,21 +105,21 @@
"dev": true
},
"node_modules/@azure-typespec/http-client-csharp": {
- "version": "1.0.0-alpha.20250826.3",
- "resolved": "https://registry.npmjs.org/@azure-typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250826.3.tgz",
- "integrity": "sha512-SqorEOJQc38rpXNsz/H4GDHVhi5NvTb7I8qCoF3lSuAL9D0kcmutq56qarwsV0xHATnhB5TnUcwfDJLGWQNI0Q==",
+ "version": "1.0.0-alpha.20250912.2",
+ "resolved": "https://registry.npmjs.org/@azure-typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250912.2.tgz",
+ "integrity": "sha512-RImdae8o0zJRTVo2dOx8tLY7t59IqNjlaYuqSVvSoyJgEH9XT6Fb3MyhCUpKbnNfLUq/qAq2LdHsEeqSwrKWbw==",
"license": "MIT",
"dependencies": {
- "@typespec/http-client-csharp": "1.0.0-alpha.20250826.5"
+ "@typespec/http-client-csharp": "1.0.0-alpha.20250912.2"
}
},
"node_modules/@azure-typespec/http-client-csharp-mgmt": {
- "version": "1.0.0-alpha.20250902.3",
- "resolved": "https://registry.npmjs.org/@azure-typespec/http-client-csharp-mgmt/-/http-client-csharp-mgmt-1.0.0-alpha.20250902.3.tgz",
- "integrity": "sha512-exEqJj/OB0om0q2PGKpIsQUPxTlYAUkd/RJd82CxneQR0l7zlK3+zftaIrvuIGu3x7agWjzKWDKvkE4Wo529qg==",
+ "version": "1.0.0-alpha.20250917.2",
+ "resolved": "https://registry.npmjs.org/@azure-typespec/http-client-csharp-mgmt/-/http-client-csharp-mgmt-1.0.0-alpha.20250917.2.tgz",
+ "integrity": "sha512-9+4BH19MHoAPUJfUf/Pc7yYQyXHdBTaCBv4E9tH/l6uwlshAaTBT+pXpa1Kq9+JAXaDtjiNcyRom+vPx7+vu3A==",
"license": "MIT",
"dependencies": {
- "@azure-typespec/http-client-csharp": "1.0.0-alpha.20250826.3"
+ "@azure-typespec/http-client-csharp": "1.0.0-alpha.20250912.2"
}
},
"node_modules/@babel/code-frame": {
@@ -145,16 +145,25 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@inquirer/ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz",
+ "integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@inquirer/checkbox": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.2.tgz",
- "integrity": "sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.4.tgz",
+ "integrity": "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -170,12 +179,12 @@
}
},
"node_modules/@inquirer/confirm": {
- "version": "5.1.16",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz",
- "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==",
+ "version": "5.1.18",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.18.tgz",
+ "integrity": "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -191,14 +200,14 @@
}
},
"node_modules/@inquirer/core": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz",
- "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz",
+ "integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==",
"license": "MIT",
"dependencies": {
+ "@inquirer/ansi": "^1.0.0",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
"signal-exit": "^4.1.0",
@@ -218,13 +227,13 @@
}
},
"node_modules/@inquirer/editor": {
- "version": "4.2.18",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.18.tgz",
- "integrity": "sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==",
+ "version": "4.2.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.20.tgz",
+ "integrity": "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
- "@inquirer/external-editor": "^1.0.1",
+ "@inquirer/core": "^10.2.2",
+ "@inquirer/external-editor": "^1.0.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -240,12 +249,12 @@
}
},
"node_modules/@inquirer/expand": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.18.tgz",
- "integrity": "sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==",
+ "version": "4.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.20.tgz",
+ "integrity": "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
},
@@ -262,13 +271,13 @@
}
},
"node_modules/@inquirer/external-editor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz",
- "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz",
+ "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==",
"license": "MIT",
"dependencies": {
"chardet": "^2.1.0",
- "iconv-lite": "^0.6.3"
+ "iconv-lite": "^0.7.0"
},
"engines": {
"node": ">=18"
@@ -292,12 +301,12 @@
}
},
"node_modules/@inquirer/input": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.2.tgz",
- "integrity": "sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.4.tgz",
+ "integrity": "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -313,12 +322,12 @@
}
},
"node_modules/@inquirer/number": {
- "version": "3.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.18.tgz",
- "integrity": "sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==",
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.20.tgz",
+ "integrity": "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -334,14 +343,14 @@
}
},
"node_modules/@inquirer/password": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.18.tgz",
- "integrity": "sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==",
+ "version": "4.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.20.tgz",
+ "integrity": "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
- "@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2"
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
+ "@inquirer/type": "^3.0.8"
},
"engines": {
"node": ">=18"
@@ -356,21 +365,21 @@
}
},
"node_modules/@inquirer/prompts": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.4.tgz",
- "integrity": "sha512-MuxVZ1en1g5oGamXV3DWP89GEkdD54alcfhHd7InUW5BifAdKQEK9SLFa/5hlWbvuhMPlobF0WAx7Okq988Jxg==",
+ "version": "7.8.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.6.tgz",
+ "integrity": "sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==",
"license": "MIT",
"dependencies": {
- "@inquirer/checkbox": "^4.2.2",
- "@inquirer/confirm": "^5.1.16",
- "@inquirer/editor": "^4.2.18",
- "@inquirer/expand": "^4.0.18",
- "@inquirer/input": "^4.2.2",
- "@inquirer/number": "^3.0.18",
- "@inquirer/password": "^4.0.18",
- "@inquirer/rawlist": "^4.1.6",
- "@inquirer/search": "^3.1.1",
- "@inquirer/select": "^4.3.2"
+ "@inquirer/checkbox": "^4.2.4",
+ "@inquirer/confirm": "^5.1.18",
+ "@inquirer/editor": "^4.2.20",
+ "@inquirer/expand": "^4.0.20",
+ "@inquirer/input": "^4.2.4",
+ "@inquirer/number": "^3.0.20",
+ "@inquirer/password": "^4.0.20",
+ "@inquirer/rawlist": "^4.1.8",
+ "@inquirer/search": "^3.1.3",
+ "@inquirer/select": "^4.3.4"
},
"engines": {
"node": ">=18"
@@ -385,12 +394,12 @@
}
},
"node_modules/@inquirer/rawlist": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.6.tgz",
- "integrity": "sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.8.tgz",
+ "integrity": "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
},
@@ -407,12 +416,12 @@
}
},
"node_modules/@inquirer/search": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.1.tgz",
- "integrity": "sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.3.tgz",
+ "integrity": "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
@@ -430,15 +439,15 @@
}
},
"node_modules/@inquirer/select": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.2.tgz",
- "integrity": "sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.4.tgz",
+ "integrity": "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -530,9 +539,9 @@
}
},
"node_modules/@typespec/compiler": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.3.0.tgz",
- "integrity": "sha512-OqpoNP3C2y8riA6C5RofPMvmj9jNiGyyhde0tM2ZE7IBOv7BBaTDqw4CJD22YnC8JEilRfPmvdVCViNrPHEjrA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.4.0.tgz",
+ "integrity": "sha512-/AFiU3ImuhH/vHKzSGv7I2peewdJ7YLhgMCfFDNk6Ae0a5Ylrc8R1GOATVilisEPBFG9lnjHn3uUcyaZs5VWRw==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "~7.27.1",
@@ -562,29 +571,29 @@
}
},
"node_modules/@typespec/events": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.73.0.tgz",
- "integrity": "sha512-etlhp86amDaElD/UX27u9I4O58zREov73HkkV3xbdTWpv2RqOKyD3mkyGAWsW3hKaGVIxwHOvKcOZ2j+b07Gpw==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.74.0.tgz",
+ "integrity": "sha512-CY6JTtheMKAUlxiPmwx2fLIAWEwezsXmQYUMRhyuW44Q73unQIkexE43LUnNWOJSZckYucqUp+ihXh7jxzWeVQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/http": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.3.0.tgz",
- "integrity": "sha512-4W3KsmBHZGgECVbvyh7S7KQG06948XyVVzae+UbVDDxoUj/x4Ry0AXw3q4HmzB2BVhxw6JBrwBuVa5mxjVMzdw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.4.0.tgz",
+ "integrity": "sha512-Y0PDDtBu+oZnwivfhbL0lN6Mk3QiCxZ66DgB5kFjcgKNpnXf0u440PPyaL42a8lbchzz5lVwz+cinyIMI89FIQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
},
"peerDependenciesMeta": {
"@typespec/streams": {
@@ -593,99 +602,98 @@
}
},
"node_modules/@typespec/http-client-csharp": {
- "version": "1.0.0-alpha.20250826.5",
- "resolved": "https://registry.npmjs.org/@typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250826.5.tgz",
- "integrity": "sha512-KE1t7KqgT5pjrlvXUDChBO/9dExXxSF+ZjdVkqMn2w/tNHWrefYwkZ2QZ6lU3Xeix0JhPeY18LVF7L14MB6lIQ==",
+ "version": "1.0.0-alpha.20250912.2",
+ "resolved": "https://registry.npmjs.org/@typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250912.2.tgz",
+ "integrity": "sha512-N3rMrsOj1jXw8dMBCvcNelLEGw+y3divFUAgYOMLM+1xYYhs34525MS7z2L8k2wLv81crW40BwRC7OzQnDjeDQ==",
"license": "MIT",
"peerDependencies": {
- "@azure-tools/typespec-azure-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@azure-tools/typespec-client-generator-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": ">=0.73.0 <0.74.0 || ~0.74.0-0",
- "@typespec/streams": ">=0.73.0 <0.74.0 || ~0.74.0-0",
- "@typespec/versioning": ">=0.73.0 <0.74.0 || ~0.74.0-0"
+ "@azure-tools/typespec-client-generator-core": ">=0.60.0 < 0.61.0 || ~0.61.0-0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": ">=0.74.0 <0.75.0 || ~0.75.0-0",
+ "@typespec/streams": ">=0.74.0 <0.75.0 || ~0.75.0-0",
+ "@typespec/versioning": ">=0.74.0 <0.75.0 || ~0.75.0-0"
}
},
"node_modules/@typespec/openapi": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.3.0.tgz",
- "integrity": "sha512-BSeshjCZQodVGyVHn7ytcUeIcUGjqbG2Ac0NLOQaaKnISVrhTWNcgo5aFTqxAa24ZL/EuhqlSauLyYce2EV9fw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.4.0.tgz",
+ "integrity": "sha512-ZfrCsmZG/Zt1laLaWC0pKvnZr4jqrm/YS/YuZe/gVrSYKBxGLopXle7H0wrSSMYkIVCNCLiC68/HqRxV6XTfoA==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/rest": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.73.0.tgz",
- "integrity": "sha512-28hgFGvreBg34Xuguw+E++pQC/kbRxy1Bpx/9nU7x87Ly6ykns3lpx74gjY9ByE8VYKVbXtC7lzdnp19DRSjIQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.74.0.tgz",
+ "integrity": "sha512-dE+Xmv01AQ7m8jUvEbGsUQLSVo3sLzMpnHRbQEOnJX42oDqtIsz/2GEOXKQpNm1AKBISK66E2FFB5boz999Ziw==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/sse": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.73.0.tgz",
- "integrity": "sha512-WTnRJ1b1M3RPzlHxhnK9sh6+AGKPKWpuA0TSAqzyxb/uRHFYLNeoDKPOnlQ749SJ8lJz71Oh0nUsP3vB0EzO6Q==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.74.0.tgz",
+ "integrity": "sha512-+m7/elbGp7q/kqCGaBRj8v8wVMWKVEV8AsZOjf1PY2MkMUrux9ivOijBIktgoLBXDn+ocO2qVfFrHWG2slZSaw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
}
},
"node_modules/@typespec/streams": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.73.0.tgz",
- "integrity": "sha512-pL4xffHXEIhBQKPlB9L4AKuM0bn44WsGKjnz91wa6wBtP/CbsPrGQicof0Z7GPGdddtDi4G8PWGmJtVFw53V9g==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.74.0.tgz",
+ "integrity": "sha512-LIWizQgzGt8qN8ravte4DrPLPNOk9ge73bV9Us2TOECagTVQWwgMVy7+o/Beff3sOLQO/sEOwfzvmnNpSlauHg==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/versioning": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.73.0.tgz",
- "integrity": "sha512-cfFvzTsvsu4VpdwZcRULr3p/fawKZnjiJClQxlLcYW0dLs/5k5jh7l0YyPkYvgkOcncUrIB6hIu82tQhKrMDKQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.74.0.tgz",
+ "integrity": "sha512-eFIa23tycWJgv3Lxyu6jUlRi02dhtQE4Jjx3Ui5vEbwHW8pMEzuyF7ALt1c+V9HOLkfDkS4dJkiOVIoikZHPvQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/xml": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.73.0.tgz",
- "integrity": "sha512-vlMM8/L22O/PbI3ovj3qoww/3Z8wNwn7og4jzlGRM93jZBJvrOeDSwZo1Dc4rMJyU6KfjPkP3/l5TLbgW8x0zA==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.74.0.tgz",
+ "integrity": "sha512-NiXatOfpyPxU94f2tEBAygxJeS7CvIr5lvnfZkC0tUHwkiJeLrI1jt13kDVB5CE6zNK6I3d7c37xsQs9WXGFAQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/ajv": {
@@ -704,21 +712,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -800,9 +793,9 @@
}
},
"node_modules/cliui/node_modules/ansi-regex": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
- "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -812,9 +805,9 @@
}
},
"node_modules/cliui/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -847,9 +840,9 @@
}
},
"node_modules/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
@@ -862,9 +855,9 @@
}
},
"node_modules/cliui/node_modules/wrap-ansi": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
- "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.2.1",
@@ -992,9 +985,9 @@
}
},
"node_modules/get-east-asian-width": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.1.tgz",
- "integrity": "sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -1036,15 +1029,19 @@
}
},
"node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/ignore": {
@@ -1423,18 +1420,6 @@
"node": ">=8.0"
}
},
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
@@ -1561,9 +1546,9 @@
}
},
"node_modules/yargs/node_modules/ansi-regex": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
- "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -1596,9 +1581,9 @@
}
},
"node_modules/yargs/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
diff --git a/eng/azure-typespec-http-client-csharp-mgmt-emitter-package.json b/eng/azure-typespec-http-client-csharp-mgmt-emitter-package.json
index 707d5ede0bf3..ab03b629a592 100644
--- a/eng/azure-typespec-http-client-csharp-mgmt-emitter-package.json
+++ b/eng/azure-typespec-http-client-csharp-mgmt-emitter-package.json
@@ -1,18 +1,18 @@
{
"main": "dist/src/index.js",
"dependencies": {
- "@azure-typespec/http-client-csharp-mgmt": "1.0.0-alpha.20250902.3"
+ "@azure-typespec/http-client-csharp-mgmt": "1.0.0-alpha.20250917.2"
},
"devDependencies": {
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.0",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.0",
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
"@azure-tools/typespec-liftr-base": "0.8.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/versioning": "0.73.0"
+ "@typespec/compiler": "1.4.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/versioning": "0.74.0"
}
}
\ No newline at end of file
diff --git a/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md b/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md
index fa55d8edb0ff..6cf05521925b 100644
--- a/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md
+++ b/eng/common/instructions/azsdk-tools/create-release-plan.instructions.md
@@ -1,5 +1,10 @@
+> **Important Note for LLM**
+> Backend processes may use Azure DevOps work item data as needed. However, do **not** mention or display the work item link/URL, or any reference to Azure DevOps work item resources directly in conversation with the user.
+> All manual updates to an existing release plan must be made through the [Release Planner Tool](https://aka.ms/sdk-release-planner) to ensure proper tracking and validation.
+> Only provide release plan details such as **Release Plan Link** and **Release Plan ID** to the user
+
# Release Plan Creation Process
-You goal is to create a valid release plan. You must prompt user to provide all required information and all input must match the format and requirement mentioned in step 3 below.
+Your goal is to create a valid release plan. You must prompt user to provide all required information and all input must match the format and requirement mentioned in step 3 below.
Follow these steps in order to create or manage a release plan for an API specification pull request:
## Step 1: Validate Prerequisites
diff --git a/eng/common/instructions/azsdk-tools/create-sdk-locally.instructions.md b/eng/common/instructions/azsdk-tools/create-sdk-locally.instructions.md
deleted file mode 100644
index 20cc2f31bd5d..000000000000
--- a/eng/common/instructions/azsdk-tools/create-sdk-locally.instructions.md
+++ /dev/null
@@ -1,32 +0,0 @@
-Your goal is to help guide the user to create SDK locally for TypeSpec changes. This is currently supported for **Python** only. User can generate SDK for other languages using SDK generation pipeline.
-## Steps to create Python SDK locally from TypeSpec
-### Step 1: Check for existing azure-sdk-for-python repository
-- Prompt the user to provide the path to their cloned azure-sdk-for-python repository.
-### Step 2: Validate repository path
-- If the user provides a path to the azure-sdk-for-python repository:
- - Check if the repository exists at the specified path.
- - If the repository exists, proceed to Step 5.
-### Step 3: Guide user to set up azure-sdk-for-python repository (if not found)
-- If the user does not have the repository or the path is invalid:
- - Go to parent directory of current repo root path.
- - Provide instructions to fork https://github.com/Azure/azure-sdk-for-python repository to the user's GitHub account.
- - Provide instructions to clone the forked repository to the local machine:
- ```bash
- git clone https://github.com//azure-sdk-for-python.git
- ```
-### Step 4: Set repository path
-- Consider the cloned path as the path to the azure-sdk-for-python repository.
-### Step 5: Open azure-sdk-for-python repository in VSCode
-- Do not ask the user to run tsp compile.
-- Prompt user to open the azure-sdk-for-python repository in VSCode.
-### Step 6: Provide SDK generation instructions
-- Inform user to use the following prompt to start SDK generation using GitHub Copilot agent:
- ```
- "Help me generate SDK for Python from TypeSpec API specification for project ."
- ```
-### Step 7: Inform user about SDK generation
-- Inform user to provide link to SDK pull request if they generate SDK locally and created a pull request for it. SDK generation
-step below will skip it for the language and reuse the pull request link provided by the user.
-- In some cases, user will come back and make more changes to TypeSpec so start the process from step 1 again.
-- If user provides a link to SDK pull request then link SDK pull request to release plan if a release plan already exists and skip SDK generation for that language.
-- If a release plan does not exits then link the SDK pull request when release plan is created.
diff --git a/eng/common/instructions/azsdk-tools/local-sdk-workflow.instructions.md b/eng/common/instructions/azsdk-tools/local-sdk-workflow.instructions.md
new file mode 100644
index 000000000000..0edadd191604
--- /dev/null
+++ b/eng/common/instructions/azsdk-tools/local-sdk-workflow.instructions.md
@@ -0,0 +1,119 @@
+---
+description: "Guide the user to generate and build SDKs locally for a TypeSpec based API spec"
+---
+
+# Goal
+
+Help the user generate and build SDKs locally from TypeSpec API specifications using the `azure-sdk-mcp` tools.
+
+---
+
+## Part A: Generate SDK Locally
+
+### Step 1: Outline workflow
+
+**Goal**: Ensure the user understands the overall SDK generation and build process before starting.
+**Actions**:
+
+- Present the high-level steps involved in generating and building SDK locally:
+ 1. Select target language
+ 2. Verify SDK repository
+ 3. Validate repository path
+ 4. Identify path to configuration file
+ 5. Generate SDK using `azsdk_package_generate_code` MCP tool
+ 6. Identify SDK project path
+ 7. Build/Compile SDK using `azsdk_package_build_code` MCP tool
+- Ask the user to confirm readiness to proceed.
+
+---
+
+### Step 2: Select language
+
+**Goal**: Confirm the target language for SDK generation.
+**Actions**:
+
+- Prompt user to choose one of the supported languages:
+ - .NET
+ - Java
+ - JavaScript
+ - Python
+ - Go
+- Validate input against the allowed list.
+
+---
+
+### Step 3: Verify SDK repository
+
+**Goal**: Ensure the correct Azure SDK language repository is available locally.
+**Actions**:
+
+- Prompt user to provide the path to their **locally cloned repository** for the selected language.
+- Note: The **local folder name can be arbitrary**, but the repository must have originated from one of the official Azure SDK repositories:
+ - `azure-sdk-for-net` (.NET)
+ - `azure-sdk-for-java` (Java)
+ - `azure-sdk-for-js` (JavaScript)
+ - `azure-sdk-for-python` (Python)
+ - `azure-sdk-for-go` (Go)
+- If the repository is not cloned → instruct user to clone the appropriate remote repository from GitHub.
+- MCP tool will automatically validate the remote origin and repository structure.
+
+---
+
+### Step 4: Validate repository path
+
+**Actions**:
+
+- Check if the provided repository path exists and matches the selected SDK language repository.
+- If invalid → prompt user to re-enter a valid path.
+
+---
+
+### Step 5: Identify path to configuration file
+
+**Goal**: Determine the correct path to the TypeSpec configuration file based on the working context.
+**Actions**:
+
+- **Scenario A: Working in a repository cloned from `azure-rest-api-specs`**
+ - Identify the path to `tspconfig.yaml` (local path or HTTPS URL).
+ - The local folder name can be arbitrary; the MCP tool will validate that the remote origin URL points to the official `azure-rest-api-specs` repository.
+ - Example paths (pointing directly to tspconfig.yaml):
+ - `/home/usr/azure-rest-api-specs/specification/contosowidgetmanager/Contoso.Management/tspconfig.yaml`
+ - `https://github.com/Azure/azure-rest-api-specs/blob/4af373fc5826cf5a2365a20dde01c4b2efde48f0/specification/contosowidgetmanager/Contoso.Management/tspconfig.yaml`
+
+- **Scenario B: Working in one of the official Azure SDK language repositories**
+ (i.e., originally cloned from `azure-sdk-for-net`, `azure-sdk-for-java`, `azure-sdk-for-js`, `azure-sdk-for-python`, `azure-sdk-for-go`)
+ - Identify the path to `tsp-location.yaml`.
+ - The local folder name can be arbitrary; MCP tool will validate the remote origin URL.
+ - Example path:
+ `/home/usr/azure-sdk-for-net/sdk/contoso/Azure.ResourceManager.Contoso/tsp-location.yaml`
+
+---
+
+### Step 6: Generate SDK
+
+**Actions**:
+
+- Run `azsdk_package_generate_code` MCP tool to generate the SDK locally.
+
+---
+
+## Part B: Build / Compile SDK Locally
+
+### Step 1: Identify SDK project path
+
+**Goal**: Locate the generated SDK project directory for building/compiling.
+**Actions**:
+
+- Find the project directory inside the selected Azure SDK language repository.
+- Typical structure:
+ `sdk/{service-name}/{package-name}/`
+- Example:
+ `/path/to/azure-sdk-for-net/contoso/Azure.ResourceManager.Contoso/`
+
+---
+
+### Step 2: Build/Compile the SDK
+
+**Actions**:
+
+- Run `azsdk_package_build_code` MCP tool to compile the SDK in the identified project directory.
diff --git a/eng/common/instructions/azsdk-tools/sdk-details-in-release-plan.instructions.md b/eng/common/instructions/azsdk-tools/sdk-details-in-release-plan.instructions.md
index d6574bb8bd95..c88a598ed1a9 100644
--- a/eng/common/instructions/azsdk-tools/sdk-details-in-release-plan.instructions.md
+++ b/eng/common/instructions/azsdk-tools/sdk-details-in-release-plan.instructions.md
@@ -5,13 +5,16 @@ description: 'Identify languages configured in the TypeSpec project and add it t
**Goal**: Identify languages configured in the TypeSpec project and generate the json object with language and package name.
1. Identify the language emitter configuration in the `tspconfig.yaml` file in the TypeSpec project root.
2. Identify the package name or namespace for each language emitter.
+ - For Java and Python, use `emitter-output-dir` for package name if it exists. Otherwise use `package-dir` to get the package name as fallback approach.
+ - For .NET, use namespace property to get package name.
+ - For JavaScript, use `packagedetails:name` property to get package name.
+ - For Go, use module name and remove `github.com/Azure/azure-sdk-for-go/` to get package name
3. Map the language name in emitter to one of the following in Pascal case(except .NET):
- .NET
- Java
- Python
- JavaScript
- Go
-4. Remove `github.com/Azure/azure-sdk-for-go/` from Go package name.
4. Create a JSON array object with the following structure:
```json
[
diff --git a/eng/common/instructions/azsdk-tools/typespec-docs.instructions.md b/eng/common/instructions/azsdk-tools/typespec-docs.instructions.md
new file mode 100644
index 000000000000..314555691f74
--- /dev/null
+++ b/eng/common/instructions/azsdk-tools/typespec-docs.instructions.md
@@ -0,0 +1,11 @@
+Your goal is to provide the most up-to-date documentation on the TypeSpec language, core libraries, and writing Azure services and clients in TypeSpec. Whenever a user asks a question about how something should be written in TypeSpec, you should use the documentation links below to pinpoint the most relevant and accurate information.
+
+## TypeSpec Azure
+
+- https://azure.github.io/typespec-azure/docs/llms.txt contains an index of up-to-date documentation for TypeSpec Azure libraries, including how to write service specifications for Azure Resource Manager (ARM) and Azure Data Plane services, as well as how to customize generated clients.
+- Always refer to https://azure.github.io/typespec-azure/docs/llms.txt when a user asks TypeSpec related questions in case there is existing documentation that can help answer them. This also applies when a user asks to make changes to TypeSpec specifications.
+
+## TypeSpec documentation
+
+- https://typespec.io/docs/llms.txt contains an index of up-to-date documentation for TypeSpec language basics and core libraries, including how concepts like visibility and versioning work.
+- Always refer to https://typespec.io/docs/llms.txt when a user asks TypeSpec related questions that aren't covered by the TypeSpec Azure topics.
diff --git a/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md b/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md
index b8a8eb6b90ae..dbeb8cb8f157 100644
--- a/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md
+++ b/eng/common/instructions/azsdk-tools/typespec-to-sdk.instructions.md
@@ -1,7 +1,11 @@
---
description: 'Generate SDKs from TypeSpec'
---
-Your goal is to guide user through the process of generating SDKs from TypeSpec projects. Show all the high level steps to the user to ensure they understand the flow. Use the provided tools to perform actions and gather information as needed.
+Your goal is to guide the user through the process of generating SDKs from TypeSpec projects. **Before starting**, show all the high level steps to the user and ask:
+
+> "Would you like to begin the SDK generation process now? (yes/no)"
+
+Wait for the user to respond with a confirmation before proceeding to Step 1. Use the provided tools to perform actions and gather information as needed.
## Step 1: Identify TypeSpec Project
**Goal**: Locate the TypeSpec project root path
@@ -53,10 +57,12 @@ Your goal is to guide user through the process of generating SDKs from TypeSpec
**Goal**: Determine how to generate SDKs
**Actions**:
1. Present options: "How would you like to generate SDKs?"
- - Option A: "Generate SDK locally". This is currently supported only for Python. Do not recommend this for other languages.
+ - Option A: "Generate SDK locally".
- Option B: "Use SDK generation pipeline"
2. Based on selection:
- - If Option A: Refer to #file:create-sdk-locally.instructions.md and then proceed to Step 6
+ - If Option A:
+ - Follow #file:./local-sdk-workflow.instructions.md to generate and compile the SDK.
+ - After SDK has been generated, to continue the SDK release, users can create the SDK pull request manually then proceed to Step 9.
- If Option B: Continue to Step 6
**Success Criteria**: SDK generation method selected
diff --git a/eng/common/scripts/Helpers/Resource-Helpers.ps1 b/eng/common/scripts/Helpers/Resource-Helpers.ps1
index 546c5dd9aaed..f124ff217d40 100644
--- a/eng/common/scripts/Helpers/Resource-Helpers.ps1
+++ b/eng/common/scripts/Helpers/Resource-Helpers.ps1
@@ -38,6 +38,32 @@ function Get-PurgeableGroupResources {
$purgeableResources += $deletedKeyVaults
}
+ Write-Verbose "Retrieving AI resources from resource group $ResourceGroupName"
+
+ # Get AI resources that will go into soft-deleted state when the resource group is deleted
+ $subscriptionId = (Get-AzContext).Subscription.Id
+ $aiResources = @()
+
+ # Get active Cognitive Services accounts from the resource group
+ $response = Invoke-AzRestMethod -Method GET -Path "/subscriptions/$subscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.CognitiveServices/accounts?api-version=2024-10-01" -ErrorAction Ignore
+ if ($response.StatusCode -ge 200 -and $response.StatusCode -lt 300 -and $response.Content) {
+ $content = $response.Content | ConvertFrom-Json
+
+ foreach ($r in $content.value) {
+ $aiResources += [pscustomobject] @{
+ AzsdkResourceType = "Cognitive Services ($($r.kind))"
+ AzsdkName = $r.name
+ Name = $r.name
+ Id = $r.id
+ }
+ }
+ }
+
+ if ($aiResources) {
+ Write-Verbose "Found $($aiResources.Count) AI resources to potentially purge after resource group deletion."
+ $purgeableResources += $aiResources
+ }
+
return $purgeableResources
}
@@ -94,6 +120,29 @@ function Get-PurgeableResources {
}
catch { }
+ Write-Verbose "Retrieving deleted Cognitive Services accounts from subscription $subscriptionId"
+
+ # Get deleted Cognitive Services accounts for the current subscription.
+ $response = Invoke-AzRestMethod -Method GET -Path "/subscriptions/$subscriptionId/providers/Microsoft.CognitiveServices/deletedAccounts?api-version=2024-10-01" -ErrorAction Ignore
+ if ($response.StatusCode -ge 200 -and $response.StatusCode -lt 300 -and $response.Content) {
+ $content = $response.Content | ConvertFrom-Json
+
+ $deletedCognitiveServices = @()
+ foreach ($r in $content.value) {
+ $deletedCognitiveServices += [pscustomobject] @{
+ AzsdkResourceType = "Cognitive Services ($($r.kind))"
+ AzsdkName = $r.name
+ Name = $r.name
+ Id = $r.id
+ }
+ }
+
+ if ($deletedCognitiveServices) {
+ Write-Verbose "Found $($deletedCognitiveServices.Count) deleted Cognitive Services accounts to potentially purge."
+ $purgeableResources += $deletedCognitiveServices
+ }
+ }
+
return $purgeableResources
}
@@ -117,16 +166,18 @@ filter Remove-PurgeableResources {
}
$subscriptionId = (Get-AzContext).Subscription.Id
+ $verboseFlag = $VerbosePreference -eq 'Continue'
foreach ($r in $Resource) {
- Log "Attempting to purge $($r.AzsdkResourceType) '$($r.AzsdkName)'"
switch ($r.AzsdkResourceType) {
'Key Vault' {
if ($r.EnablePurgeProtection) {
- Write-Warning "Key Vault '$($r.VaultName)' has purge protection enabled and may not be purged until $($r.ScheduledPurgeDate)"
+ Write-Verbose "Key Vault '$($r.VaultName)' has purge protection enabled and may not be purged until $($r.ScheduledPurgeDate)" -Verbose:$verboseFlag
continue
}
+ Log "Attempting to purge $($r.AzsdkResourceType) '$($r.AzsdkName)'"
+
# Use `-AsJob` to start a lightweight, cancellable job and pass to `Wait-PurgeableResoruceJob` for consistent behavior.
Remove-AzKeyVault -VaultName $r.VaultName -Location $r.Location -InRemovedState -Force -ErrorAction Continue -AsJob `
| Wait-PurgeableResourceJob -Resource $r -Timeout $Timeout -PassThru:$PassThru
@@ -134,16 +185,18 @@ filter Remove-PurgeableResources {
'Managed HSM' {
if ($r.EnablePurgeProtection) {
- Write-Warning "Managed HSM '$($r.Name)' has purge protection enabled and may not be purged until $($r.ScheduledPurgeDate)"
+ Write-Verbose "Managed HSM '$($r.Name)' has purge protection enabled and may not be purged until $($r.ScheduledPurgeDate)" -Verbose:$verboseFlag
continue
}
+ Log "Attempting to purge $($r.AzsdkResourceType) '$($r.AzsdkName)'"
+
# Use `GetNewClosure()` on the `-Action` ScriptBlock to make sure variables are captured.
Invoke-AzRestMethod -Method POST -Path "/subscriptions/$subscriptionId/providers/Microsoft.KeyVault/locations/$($r.Location)/deletedManagedHSMs/$($r.Name)/purge?api-version=2023-02-01" -ErrorAction Ignore -AsJob `
| Wait-PurgeableResourceJob -Resource $r -Timeout $Timeout -PassThru:$PassThru -Action {
param ( $response )
if ($response.StatusCode -ge 200 -and $response.StatusCode -lt 300) {
- Write-Warning "Successfully requested that Managed HSM '$($r.Name)' be purged, but may take a few minutes before it is actually purged."
+ Write-Verbose "Successfully requested that Managed HSM '$($r.Name)' be purged, but may take a few minutes before it is actually purged." -Verbose:$verboseFlag
}
elseif ($response.Content) {
$content = $response.Content | ConvertFrom-Json
@@ -155,6 +208,22 @@ filter Remove-PurgeableResources {
}.GetNewClosure()
}
+ { $_.StartsWith('Cognitive Services') }
+ {
+ Log "Attempting to purge $($r.AzsdkResourceType) '$($r.AzsdkName)'"
+ # Use `GetNewClosure()` on the `-Action` ScriptBlock to make sure variables are captured.
+ Invoke-AzRestMethod -Method DELETE -Path "$($r.id)?api-version=2024-10-01" -ErrorAction Ignore -AsJob `
+ | Wait-PurgeableResourceJob -Resource $r -Timeout $Timeout -PassThru:$PassThru -Action {
+ param ( $response )
+
+ if ($response.StatusCode -eq 200 -or $response.StatusCode -eq 202 -or $response.StatusCode -eq 204) {
+ Write-Verbose "Successfully purged $($r.AzsdkResourceType) '$($r.Name)'." -Verbose:$verboseFlag
+ } else {
+ Write-Warning "Failed purging $($r.AzsdkResourceType) '$($r.Name)' with status code $($response.StatusCode)."
+ }
+ }.GetNewClosure()
+ }
+
default {
Write-Warning "Cannot purge $($r.AzsdkResourceType) '$($r.AzsdkName)'. Add support to https://github.com/Azure/azure-sdk-tools/blob/main/eng/common/scripts/Helpers/Resource-Helpers.ps1."
}
diff --git a/eng/common/scripts/Prepare-Release.ps1 b/eng/common/scripts/Prepare-Release.ps1
old mode 100644
new mode 100755
index e82c5982ac96..b3990671deea
--- a/eng/common/scripts/Prepare-Release.ps1
+++ b/eng/common/scripts/Prepare-Release.ps1
@@ -1,3 +1,5 @@
+#!/usr/bin/env pwsh
+
#Requires -Version 6.0
<#
diff --git a/eng/common/tsp-client/README.md b/eng/common/tsp-client/README.md
new file mode 100644
index 000000000000..c0a6076a4b87
--- /dev/null
+++ b/eng/common/tsp-client/README.md
@@ -0,0 +1,80 @@
+# TypeSpec Client Generator CLI
+
+This directory contains npm package definitions for `@azure-tools/typespec-client-generator-cli` (tsp-client) with pinned versions to ensure reproducible builds across environments.
+
+## Files
+
+- **`package.json`** - npm package definition with pinned tsp-client version
+- **`package-lock.json`** - Lock file ensuring exact dependency versions
+
+## Prerequisites
+
+- **Node.js** (with npm) - Required to install and run tsp-client
+
+## Installation
+
+### Install dependencies
+
+```bash
+# Navigate to this directory
+cd eng/common/tsp-client
+
+# Install dependencies
+npm ci
+```
+
+## Usage
+
+After installation, you can run tsp-client by navigating to the directory and using npm exec:
+
+```bash
+cd eng/common/tsp-client
+
+# Get help
+npm exec --no -- tsp-client --help
+
+# Check version
+npm exec --no -- tsp-client version
+
+# Generate client code
+npm exec --no -- tsp-client generate --output-dir ./generated
+
+# Initialize a new project
+npm exec --no -- tsp-client init --tsp-config ./tspconfig.yaml
+```
+
+## CI/CD Best Practices
+
+```bash
+cd eng/common/tsp-client
+npm ci
+npm exec --no -- tsp-client init --update-if-exists --tsp-config https://github.com/Azure/azure-rest-api-specs/blob/dee71463cbde1d416c47cf544e34f7966a94ddcb/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml
+```
+
+## Package Management
+
+### Automatic Updates via Dependabot
+
+Dependabot is configured to automatically check for updates to `@azure-tools/typespec-client-generator-cli` daily and create pull requests with updated `package.json` and `package-lock.json` files. This ensures the package stays current with the latest versions while maintaining security through the PR review process.
+
+### Manual Version Updates
+
+If you need to manually update the tsp-client version:
+
+1. Edit `package.json` to update the version:
+
+ ```json
+ {
+ "dependencies": {
+ "@azure-tools/typespec-client-generator-cli": "0.28.1"
+ }
+ }
+ ```
+
+2. Update the lock file:
+
+ ```bash
+ npm install
+ ```
+
+3. Commit both `package.json` and `package-lock.json`
diff --git a/eng/common/tsp-client/package-lock.json b/eng/common/tsp-client/package-lock.json
new file mode 100644
index 000000000000..9016712410c3
--- /dev/null
+++ b/eng/common/tsp-client/package-lock.json
@@ -0,0 +1,2290 @@
+{
+ "name": "tools",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "@azure-tools/typespec-client-generator-cli": "0.28.1"
+ }
+ },
+ "node_modules/@autorest/codemodel": {
+ "version": "4.20.1",
+ "resolved": "https://registry.npmjs.org/@autorest/codemodel/-/codemodel-4.20.1.tgz",
+ "integrity": "sha512-MdI4G0EdQ8yOxGzgT1rCOXxXkCrUQLjVykOvdAyByIgHbnpRop1UzUQuuKmXO8gQPSy7xwYhnfVSgETbHIJZgg==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure-tools/codegen": "~2.10.1",
+ "js-yaml": "~4.1.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@autorest/core": {
+ "version": "3.10.8",
+ "resolved": "https://registry.npmjs.org/@autorest/core/-/core-3.10.8.tgz",
+ "integrity": "sha512-7tj+zPUYu42lrzOZUC2hNaH7Xt53IVaEbWzV23aEYzDhXF0zD9TTpVexFXKTT4idBV0njsAKEKjPMkmQuHLbgQ==",
+ "license": "MIT",
+ "bin": {
+ "autorest-core": "entrypoints/app.js",
+ "autorest-language-service": "entrypoints/language-service.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@autorest/extension-base": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@autorest/extension-base/-/extension-base-3.6.1.tgz",
+ "integrity": "sha512-FWfO6LM3p+R1dW87wnGdJsCpZw67/h1hj09LsQuY0ywKBKv9lrLAW6AlVPrFyvUUIaCMMgd01U6TifCz/FRG9g==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure-tools/codegen": "~2.10.1",
+ "js-yaml": "~4.1.0",
+ "vscode-jsonrpc": "^3.5.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@autorest/openapi-to-typespec": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/@autorest/openapi-to-typespec/-/openapi-to-typespec-0.11.10.tgz",
+ "integrity": "sha512-1bP26wuUioqHxhV11o48VthMCkOwHhiHwJ9ebaINf/NvVKU9YNTXbzStKUclS4vpRpk2Zb/VSmE1TZfAomI/mg==",
+ "license": "MIT",
+ "dependencies": {
+ "@autorest/codemodel": "~4.20.1",
+ "@autorest/extension-base": "~3.6.1",
+ "@azure-tools/codegen": "~2.10.1",
+ "@azure-tools/openapi": "~3.6.1",
+ "@typespec/prettier-plugin-typespec": "^1.4.0",
+ "change-case-all": "~2.1.0",
+ "lodash": "~4.17.20",
+ "pluralize": "^8.0.0",
+ "prettier": "~3.5.3"
+ }
+ },
+ "node_modules/@azure-tools/async-io": {
+ "version": "3.0.254",
+ "resolved": "https://registry.npmjs.org/@azure-tools/async-io/-/async-io-3.0.254.tgz",
+ "integrity": "sha512-X1C7XdyCuo50ch9FzKtTvmK18FgDxxf1Bbt3cSoknQqeDaRegHSSCO+zByq2YA4NvUzKXeZ1engh29IDxZXgpQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure-tools/tasks": "~3.0.255",
+ "proper-lockfile": "~2.0.1"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/@azure-tools/codegen": {
+ "version": "2.10.1",
+ "resolved": "https://registry.npmjs.org/@azure-tools/codegen/-/codegen-2.10.1.tgz",
+ "integrity": "sha512-fZfREKjQnBTscjObgK4LuyZNFaofoCNQDNz0jl1i8fYNwCM5EOF9BXwtEtobuEyCpPUNDxQ/KKO65eWzirqk4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure-tools/async-io": "~3.0.0",
+ "js-yaml": "~4.1.0",
+ "semver": "^7.7.2"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure-tools/json": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@azure-tools/json/-/json-1.3.1.tgz",
+ "integrity": "sha512-0f4kQ6c513ycuk0Z29Nm09D/3dQHrHkduUW8wsFR1QTQ5uqgdYaDWg5I4cZbA8OkOIrJG73TzB/3G0liVCQ+Fw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure-tools/jsonschema": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@azure-tools/jsonschema/-/jsonschema-1.3.1.tgz",
+ "integrity": "sha512-P4KnJzZJjCATcn3nRcF5MPja2wrPdP48Us643+0eqGtNBL4O20CFVEm6WFeFeR8JhvNCsZfeayHiE6VOspe1rg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure-tools/openapi": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@azure-tools/openapi/-/openapi-3.6.1.tgz",
+ "integrity": "sha512-vkIu0CUg09bzxqrlrNHdoOPu9AFhObp0FqG40M2WaF2dcVgLalsUc+wK5s4LpftlZAxcBmzVHna22JhI5/0X9g==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure-tools/json": "~1.3.1",
+ "@azure-tools/jsonschema": "~1.3.1"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/@azure-tools/tasks": {
+ "version": "3.0.255",
+ "resolved": "https://registry.npmjs.org/@azure-tools/tasks/-/tasks-3.0.255.tgz",
+ "integrity": "sha512-GjALNLz7kWMEdRVbaN5g0cJHNAr3XVTbP0611Mv2UzMgGL6FOhNZJK+oPHJKLDR8EEDZNnkwPlyi7B+INXUSQA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.12.0"
+ }
+ },
+ "node_modules/@azure-tools/typespec-autorest": {
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.60.0.tgz",
+ "integrity": "sha512-aIRr1e4g3irkjLTpxqzJ8BFnNFYwj4nlcG6cKGPuhNtiHhJgHjUhLVUNIW1A9O4jx+3RSErL9AkAl1ep+ZbiuA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "^0.60.0",
+ "@azure-tools/typespec-client-generator-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
+ }
+ },
+ "node_modules/@azure-tools/typespec-azure-core": {
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.60.0.tgz",
+ "integrity": "sha512-Pmm7blxnEZZ7lhMJWWsiIqMrFthaCK6uu7f+ONN7dq0Mjc/O9w8+43tAIXwnGz1OKAWmiToh3EDbaxeWyt/FhQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/rest": "^0.74.0"
+ }
+ },
+ "node_modules/@azure-tools/typespec-azure-resource-manager": {
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.60.0.tgz",
+ "integrity": "sha512-u0gqgSO5lIcpZN11MBAmRnR7kM1eoBLO8cKB86bXrxLt2vAkYpuL4hWp0A+QJjQy/YI5rrijeBF0visqBJnR4A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "change-case": "~5.4.4",
+ "pluralize": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
+ }
+ },
+ "node_modules/@azure-tools/typespec-client-generator-cli": {
+ "version": "0.28.1",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-cli/-/typespec-client-generator-cli-0.28.1.tgz",
+ "integrity": "sha512-OrC529UNZsMsn6A3kXFyLqWslhP+Ji1lGJna1FhNwfJClO0Pi/6yc3p6lbnMCDAq+gzsYkbfXRTdXpPXfd5m9A==",
+ "license": "MIT",
+ "dependencies": {
+ "@autorest/core": "^3.10.2",
+ "@autorest/openapi-to-typespec": ">=0.10.6 <1.0.0",
+ "@azure-tools/typespec-autorest": ">=0.53.0 <1.0.0",
+ "@azure/core-rest-pipeline": "^1.12.0",
+ "@types/yargs": "^17.0.32",
+ "autorest": "^3.7.1",
+ "chalk": "^5.3.0",
+ "dotenv": "^16.4.5",
+ "prompt-sync": "^4.2.0",
+ "simple-git": "^3.20.0",
+ "yaml": "^2.3.1",
+ "yargs": "^17.2.1"
+ },
+ "bin": {
+ "tsp-client": "cmd/tsp-client.js"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.6.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "1.0.0-rc.1 || >=1.0.0 <2.0.0"
+ }
+ },
+ "node_modules/@azure-tools/typespec-client-generator-core": {
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.60.0.tgz",
+ "integrity": "sha512-JV9uiqxDCzVVFeMctm4ebmUI4982B3dCdKx0nmonjfRf9a2/MXilEKExPIaNVR3ZqbFPXM/IepheY8t9YZNqSQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "change-case": "~5.4.4",
+ "pluralize": "^8.0.0",
+ "yaml": "~2.8.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/sse": "^0.74.0",
+ "@typespec/streams": "^0.74.0",
+ "@typespec/versioning": "^0.74.0",
+ "@typespec/xml": "^0.74.0"
+ }
+ },
+ "node_modules/@azure/abort-controller": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz",
+ "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@azure/core-auth": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz",
+ "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.1.2",
+ "@azure/core-util": "^1.13.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@azure/core-rest-pipeline": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz",
+ "integrity": "sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.1.2",
+ "@azure/core-auth": "^1.10.0",
+ "@azure/core-tracing": "^1.3.0",
+ "@azure/core-util": "^1.13.0",
+ "@azure/logger": "^1.3.0",
+ "@typespec/ts-http-runtime": "^0.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@azure/core-tracing": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz",
+ "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@azure/core-util": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz",
+ "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==",
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.1.2",
+ "@typespec/ts-http-runtime": "^0.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@azure/logger": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz",
+ "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@typespec/ts-http-runtime": "^0.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.27.1",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@inquirer/checkbox": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.2.tgz",
+ "integrity": "sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/figures": "^1.0.13",
+ "@inquirer/type": "^3.0.8",
+ "ansi-escapes": "^4.3.2",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/confirm": {
+ "version": "5.1.16",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz",
+ "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/type": "^3.0.8"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/core": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz",
+ "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/figures": "^1.0.13",
+ "@inquirer/type": "^3.0.8",
+ "ansi-escapes": "^4.3.2",
+ "cli-width": "^4.1.0",
+ "mute-stream": "^2.0.0",
+ "signal-exit": "^4.1.0",
+ "wrap-ansi": "^6.2.0",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/editor": {
+ "version": "4.2.18",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.18.tgz",
+ "integrity": "sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/external-editor": "^1.0.1",
+ "@inquirer/type": "^3.0.8"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/expand": {
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.18.tgz",
+ "integrity": "sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/type": "^3.0.8",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/external-editor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz",
+ "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "chardet": "^2.1.0",
+ "iconv-lite": "^0.6.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/figures": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz",
+ "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@inquirer/input": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.2.tgz",
+ "integrity": "sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/type": "^3.0.8"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/number": {
+ "version": "3.0.18",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.18.tgz",
+ "integrity": "sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/type": "^3.0.8"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/password": {
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.18.tgz",
+ "integrity": "sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/type": "^3.0.8",
+ "ansi-escapes": "^4.3.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/prompts": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.4.tgz",
+ "integrity": "sha512-MuxVZ1en1g5oGamXV3DWP89GEkdD54alcfhHd7InUW5BifAdKQEK9SLFa/5hlWbvuhMPlobF0WAx7Okq988Jxg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/checkbox": "^4.2.2",
+ "@inquirer/confirm": "^5.1.16",
+ "@inquirer/editor": "^4.2.18",
+ "@inquirer/expand": "^4.0.18",
+ "@inquirer/input": "^4.2.2",
+ "@inquirer/number": "^3.0.18",
+ "@inquirer/password": "^4.0.18",
+ "@inquirer/rawlist": "^4.1.6",
+ "@inquirer/search": "^3.1.1",
+ "@inquirer/select": "^4.3.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/rawlist": {
+ "version": "4.1.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.6.tgz",
+ "integrity": "sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/type": "^3.0.8",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/search": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.1.tgz",
+ "integrity": "sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/figures": "^1.0.13",
+ "@inquirer/type": "^3.0.8",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/select": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.2.tgz",
+ "integrity": "sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@inquirer/core": "^10.2.0",
+ "@inquirer/figures": "^1.0.13",
+ "@inquirer/type": "^3.0.8",
+ "ansi-escapes": "^4.3.2",
+ "yoctocolors-cjs": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/type": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz",
+ "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@isaacs/fs-minipass": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+ "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "minipass": "^7.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/@kwsites/file-exists": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz",
+ "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.1"
+ }
+ },
+ "node_modules/@kwsites/promise-deferred": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz",
+ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==",
+ "license": "MIT"
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
+ "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.33",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
+ "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "license": "MIT"
+ },
+ "node_modules/@typespec/compiler": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.4.0.tgz",
+ "integrity": "sha512-/AFiU3ImuhH/vHKzSGv7I2peewdJ7YLhgMCfFDNk6Ae0a5Ylrc8R1GOATVilisEPBFG9lnjHn3uUcyaZs5VWRw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "~7.27.1",
+ "@inquirer/prompts": "^7.4.0",
+ "ajv": "~8.17.1",
+ "change-case": "~5.4.4",
+ "env-paths": "^3.0.0",
+ "globby": "~14.1.0",
+ "is-unicode-supported": "^2.1.0",
+ "mustache": "~4.2.0",
+ "picocolors": "~1.1.1",
+ "prettier": "~3.6.2",
+ "semver": "^7.7.1",
+ "tar": "^7.4.3",
+ "temporal-polyfill": "^0.3.0",
+ "vscode-languageserver": "~9.0.1",
+ "vscode-languageserver-textdocument": "~1.0.12",
+ "yaml": "~2.8.0",
+ "yargs": "~18.0.0"
+ },
+ "bin": {
+ "tsp": "cmd/tsp.js",
+ "tsp-server": "cmd/tsp-server.js"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/cliui": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+ "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/emoji-regex": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz",
+ "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@typespec/compiler/node_modules/prettier": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
+ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/strip-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/yargs": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
+ "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "cliui": "^9.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "string-width": "^7.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^22.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/@typespec/compiler/node_modules/yargs-parser": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/@typespec/events": {
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.74.0.tgz",
+ "integrity": "sha512-CY6JTtheMKAUlxiPmwx2fLIAWEwezsXmQYUMRhyuW44Q73unQIkexE43LUnNWOJSZckYucqUp+ihXh7jxzWeVQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0"
+ }
+ },
+ "node_modules/@typespec/http": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.4.0.tgz",
+ "integrity": "sha512-Y0PDDtBu+oZnwivfhbL0lN6Mk3QiCxZ66DgB5kFjcgKNpnXf0u440PPyaL42a8lbchzz5lVwz+cinyIMI89FIQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
+ },
+ "peerDependenciesMeta": {
+ "@typespec/streams": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typespec/openapi": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.4.0.tgz",
+ "integrity": "sha512-ZfrCsmZG/Zt1laLaWC0pKvnZr4jqrm/YS/YuZe/gVrSYKBxGLopXle7H0wrSSMYkIVCNCLiC68/HqRxV6XTfoA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
+ }
+ },
+ "node_modules/@typespec/prettier-plugin-typespec": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/prettier-plugin-typespec/-/prettier-plugin-typespec-1.4.0.tgz",
+ "integrity": "sha512-P4ATX7Ryu4IKlzJWv36WbEPCn4xrusaJdb2tbm2wJWobhHW6jt7bWGpJXrXvdHMcfk2IYyIpbOx0+EZb7Aof+g==",
+ "license": "MIT",
+ "dependencies": {
+ "prettier": "~3.6.2"
+ }
+ },
+ "node_modules/@typespec/prettier-plugin-typespec/node_modules/prettier": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
+ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/@typespec/rest": {
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.74.0.tgz",
+ "integrity": "sha512-dE+Xmv01AQ7m8jUvEbGsUQLSVo3sLzMpnHRbQEOnJX42oDqtIsz/2GEOXKQpNm1AKBISK66E2FFB5boz999Ziw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
+ }
+ },
+ "node_modules/@typespec/sse": {
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.74.0.tgz",
+ "integrity": "sha512-+m7/elbGp7q/kqCGaBRj8v8wVMWKVEV8AsZOjf1PY2MkMUrux9ivOijBIktgoLBXDn+ocO2qVfFrHWG2slZSaw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
+ }
+ },
+ "node_modules/@typespec/streams": {
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.74.0.tgz",
+ "integrity": "sha512-LIWizQgzGt8qN8ravte4DrPLPNOk9ge73bV9Us2TOECagTVQWwgMVy7+o/Beff3sOLQO/sEOwfzvmnNpSlauHg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0"
+ }
+ },
+ "node_modules/@typespec/ts-http-runtime": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz",
+ "integrity": "sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==",
+ "license": "MIT",
+ "dependencies": {
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@typespec/versioning": {
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.74.0.tgz",
+ "integrity": "sha512-eFIa23tycWJgv3Lxyu6jUlRi02dhtQE4Jjx3Ui5vEbwHW8pMEzuyF7ALt1c+V9HOLkfDkS4dJkiOVIoikZHPvQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0"
+ }
+ },
+ "node_modules/@typespec/xml": {
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.74.0.tgz",
+ "integrity": "sha512-NiXatOfpyPxU94f2tEBAygxJeS7CvIr5lvnfZkC0tUHwkiJeLrI1jt13kDVB5CE6zNK6I3d7c37xsQs9WXGFAQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "@typespec/compiler": "^1.4.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/autorest": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/autorest/-/autorest-3.7.2.tgz",
+ "integrity": "sha512-yEeF0tJjx2fROK9VWIVHKFiUSzD0cxwqnq7z+v7kIIRRZjyOM3rpBS9OPp6tQv5d3mmxPAUNh57G1ZumQNqQGg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "autorest": "entrypoints/app.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/change-case": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz",
+ "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==",
+ "license": "MIT"
+ },
+ "node_modules/change-case-all": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-2.1.0.tgz",
+ "integrity": "sha512-v6b0WWWkZUMHVuYk82l+WROgkUm4qEN2w5hKRNWtEOYwWqUGoi8C6xH0l1RLF1EoWqDFK6MFclmN3od6ws3/uw==",
+ "license": "MIT",
+ "dependencies": {
+ "change-case": "^5.2.0",
+ "sponge-case": "^2.0.2",
+ "swap-case": "^3.0.2",
+ "title-case": "^3.0.3"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz",
+ "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/chownr": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+ "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+ "license": "BlueOak-1.0.0",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
+ "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/env-paths": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz",
+ "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-uri": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
+ "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/fastq": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+ "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-east-asian-width": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globby": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz",
+ "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^2.1.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.3",
+ "path-type": "^6.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/minizlib": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+ "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "mkdirp": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/mustache": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
+ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "mustache": "bin/mustache"
+ }
+ },
+ "node_modules/mute-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
+ "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": "^18.17.0 || >=20.5.0"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz",
+ "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
+ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prompt-sync": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz",
+ "integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==",
+ "license": "MIT",
+ "dependencies": {
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "node_modules/proper-lockfile": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz",
+ "integrity": "sha512-rjaeGbsmhNDcDInmwi4MuI6mRwJu6zq8GjYCLuSuE7GF+4UjgzkL69sVKKJ2T2xH61kK7rXvGYpvaTu909oXaQ==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "retry": "^0.10.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
+ "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/simple-git": {
+ "version": "3.28.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.28.0.tgz",
+ "integrity": "sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==",
+ "license": "MIT",
+ "dependencies": {
+ "@kwsites/file-exists": "^1.1.1",
+ "@kwsites/promise-deferred": "^1.1.1",
+ "debug": "^4.4.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/steveukx/git-js?sponsor=1"
+ }
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/sponge-case": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-2.0.3.tgz",
+ "integrity": "sha512-i4h9ZGRfxV6Xw3mpZSFOfbXjf0cQcYmssGWutgNIfFZ2VM+YIWfD71N/kjjwK6X/AAHzBr+rciEcn/L34S8TGw==",
+ "license": "MIT"
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/swap-case": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-3.0.3.tgz",
+ "integrity": "sha512-6p4op8wE9CQv7uDFzulI6YXUw4lD9n4oQierdbFThEKVWVQcbQcUjdP27W8XE7V4QnWmnq9jueSHceyyQnqQVA==",
+ "license": "MIT"
+ },
+ "node_modules/tar": {
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
+ "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "@isaacs/fs-minipass": "^4.0.0",
+ "chownr": "^3.0.0",
+ "minipass": "^7.1.2",
+ "minizlib": "^3.0.1",
+ "mkdirp": "^3.0.1",
+ "yallist": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/temporal-polyfill": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.3.0.tgz",
+ "integrity": "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "temporal-spec": "0.3.0"
+ }
+ },
+ "node_modules/temporal-spec": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.3.0.tgz",
+ "integrity": "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/title-case": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz",
+ "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "license": "(MIT OR CC0-1.0)",
+ "peer": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/vscode-jsonrpc": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz",
+ "integrity": "sha512-T24Jb5V48e4VgYliUXMnZ379ItbrXgOimweKaJshD84z+8q7ZOZjJan0MeDe+Ugb+uqERDVV8SBmemaGMSMugA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0 || >=6.0.0"
+ }
+ },
+ "node_modules/vscode-languageserver": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz",
+ "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "vscode-languageserver-protocol": "3.17.5"
+ },
+ "bin": {
+ "installServerIntoExtension": "bin/installServerIntoExtension"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
+ "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "vscode-jsonrpc": "8.2.0",
+ "vscode-languageserver-types": "3.17.5"
+ }
+ },
+ "node_modules/vscode-languageserver-protocol/node_modules/vscode-jsonrpc": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
+ "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
+ "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/vscode-languageserver-types": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
+ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+ "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+ "license": "BlueOak-1.0.0",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/yaml": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
+ "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
+ "license": "ISC",
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yoctocolors-cjs": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz",
+ "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/eng/common/tsp-client/package.json b/eng/common/tsp-client/package.json
new file mode 100644
index 000000000000..a999f99ba653
--- /dev/null
+++ b/eng/common/tsp-client/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "@azure-tools/typespec-client-generator-cli": "0.28.1"
+ }
+}
diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json
index a5009fc0055d..118cc4b655ae 100644
--- a/eng/emitter-package-lock.json
+++ b/eng/emitter-package-lock.json
@@ -5,70 +5,70 @@
"packages": {
"": {
"dependencies": {
- "@azure-tools/typespec-csharp": "0.2.0-beta.20250901.1"
+ "@azure-tools/typespec-csharp": "0.2.0-beta.20250916.1"
},
"devDependencies": {
- "@azure-tools/typespec-autorest": "0.59.0",
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.2",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.1",
+ "@azure-tools/typespec-autorest": "0.60.0",
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
"@azure-tools/typespec-liftr-base": "0.8.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/events": "0.73.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/sse": "0.73.0",
- "@typespec/streams": "0.73.0",
- "@typespec/versioning": "0.73.0",
- "@typespec/xml": "0.73.0"
+ "@typespec/compiler": "1.4.0",
+ "@typespec/events": "0.74.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/sse": "0.74.0",
+ "@typespec/streams": "0.74.0",
+ "@typespec/versioning": "0.74.0",
+ "@typespec/xml": "0.74.0"
}
},
"node_modules/@autorest/csharp": {
- "version": "3.0.0-beta.20250901.1",
- "resolved": "https://registry.npmjs.org/@autorest/csharp/-/csharp-3.0.0-beta.20250901.1.tgz",
- "integrity": "sha512-iIZjEGrBNwZYF/QHmwa/A/SNVNKPSCVnV5Cn/UatJl9mMPpKgxwfJ+ip3PvOtx8UcNlvXRZZn0k/DuZ+MgX8yA=="
+ "version": "3.0.0-beta.20250916.1",
+ "resolved": "https://registry.npmjs.org/@autorest/csharp/-/csharp-3.0.0-beta.20250916.1.tgz",
+ "integrity": "sha512-dJzsoWbiRv9WqLLLe5Q38fjSD2lIzg1SGivWswjMHtDFdGtT1RABj2MQmX659xObdXPIUbVFHQLiESShrpnZGw=="
},
"node_modules/@azure-tools/typespec-autorest": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.59.0.tgz",
- "integrity": "sha512-IdjicuLJRNFZUWHJd1Z8e9RQUlVUyUb2v7pT1rYkhpxAxFb9uluVVpi09GkUFimkrUZ+HkFO/jI2zbIAptZ2FQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.60.0.tgz",
+ "integrity": "sha512-aIRr1e4g3irkjLTpxqzJ8BFnNFYwj4nlcG6cKGPuhNtiHhJgHjUhLVUNIW1A9O4jx+3RSErL9AkAl1ep+ZbiuA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "^0.59.0",
- "@azure-tools/typespec-client-generator-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/versioning": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "^0.60.0",
+ "@azure-tools/typespec-client-generator-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-core": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.59.0.tgz",
- "integrity": "sha512-3vTWDTSR+P0qeyFcOKTgXortNOeA3nsyKTPpZqfFZVTtNFiiO17UWAM2Eg3i0IpNQ3qxMMAksIkwt1bqltTDqA==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.60.0.tgz",
+ "integrity": "sha512-Pmm7blxnEZZ7lhMJWWsiIqMrFthaCK6uu7f+ONN7dq0Mjc/O9w8+43tAIXwnGz1OKAWmiToh3EDbaxeWyt/FhQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/rest": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/rest": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-resource-manager": {
- "version": "0.59.2",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.59.2.tgz",
- "integrity": "sha512-EsRUuCONazl32694raxilRYDtcZ4TcjE5tP6wD73PesemOxK9KPDT6ZIJ3ZGX9ALkMti5SOWAsJUpy55o6I7Wg==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.60.0.tgz",
+ "integrity": "sha512-u0gqgSO5lIcpZN11MBAmRnR7kM1eoBLO8cKB86bXrxLt2vAkYpuL4hWp0A+QJjQy/YI5rrijeBF0visqBJnR4A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -79,34 +79,34 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/versioning": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-rulesets": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.59.0.tgz",
- "integrity": "sha512-+eKYH25ptj6SZHT+/YfxrX+g6HMAQQTphmHmqOoRCbbfPaE8l855OaDrwEgh5NDLV8WXnHpzTNI0dsYipEp10g==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.60.0.tgz",
+ "integrity": "sha512-4sx9StBWkmnBfLJ9b23RSwCs0TkTElaU9+6a/cS6JS0F7UggP/KLQd6LG59D0u9ByXM2x9pvYPO8l/K7UOXoPg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "^0.59.0",
- "@azure-tools/typespec-client-generator-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "^0.60.0",
+ "@azure-tools/typespec-client-generator-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@azure-tools/typespec-client-generator-core": {
- "version": "0.59.1",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.59.1.tgz",
- "integrity": "sha512-sGtn6snCEapPaIM+CaARrOsJYdpB7AS7eX5Z6q2x7Ev3YF5HGwpM14EcdTVp0VkQhTSStv9WJ8c0sUjZ8Eb7Bg==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.60.0.tgz",
+ "integrity": "sha512-JV9uiqxDCzVVFeMctm4ebmUI4982B3dCdKx0nmonjfRf9a2/MXilEKExPIaNVR3ZqbFPXM/IepheY8t9YZNqSQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -118,42 +118,42 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/sse": "^0.73.0",
- "@typespec/streams": "^0.73.0",
- "@typespec/versioning": "^0.73.0",
- "@typespec/xml": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/sse": "^0.74.0",
+ "@typespec/streams": "^0.74.0",
+ "@typespec/versioning": "^0.74.0",
+ "@typespec/xml": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-csharp": {
- "version": "0.2.0-beta.20250901.1",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-csharp/-/typespec-csharp-0.2.0-beta.20250901.1.tgz",
- "integrity": "sha512-893KbexcyDAjzngkx3HXKVQFeJ/t25QgFplC5UI28m6VKVMUB0gcadWJWLQUsCdwVTDa7Pj7GrfqIRc2upr89Q==",
+ "version": "0.2.0-beta.20250916.1",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-csharp/-/typespec-csharp-0.2.0-beta.20250916.1.tgz",
+ "integrity": "sha512-pO622woUGhktCDRaXDZGb1h1IDTiBxFdwMmqmP9b0OMJwVUcKxBp8ig9KuU8HnibyWbPrhkVYcw12yjaqRpupA==",
"license": "MIT",
"dependencies": {
- "@autorest/csharp": "3.0.0-beta.20250901.1"
+ "@autorest/csharp": "3.0.0-beta.20250916.1"
},
"peerDependencies": {
- "@azure-tools/typespec-autorest": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@azure-tools/typespec-azure-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@azure-tools/typespec-azure-resource-manager": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@azure-tools/typespec-azure-rulesets": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@azure-tools/typespec-client-generator-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
+ "@azure-tools/typespec-autorest": ">=0.60.0 <0.61.0 || ~0.61.0-0",
+ "@azure-tools/typespec-azure-core": ">=0.60.0 <0.61.0 || ~0.61.0-0",
+ "@azure-tools/typespec-azure-resource-manager": ">=0.60.0 <0.61.0 || ~0.61.0-0",
+ "@azure-tools/typespec-azure-rulesets": ">=0.60.0 <0.61.0 || ~0.61.0-0",
+ "@azure-tools/typespec-client-generator-core": ">=0.60.0 <0.61.0 || ~0.61.0-0",
"@azure-tools/typespec-liftr-base": ">=0.6.0 <1.0.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": ">=0.73.0 <1.0.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": ">=0.73.0 <1.0.0",
- "@typespec/sse": ">=0.73.0 <1.0.0",
- "@typespec/streams": ">=0.73.0 <1.0.0",
- "@typespec/versioning": ">=0.73.0 <1.0.0",
- "@typespec/xml": ">=0.73.0 <1.0.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": ">=0.74.0 <1.0.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": ">=0.74.0 <1.0.0",
+ "@typespec/sse": ">=0.74.0 <1.0.0",
+ "@typespec/streams": ">=0.74.0 <1.0.0",
+ "@typespec/versioning": ">=0.74.0 <1.0.0",
+ "@typespec/xml": ">=0.74.0 <1.0.0"
}
},
"node_modules/@azure-tools/typespec-liftr-base": {
@@ -187,17 +187,27 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@inquirer/ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz",
+ "integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@inquirer/checkbox": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.2.tgz",
- "integrity": "sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.4.tgz",
+ "integrity": "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -213,13 +223,13 @@
}
},
"node_modules/@inquirer/confirm": {
- "version": "5.1.16",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz",
- "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==",
+ "version": "5.1.18",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.18.tgz",
+ "integrity": "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -235,15 +245,15 @@
}
},
"node_modules/@inquirer/core": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz",
- "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz",
+ "integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@inquirer/ansi": "^1.0.0",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
"signal-exit": "^4.1.0",
@@ -263,14 +273,14 @@
}
},
"node_modules/@inquirer/editor": {
- "version": "4.2.18",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.18.tgz",
- "integrity": "sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==",
+ "version": "4.2.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.20.tgz",
+ "integrity": "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
- "@inquirer/external-editor": "^1.0.1",
+ "@inquirer/core": "^10.2.2",
+ "@inquirer/external-editor": "^1.0.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -286,13 +296,13 @@
}
},
"node_modules/@inquirer/expand": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.18.tgz",
- "integrity": "sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==",
+ "version": "4.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.20.tgz",
+ "integrity": "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
},
@@ -309,14 +319,14 @@
}
},
"node_modules/@inquirer/external-editor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz",
- "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz",
+ "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"chardet": "^2.1.0",
- "iconv-lite": "^0.6.3"
+ "iconv-lite": "^0.7.0"
},
"engines": {
"node": ">=18"
@@ -341,13 +351,13 @@
}
},
"node_modules/@inquirer/input": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.2.tgz",
- "integrity": "sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.4.tgz",
+ "integrity": "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -363,13 +373,13 @@
}
},
"node_modules/@inquirer/number": {
- "version": "3.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.18.tgz",
- "integrity": "sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==",
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.20.tgz",
+ "integrity": "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -385,15 +395,15 @@
}
},
"node_modules/@inquirer/password": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.18.tgz",
- "integrity": "sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==",
+ "version": "4.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.20.tgz",
+ "integrity": "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
- "@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2"
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
+ "@inquirer/type": "^3.0.8"
},
"engines": {
"node": ">=18"
@@ -408,22 +418,22 @@
}
},
"node_modules/@inquirer/prompts": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.4.tgz",
- "integrity": "sha512-MuxVZ1en1g5oGamXV3DWP89GEkdD54alcfhHd7InUW5BifAdKQEK9SLFa/5hlWbvuhMPlobF0WAx7Okq988Jxg==",
+ "version": "7.8.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.6.tgz",
+ "integrity": "sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/checkbox": "^4.2.2",
- "@inquirer/confirm": "^5.1.16",
- "@inquirer/editor": "^4.2.18",
- "@inquirer/expand": "^4.0.18",
- "@inquirer/input": "^4.2.2",
- "@inquirer/number": "^3.0.18",
- "@inquirer/password": "^4.0.18",
- "@inquirer/rawlist": "^4.1.6",
- "@inquirer/search": "^3.1.1",
- "@inquirer/select": "^4.3.2"
+ "@inquirer/checkbox": "^4.2.4",
+ "@inquirer/confirm": "^5.1.18",
+ "@inquirer/editor": "^4.2.20",
+ "@inquirer/expand": "^4.0.20",
+ "@inquirer/input": "^4.2.4",
+ "@inquirer/number": "^3.0.20",
+ "@inquirer/password": "^4.0.20",
+ "@inquirer/rawlist": "^4.1.8",
+ "@inquirer/search": "^3.1.3",
+ "@inquirer/select": "^4.3.4"
},
"engines": {
"node": ">=18"
@@ -438,13 +448,13 @@
}
},
"node_modules/@inquirer/rawlist": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.6.tgz",
- "integrity": "sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.8.tgz",
+ "integrity": "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
},
@@ -461,13 +471,13 @@
}
},
"node_modules/@inquirer/search": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.1.tgz",
- "integrity": "sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.3.tgz",
+ "integrity": "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
@@ -485,16 +495,16 @@
}
},
"node_modules/@inquirer/select": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.2.tgz",
- "integrity": "sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.4.tgz",
+ "integrity": "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -592,9 +602,9 @@
}
},
"node_modules/@typespec/compiler": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.3.0.tgz",
- "integrity": "sha512-OqpoNP3C2y8riA6C5RofPMvmj9jNiGyyhde0tM2ZE7IBOv7BBaTDqw4CJD22YnC8JEilRfPmvdVCViNrPHEjrA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.4.0.tgz",
+ "integrity": "sha512-/AFiU3ImuhH/vHKzSGv7I2peewdJ7YLhgMCfFDNk6Ae0a5Ylrc8R1GOATVilisEPBFG9lnjHn3uUcyaZs5VWRw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -625,30 +635,30 @@
}
},
"node_modules/@typespec/events": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.73.0.tgz",
- "integrity": "sha512-etlhp86amDaElD/UX27u9I4O58zREov73HkkV3xbdTWpv2RqOKyD3mkyGAWsW3hKaGVIxwHOvKcOZ2j+b07Gpw==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.74.0.tgz",
+ "integrity": "sha512-CY6JTtheMKAUlxiPmwx2fLIAWEwezsXmQYUMRhyuW44Q73unQIkexE43LUnNWOJSZckYucqUp+ihXh7jxzWeVQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/http": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.3.0.tgz",
- "integrity": "sha512-4W3KsmBHZGgECVbvyh7S7KQG06948XyVVzae+UbVDDxoUj/x4Ry0AXw3q4HmzB2BVhxw6JBrwBuVa5mxjVMzdw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.4.0.tgz",
+ "integrity": "sha512-Y0PDDtBu+oZnwivfhbL0lN6Mk3QiCxZ66DgB5kFjcgKNpnXf0u440PPyaL42a8lbchzz5lVwz+cinyIMI89FIQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
},
"peerDependenciesMeta": {
"@typespec/streams": {
@@ -657,86 +667,86 @@
}
},
"node_modules/@typespec/openapi": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.3.0.tgz",
- "integrity": "sha512-BSeshjCZQodVGyVHn7ytcUeIcUGjqbG2Ac0NLOQaaKnISVrhTWNcgo5aFTqxAa24ZL/EuhqlSauLyYce2EV9fw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.4.0.tgz",
+ "integrity": "sha512-ZfrCsmZG/Zt1laLaWC0pKvnZr4jqrm/YS/YuZe/gVrSYKBxGLopXle7H0wrSSMYkIVCNCLiC68/HqRxV6XTfoA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/rest": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.73.0.tgz",
- "integrity": "sha512-28hgFGvreBg34Xuguw+E++pQC/kbRxy1Bpx/9nU7x87Ly6ykns3lpx74gjY9ByE8VYKVbXtC7lzdnp19DRSjIQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.74.0.tgz",
+ "integrity": "sha512-dE+Xmv01AQ7m8jUvEbGsUQLSVo3sLzMpnHRbQEOnJX42oDqtIsz/2GEOXKQpNm1AKBISK66E2FFB5boz999Ziw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/sse": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.73.0.tgz",
- "integrity": "sha512-WTnRJ1b1M3RPzlHxhnK9sh6+AGKPKWpuA0TSAqzyxb/uRHFYLNeoDKPOnlQ749SJ8lJz71Oh0nUsP3vB0EzO6Q==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.74.0.tgz",
+ "integrity": "sha512-+m7/elbGp7q/kqCGaBRj8v8wVMWKVEV8AsZOjf1PY2MkMUrux9ivOijBIktgoLBXDn+ocO2qVfFrHWG2slZSaw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
}
},
"node_modules/@typespec/streams": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.73.0.tgz",
- "integrity": "sha512-pL4xffHXEIhBQKPlB9L4AKuM0bn44WsGKjnz91wa6wBtP/CbsPrGQicof0Z7GPGdddtDi4G8PWGmJtVFw53V9g==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.74.0.tgz",
+ "integrity": "sha512-LIWizQgzGt8qN8ravte4DrPLPNOk9ge73bV9Us2TOECagTVQWwgMVy7+o/Beff3sOLQO/sEOwfzvmnNpSlauHg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/versioning": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.73.0.tgz",
- "integrity": "sha512-cfFvzTsvsu4VpdwZcRULr3p/fawKZnjiJClQxlLcYW0dLs/5k5jh7l0YyPkYvgkOcncUrIB6hIu82tQhKrMDKQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.74.0.tgz",
+ "integrity": "sha512-eFIa23tycWJgv3Lxyu6jUlRi02dhtQE4Jjx3Ui5vEbwHW8pMEzuyF7ALt1c+V9HOLkfDkS4dJkiOVIoikZHPvQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/xml": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.73.0.tgz",
- "integrity": "sha512-vlMM8/L22O/PbI3ovj3qoww/3Z8wNwn7og4jzlGRM93jZBJvrOeDSwZo1Dc4rMJyU6KfjPkP3/l5TLbgW8x0zA==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.74.0.tgz",
+ "integrity": "sha512-NiXatOfpyPxU94f2tEBAygxJeS7CvIr5lvnfZkC0tUHwkiJeLrI1jt13kDVB5CE6zNK6I3d7c37xsQs9WXGFAQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/ajv": {
@@ -756,22 +766,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -861,9 +855,9 @@
}
},
"node_modules/cliui/node_modules/ansi-regex": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
- "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -874,9 +868,9 @@
}
},
"node_modules/cliui/node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -912,9 +906,9 @@
}
},
"node_modules/cliui/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -928,9 +922,9 @@
}
},
"node_modules/cliui/node_modules/wrap-ansi": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
- "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1070,9 +1064,9 @@
}
},
"node_modules/get-east-asian-width": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.1.tgz",
- "integrity": "sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1117,9 +1111,9 @@
}
},
"node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1127,6 +1121,10 @@
},
"engines": {
"node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/ignore": {
@@ -1539,19 +1537,6 @@
"node": ">=8.0"
}
},
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
@@ -1690,9 +1675,9 @@
}
},
"node_modules/yargs/node_modules/ansi-regex": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
- "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1728,9 +1713,9 @@
}
},
"node_modules/yargs/node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"dev": true,
"license": "MIT",
"dependencies": {
diff --git a/eng/emitter-package.json b/eng/emitter-package.json
index 591973c2c962..9c32e5958fde 100644
--- a/eng/emitter-package.json
+++ b/eng/emitter-package.json
@@ -1,23 +1,23 @@
{
"main": "dist/src/index.js",
"dependencies": {
- "@azure-tools/typespec-csharp": "0.2.0-beta.20250901.1"
+ "@azure-tools/typespec-csharp": "0.2.0-beta.20250916.1"
},
"devDependencies": {
- "@azure-tools/typespec-autorest": "0.59.0",
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.2",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.1",
+ "@azure-tools/typespec-autorest": "0.60.0",
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
"@azure-tools/typespec-liftr-base": "0.8.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/events": "0.73.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/sse": "0.73.0",
- "@typespec/streams": "0.73.0",
- "@typespec/versioning": "0.73.0",
- "@typespec/xml": "0.73.0"
+ "@typespec/compiler": "1.4.0",
+ "@typespec/events": "0.74.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/sse": "0.74.0",
+ "@typespec/streams": "0.74.0",
+ "@typespec/versioning": "0.74.0",
+ "@typespec/xml": "0.74.0"
}
}
diff --git a/eng/http-client-csharp-emitter-package-lock.json b/eng/http-client-csharp-emitter-package-lock.json
index 42c81fb02d61..cac28dd2aedf 100644
--- a/eng/http-client-csharp-emitter-package-lock.json
+++ b/eng/http-client-csharp-emitter-package-lock.json
@@ -5,62 +5,62 @@
"packages": {
"": {
"dependencies": {
- "@typespec/http-client-csharp": "1.0.0-alpha.20250908.5",
+ "@typespec/http-client-csharp": "1.0.0-alpha.20250918.1",
"client-plugin": "file:../../../../eng/packages/plugins/client"
},
"devDependencies": {
- "@azure-tools/typespec-autorest": "0.59.0",
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.0",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/streams": "0.73.0",
- "@typespec/versioning": "0.73.0"
+ "@azure-tools/typespec-autorest": "0.60.0",
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
+ "@typespec/compiler": "1.4.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/streams": "0.74.0",
+ "@typespec/versioning": "0.74.0"
}
},
"../../../../eng/packages/plugins/client": {},
"node_modules/@azure-tools/typespec-autorest": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.59.0.tgz",
- "integrity": "sha512-IdjicuLJRNFZUWHJd1Z8e9RQUlVUyUb2v7pT1rYkhpxAxFb9uluVVpi09GkUFimkrUZ+HkFO/jI2zbIAptZ2FQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.60.0.tgz",
+ "integrity": "sha512-aIRr1e4g3irkjLTpxqzJ8BFnNFYwj4nlcG6cKGPuhNtiHhJgHjUhLVUNIW1A9O4jx+3RSErL9AkAl1ep+ZbiuA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "^0.59.0",
- "@azure-tools/typespec-client-generator-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/versioning": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "^0.60.0",
+ "@azure-tools/typespec-client-generator-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-core": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.59.0.tgz",
- "integrity": "sha512-3vTWDTSR+P0qeyFcOKTgXortNOeA3nsyKTPpZqfFZVTtNFiiO17UWAM2Eg3i0IpNQ3qxMMAksIkwt1bqltTDqA==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.60.0.tgz",
+ "integrity": "sha512-Pmm7blxnEZZ7lhMJWWsiIqMrFthaCK6uu7f+ONN7dq0Mjc/O9w8+43tAIXwnGz1OKAWmiToh3EDbaxeWyt/FhQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/rest": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/rest": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-resource-manager": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.59.0.tgz",
- "integrity": "sha512-q0UkBnwWE4+9ivAkwAOOrDF9kvSb+qRIvMXJdUlqGfwFqDkOvQFwHSzSDeL/mBNK2fB9NIePKPFjDGP9lpC0vQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.60.0.tgz",
+ "integrity": "sha512-u0gqgSO5lIcpZN11MBAmRnR7kM1eoBLO8cKB86bXrxLt2vAkYpuL4hWp0A+QJjQy/YI5rrijeBF0visqBJnR4A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -71,34 +71,34 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/versioning": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/versioning": "^0.74.0"
}
},
"node_modules/@azure-tools/typespec-azure-rulesets": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.59.0.tgz",
- "integrity": "sha512-+eKYH25ptj6SZHT+/YfxrX+g6HMAQQTphmHmqOoRCbbfPaE8l855OaDrwEgh5NDLV8WXnHpzTNI0dsYipEp10g==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.60.0.tgz",
+ "integrity": "sha512-4sx9StBWkmnBfLJ9b23RSwCs0TkTElaU9+6a/cS6JS0F7UggP/KLQd6LG59D0u9ByXM2x9pvYPO8l/K7UOXoPg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "^0.59.0",
- "@azure-tools/typespec-client-generator-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "^0.60.0",
+ "@azure-tools/typespec-client-generator-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@azure-tools/typespec-client-generator-core": {
- "version": "0.59.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.59.0.tgz",
- "integrity": "sha512-5+pVcOr7Uyq4IaZ3oLjLi8jnBuR+t/B8hQF4CZo+goe/uK+WkmDfw1TlY14G2ve7W7v8m9+Sk2nil6bN1uHWEQ==",
+ "version": "0.60.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.60.0.tgz",
+ "integrity": "sha512-JV9uiqxDCzVVFeMctm4ebmUI4982B3dCdKx0nmonjfRf9a2/MXilEKExPIaNVR3ZqbFPXM/IepheY8t9YZNqSQ==",
"license": "MIT",
"dependencies": {
"change-case": "~5.4.4",
@@ -109,16 +109,16 @@
"node": ">=20.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "^0.59.0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": "^0.73.0",
- "@typespec/sse": "^0.73.0",
- "@typespec/streams": "^0.73.0",
- "@typespec/versioning": "^0.73.0",
- "@typespec/xml": "^0.73.0"
+ "@azure-tools/typespec-azure-core": "^0.60.0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": "^0.74.0",
+ "@typespec/sse": "^0.74.0",
+ "@typespec/streams": "^0.74.0",
+ "@typespec/versioning": "^0.74.0",
+ "@typespec/xml": "^0.74.0"
}
},
"node_modules/@babel/code-frame": {
@@ -144,16 +144,25 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@inquirer/ansi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz",
+ "integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@inquirer/checkbox": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.2.tgz",
- "integrity": "sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.4.tgz",
+ "integrity": "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -169,12 +178,12 @@
}
},
"node_modules/@inquirer/confirm": {
- "version": "5.1.16",
- "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.16.tgz",
- "integrity": "sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==",
+ "version": "5.1.18",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.18.tgz",
+ "integrity": "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -190,14 +199,14 @@
}
},
"node_modules/@inquirer/core": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.0.tgz",
- "integrity": "sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz",
+ "integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==",
"license": "MIT",
"dependencies": {
+ "@inquirer/ansi": "^1.0.0",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"cli-width": "^4.1.0",
"mute-stream": "^2.0.0",
"signal-exit": "^4.1.0",
@@ -217,13 +226,13 @@
}
},
"node_modules/@inquirer/editor": {
- "version": "4.2.18",
- "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.18.tgz",
- "integrity": "sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==",
+ "version": "4.2.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.20.tgz",
+ "integrity": "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
- "@inquirer/external-editor": "^1.0.1",
+ "@inquirer/core": "^10.2.2",
+ "@inquirer/external-editor": "^1.0.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -239,12 +248,12 @@
}
},
"node_modules/@inquirer/expand": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.18.tgz",
- "integrity": "sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==",
+ "version": "4.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.20.tgz",
+ "integrity": "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
},
@@ -261,13 +270,13 @@
}
},
"node_modules/@inquirer/external-editor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz",
- "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz",
+ "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==",
"license": "MIT",
"dependencies": {
"chardet": "^2.1.0",
- "iconv-lite": "^0.6.3"
+ "iconv-lite": "^0.7.0"
},
"engines": {
"node": ">=18"
@@ -291,12 +300,12 @@
}
},
"node_modules/@inquirer/input": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.2.tgz",
- "integrity": "sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.4.tgz",
+ "integrity": "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -312,12 +321,12 @@
}
},
"node_modules/@inquirer/number": {
- "version": "3.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.18.tgz",
- "integrity": "sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==",
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.20.tgz",
+ "integrity": "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8"
},
"engines": {
@@ -333,14 +342,14 @@
}
},
"node_modules/@inquirer/password": {
- "version": "4.0.18",
- "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.18.tgz",
- "integrity": "sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==",
+ "version": "4.0.20",
+ "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.20.tgz",
+ "integrity": "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
- "@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2"
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
+ "@inquirer/type": "^3.0.8"
},
"engines": {
"node": ">=18"
@@ -355,21 +364,21 @@
}
},
"node_modules/@inquirer/prompts": {
- "version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.4.tgz",
- "integrity": "sha512-MuxVZ1en1g5oGamXV3DWP89GEkdD54alcfhHd7InUW5BifAdKQEK9SLFa/5hlWbvuhMPlobF0WAx7Okq988Jxg==",
+ "version": "7.8.6",
+ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.6.tgz",
+ "integrity": "sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==",
"license": "MIT",
"dependencies": {
- "@inquirer/checkbox": "^4.2.2",
- "@inquirer/confirm": "^5.1.16",
- "@inquirer/editor": "^4.2.18",
- "@inquirer/expand": "^4.0.18",
- "@inquirer/input": "^4.2.2",
- "@inquirer/number": "^3.0.18",
- "@inquirer/password": "^4.0.18",
- "@inquirer/rawlist": "^4.1.6",
- "@inquirer/search": "^3.1.1",
- "@inquirer/select": "^4.3.2"
+ "@inquirer/checkbox": "^4.2.4",
+ "@inquirer/confirm": "^5.1.18",
+ "@inquirer/editor": "^4.2.20",
+ "@inquirer/expand": "^4.0.20",
+ "@inquirer/input": "^4.2.4",
+ "@inquirer/number": "^3.0.20",
+ "@inquirer/password": "^4.0.20",
+ "@inquirer/rawlist": "^4.1.8",
+ "@inquirer/search": "^3.1.3",
+ "@inquirer/select": "^4.3.4"
},
"engines": {
"node": ">=18"
@@ -384,12 +393,12 @@
}
},
"node_modules/@inquirer/rawlist": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.6.tgz",
- "integrity": "sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==",
+ "version": "4.1.8",
+ "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.8.tgz",
+ "integrity": "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
},
@@ -406,12 +415,12 @@
}
},
"node_modules/@inquirer/search": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.1.tgz",
- "integrity": "sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.3.tgz",
+ "integrity": "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
"yoctocolors-cjs": "^2.1.2"
@@ -429,15 +438,15 @@
}
},
"node_modules/@inquirer/select": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.2.tgz",
- "integrity": "sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.4.tgz",
+ "integrity": "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==",
"license": "MIT",
"dependencies": {
- "@inquirer/core": "^10.2.0",
+ "@inquirer/ansi": "^1.0.0",
+ "@inquirer/core": "^10.2.2",
"@inquirer/figures": "^1.0.13",
"@inquirer/type": "^3.0.8",
- "ansi-escapes": "^4.3.2",
"yoctocolors-cjs": "^2.1.2"
},
"engines": {
@@ -529,9 +538,9 @@
}
},
"node_modules/@typespec/compiler": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.3.0.tgz",
- "integrity": "sha512-OqpoNP3C2y8riA6C5RofPMvmj9jNiGyyhde0tM2ZE7IBOv7BBaTDqw4CJD22YnC8JEilRfPmvdVCViNrPHEjrA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-1.4.0.tgz",
+ "integrity": "sha512-/AFiU3ImuhH/vHKzSGv7I2peewdJ7YLhgMCfFDNk6Ae0a5Ylrc8R1GOATVilisEPBFG9lnjHn3uUcyaZs5VWRw==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "~7.27.1",
@@ -561,29 +570,29 @@
}
},
"node_modules/@typespec/events": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.73.0.tgz",
- "integrity": "sha512-etlhp86amDaElD/UX27u9I4O58zREov73HkkV3xbdTWpv2RqOKyD3mkyGAWsW3hKaGVIxwHOvKcOZ2j+b07Gpw==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/events/-/events-0.74.0.tgz",
+ "integrity": "sha512-CY6JTtheMKAUlxiPmwx2fLIAWEwezsXmQYUMRhyuW44Q73unQIkexE43LUnNWOJSZckYucqUp+ihXh7jxzWeVQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/http": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.3.0.tgz",
- "integrity": "sha512-4W3KsmBHZGgECVbvyh7S7KQG06948XyVVzae+UbVDDxoUj/x4Ry0AXw3q4HmzB2BVhxw6JBrwBuVa5mxjVMzdw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/http/-/http-1.4.0.tgz",
+ "integrity": "sha512-Y0PDDtBu+oZnwivfhbL0lN6Mk3QiCxZ66DgB5kFjcgKNpnXf0u440PPyaL42a8lbchzz5lVwz+cinyIMI89FIQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
},
"peerDependenciesMeta": {
"@typespec/streams": {
@@ -592,98 +601,97 @@
}
},
"node_modules/@typespec/http-client-csharp": {
- "version": "1.0.0-alpha.20250908.5",
- "resolved": "https://registry.npmjs.org/@typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250908.5.tgz",
- "integrity": "sha512-zB3QrNQWBi248oYUIwnfnMDmxZLpNblNXZMzYdM3PzandepZAo0U+AWLaeovEPnGvIi8shEt3CmhbJAouil3qA==",
+ "version": "1.0.0-alpha.20250918.1",
+ "resolved": "https://registry.npmjs.org/@typespec/http-client-csharp/-/http-client-csharp-1.0.0-alpha.20250918.1.tgz",
+ "integrity": "sha512-Yy5FOOjC6XgQdHO3f1iIMby8yRjE93i6ZeALfyq7PgCNee2Kf7ucmzfkZaM4QgiiGLba1ibCqO1nbn99zeb04Q==",
"license": "MIT",
"peerDependencies": {
- "@azure-tools/typespec-azure-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@azure-tools/typespec-client-generator-core": ">=0.59.0 <0.60.0 || ~0.60.0-0",
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0",
- "@typespec/openapi": "^1.3.0",
- "@typespec/rest": ">=0.73.0 <0.74.0 || ~0.74.0-0",
- "@typespec/streams": ">=0.73.0 <0.74.0 || ~0.74.0-0",
- "@typespec/versioning": ">=0.73.0 <0.74.0 || ~0.74.0-0"
+ "@azure-tools/typespec-client-generator-core": ">=0.60.0 < 0.61.0 || ~0.61.0-0",
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/openapi": "^1.4.0",
+ "@typespec/rest": ">=0.74.0 <0.75.0 || ~0.75.0-0",
+ "@typespec/streams": ">=0.74.0 <0.75.0 || ~0.75.0-0",
+ "@typespec/versioning": ">=0.74.0 <0.75.0 || ~0.75.0-0"
}
},
"node_modules/@typespec/openapi": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.3.0.tgz",
- "integrity": "sha512-BSeshjCZQodVGyVHn7ytcUeIcUGjqbG2Ac0NLOQaaKnISVrhTWNcgo5aFTqxAa24ZL/EuhqlSauLyYce2EV9fw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-1.4.0.tgz",
+ "integrity": "sha512-ZfrCsmZG/Zt1laLaWC0pKvnZr4jqrm/YS/YuZe/gVrSYKBxGLopXle7H0wrSSMYkIVCNCLiC68/HqRxV6XTfoA==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/rest": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.73.0.tgz",
- "integrity": "sha512-28hgFGvreBg34Xuguw+E++pQC/kbRxy1Bpx/9nU7x87Ly6ykns3lpx74gjY9ByE8VYKVbXtC7lzdnp19DRSjIQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.74.0.tgz",
+ "integrity": "sha512-dE+Xmv01AQ7m8jUvEbGsUQLSVo3sLzMpnHRbQEOnJX42oDqtIsz/2GEOXKQpNm1AKBISK66E2FFB5boz999Ziw==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/http": "^1.3.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/http": "^1.4.0"
}
},
"node_modules/@typespec/sse": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.73.0.tgz",
- "integrity": "sha512-WTnRJ1b1M3RPzlHxhnK9sh6+AGKPKWpuA0TSAqzyxb/uRHFYLNeoDKPOnlQ749SJ8lJz71Oh0nUsP3vB0EzO6Q==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/sse/-/sse-0.74.0.tgz",
+ "integrity": "sha512-+m7/elbGp7q/kqCGaBRj8v8wVMWKVEV8AsZOjf1PY2MkMUrux9ivOijBIktgoLBXDn+ocO2qVfFrHWG2slZSaw==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0",
- "@typespec/events": "^0.73.0",
- "@typespec/http": "^1.3.0",
- "@typespec/streams": "^0.73.0"
+ "@typespec/compiler": "^1.4.0",
+ "@typespec/events": "^0.74.0",
+ "@typespec/http": "^1.4.0",
+ "@typespec/streams": "^0.74.0"
}
},
"node_modules/@typespec/streams": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.73.0.tgz",
- "integrity": "sha512-pL4xffHXEIhBQKPlB9L4AKuM0bn44WsGKjnz91wa6wBtP/CbsPrGQicof0Z7GPGdddtDi4G8PWGmJtVFw53V9g==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/streams/-/streams-0.74.0.tgz",
+ "integrity": "sha512-LIWizQgzGt8qN8ravte4DrPLPNOk9ge73bV9Us2TOECagTVQWwgMVy7+o/Beff3sOLQO/sEOwfzvmnNpSlauHg==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/versioning": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.73.0.tgz",
- "integrity": "sha512-cfFvzTsvsu4VpdwZcRULr3p/fawKZnjiJClQxlLcYW0dLs/5k5jh7l0YyPkYvgkOcncUrIB6hIu82tQhKrMDKQ==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.74.0.tgz",
+ "integrity": "sha512-eFIa23tycWJgv3Lxyu6jUlRi02dhtQE4Jjx3Ui5vEbwHW8pMEzuyF7ALt1c+V9HOLkfDkS4dJkiOVIoikZHPvQ==",
"license": "MIT",
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/@typespec/xml": {
- "version": "0.73.0",
- "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.73.0.tgz",
- "integrity": "sha512-vlMM8/L22O/PbI3ovj3qoww/3Z8wNwn7og4jzlGRM93jZBJvrOeDSwZo1Dc4rMJyU6KfjPkP3/l5TLbgW8x0zA==",
+ "version": "0.74.0",
+ "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.74.0.tgz",
+ "integrity": "sha512-NiXatOfpyPxU94f2tEBAygxJeS7CvIr5lvnfZkC0tUHwkiJeLrI1jt13kDVB5CE6zNK6I3d7c37xsQs9WXGFAQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=20.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "^1.3.0"
+ "@typespec/compiler": "^1.4.0"
}
},
"node_modules/ajv": {
@@ -702,21 +710,6 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@@ -994,9 +987,9 @@
}
},
"node_modules/get-east-asian-width": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.1.tgz",
- "integrity": "sha512-R1QfovbPsKmosqTnPoRFiJ7CF9MLRgb53ChvMZm+r4p76/+8yKDy17qLL2PKInORy2RkZZekuK0efYgmzTkXyQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -1038,15 +1031,19 @@
}
},
"node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
},
"engines": {
"node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/ignore": {
@@ -1425,18 +1422,6 @@
"node": ">=8.0"
}
},
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/unicorn-magic": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
diff --git a/eng/http-client-csharp-emitter-package.json b/eng/http-client-csharp-emitter-package.json
index 3696cb6090ed..dc49fb812027 100644
--- a/eng/http-client-csharp-emitter-package.json
+++ b/eng/http-client-csharp-emitter-package.json
@@ -2,19 +2,19 @@
"main": "dist/src/index.js",
"dependencies": {
"client-plugin": "file:../../../../eng/packages/plugins/client",
- "@typespec/http-client-csharp": "1.0.0-alpha.20250908.5"
+ "@typespec/http-client-csharp": "1.0.0-alpha.20250918.1"
},
"devDependencies": {
- "@azure-tools/typespec-azure-core": "0.59.0",
- "@azure-tools/typespec-client-generator-core": "0.59.0",
- "@typespec/compiler": "1.3.0",
- "@typespec/http": "1.3.0",
- "@typespec/openapi": "1.3.0",
- "@typespec/rest": "0.73.0",
- "@typespec/streams": "0.73.0",
- "@typespec/versioning": "0.73.0",
- "@azure-tools/typespec-azure-rulesets": "0.59.0",
- "@azure-tools/typespec-azure-resource-manager": "0.59.0",
- "@azure-tools/typespec-autorest": "0.59.0"
+ "@azure-tools/typespec-client-generator-core": "0.60.0",
+ "@typespec/compiler": "1.4.0",
+ "@typespec/http": "1.4.0",
+ "@typespec/openapi": "1.4.0",
+ "@typespec/rest": "0.74.0",
+ "@typespec/streams": "0.74.0",
+ "@typespec/versioning": "0.74.0",
+ "@azure-tools/typespec-azure-core": "0.60.0",
+ "@azure-tools/typespec-azure-rulesets": "0.60.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.60.0",
+ "@azure-tools/typespec-autorest": "0.60.0"
}
}
\ No newline at end of file
diff --git a/eng/packages/http-client-csharp-mgmt/emitter/src/emitter.ts b/eng/packages/http-client-csharp-mgmt/emitter/src/emitter.ts
index 69b922b56dac..b5b037f2bc79 100644
--- a/eng/packages/http-client-csharp-mgmt/emitter/src/emitter.ts
+++ b/eng/packages/http-client-csharp-mgmt/emitter/src/emitter.ts
@@ -9,8 +9,9 @@ import {
$onEmit as $onAzureEmit,
AzureEmitterOptions
} from "@azure-typespec/http-client-csharp";
-import { azureSDKContextOptions } from "./sdk-context-options.js";
+import { azureSDKContextOptions, flattenPropertyDecorator } from "./sdk-context-options.js";
import { updateClients } from "./resource-detection.js";
+import { DecoratorInfo } from "@azure-tools/typespec-client-generator-core";
export async function $onEmit(context: EmitContext) {
context.options["generator-name"] ??= "ManagementClientGenerator";
@@ -25,6 +26,22 @@ export async function $onEmit(context: EmitContext) {
sdkContext: CSharpEmitterContext
): CodeModel {
updateClients(codeModel, sdkContext);
+ setFlattenProperty(codeModel, sdkContext);
return codeModel;
}
}
+
+function setFlattenProperty(codeModel: CodeModel, sdkContext: CSharpEmitterContext): void {
+ for (const model of sdkContext.sdkPackage.models) {
+ for (const property of model.properties) {
+ if (property.flatten ) {
+
+ const flattenPropertyMetadataDecorator: DecoratorInfo = {
+ name: flattenPropertyDecorator,
+ arguments: {}
+ };
+ property.decorators.push(flattenPropertyMetadataDecorator);
+ }
+ }
+ }
+}
diff --git a/eng/packages/http-client-csharp-mgmt/emitter/src/resource-detection.ts b/eng/packages/http-client-csharp-mgmt/emitter/src/resource-detection.ts
index b825eef63032..6ddf2b4e4db8 100644
--- a/eng/packages/http-client-csharp-mgmt/emitter/src/resource-detection.ts
+++ b/eng/packages/http-client-csharp-mgmt/emitter/src/resource-detection.ts
@@ -13,6 +13,7 @@ import {
convertResourceMetadataToArguments,
NonResourceMethod,
ResourceMetadata,
+ ResourceMethod,
ResourceOperationKind,
ResourceScope
} from "./resource-metadata.js";
@@ -58,6 +59,9 @@ export async function updateClients(
sdkContext.sdkPackage.models.map((m) => [m.crossLanguageDefinitionId, m])
);
const resourceModels = getAllResourceModels(codeModel);
+ const resourceModelMap = new Map(
+ resourceModels.map((m) => [m.crossLanguageDefinitionId, m])
+ );
const resourceModelToMetadataMap = new Map(
resourceModels.map((m) => [
@@ -68,7 +72,7 @@ export async function updateClients(
singletonResourceName: getSingletonResource(
m.decorators?.find((d) => d.name == singleton)
),
- resourceScope: getResourceScope(m),
+ resourceScope: ResourceScope.Tenant, // temporary default to Tenant, will be properly set later after methods are populated
methods: [],
parentResourceId: undefined, // this will be populated later
resourceName: m.name
@@ -137,6 +141,12 @@ export async function updateClients(
resourceModelToMetadataMap.values()
);
}
+
+ // update the model's resourceScope based on resource scope decorator if it exists or based on the Get method's scope. If neither exist, it will be set to ResourceGroup by default
+ const model = resourceModelMap.get(modelId);
+ if (model) {
+ metadata.resourceScope = getResourceScope(model, metadata.methods);
+ }
}
// the last step, add the decorator to the resource model
@@ -273,7 +283,6 @@ function getAllResourceModels(codeModel: CodeModel): InputModelType[] {
const resourceModels: InputModelType[] = [];
for (const model of codeModel.models) {
if (model.decorators?.some((d) => d.name == armResourceInternal)) {
- model.crossLanguageDefinitionId;
resourceModels.push(model);
}
}
@@ -290,7 +299,8 @@ function getSingletonResource(
return singletonResource ?? "default";
}
-function getResourceScope(model: InputModelType): ResourceScope {
+function getResourceScope(model: InputModelType, methods?: ResourceMethod[]): ResourceScope {
+ // First, check for explicit scope decorators
const decorators = model.decorators;
if (decorators?.some((d) => d.name == tenantResource)) {
return ResourceScope.Tenant;
@@ -299,6 +309,16 @@ function getResourceScope(model: InputModelType): ResourceScope {
} else if (decorators?.some((d) => d.name == resourceGroupResource)) {
return ResourceScope.ResourceGroup;
}
+
+ // Fall back to Get method's scope only if no scope decorators are found
+ if (methods) {
+ const getMethod = methods.find(m => m.kind === ResourceOperationKind.Get);
+ if (getMethod) {
+ return getMethod.operationScope;
+ }
+ }
+
+ // Final fallback to ResourceGroup
return ResourceScope.ResourceGroup; // all the templates work as if there is a resource group decorator when there is no such decorator
}
diff --git a/eng/packages/http-client-csharp-mgmt/emitter/src/sdk-context-options.ts b/eng/packages/http-client-csharp-mgmt/emitter/src/sdk-context-options.ts
index 7a7a4c8108f0..3eebbd7e74cf 100644
--- a/eng/packages/http-client-csharp-mgmt/emitter/src/sdk-context-options.ts
+++ b/eng/packages/http-client-csharp-mgmt/emitter/src/sdk-context-options.ts
@@ -76,9 +76,6 @@ export const resourceGroupResource =
const resourceGroupResourceRegex =
"Azure\\.ResourceManager\\.@resourceGroupResource";
-const flattenPropertyRegex =
- "Azure\\.ClientGenerator\\.Core\\.@flattenProperty";
-
// TODO: add this decorator to TCGC
export const resourceMetadata = "Azure.ClientGenerator.Core.@resourceSchema";
const resourceMetadataRegex =
@@ -88,6 +85,8 @@ export const nonResourceMethodMetadata =
const nonResourceMethodMetadataRegex =
"Azure\\.ClientGenerator\\.Core\\.@nonResourceMethodSchema";
+export const flattenPropertyDecorator = "Azure.ResourceManager.@flattenProperty";
+
export const azureSDKContextOptions: CreateSdkContextOptions = {
versioning: {
previewStringRegex: /-preview$/
@@ -104,7 +103,6 @@ export const azureSDKContextOptions: CreateSdkContextOptions = {
armResourceOperationsRegex,
armResourceUpdateRegex,
armResourceReadRegex,
- flattenPropertyRegex,
parentResourceRegex,
resourceGroupResourceRegex,
singletonRegex,
diff --git a/eng/packages/http-client-csharp-mgmt/emitter/test/resource-detection.test.ts b/eng/packages/http-client-csharp-mgmt/emitter/test/resource-detection.test.ts
index 601ef22c7de4..c53e8a36d02a 100644
--- a/eng/packages/http-client-csharp-mgmt/emitter/test/resource-detection.test.ts
+++ b/eng/packages/http-client-csharp-mgmt/emitter/test/resource-detection.test.ts
@@ -9,7 +9,12 @@ import { TestHost } from "@typespec/compiler/testing";
import { createModel } from "@typespec/http-client-csharp";
import { getAllClients, updateClients } from "../src/resource-detection.js";
import { ok, strictEqual } from "assert";
-import { resourceMetadata } from "../src/sdk-context-options.js";
+import {
+ resourceMetadata,
+ tenantResource,
+ subscriptionResource,
+ resourceGroupResource
+} from "../src/sdk-context-options.js";
import { ResourceScope } from "../src/resource-metadata.js";
describe("Resource Detection", () => {
@@ -963,4 +968,73 @@ interface Employees {
);
strictEqual(employeeMetadataDecorator.arguments.resourceName, "Employee");
});
+
+ it("resource scope determined from Get method when no explicit decorator", async () => {
+ const program = await typeSpecCompile(
+ `
+@parentResource(SubscriptionLocationResource)
+model Employee is ProxyResource {
+ ...ResourceNameParameter;
+}
+
+model EmployeeProperties {
+ age?: int32;
+}
+
+union EmployeeType {
+ string,
+}
+
+interface Operations extends Azure.ResourceManager.Operations {}
+
+@armResourceOperations
+interface Employees {
+ get is ArmResourceRead;
+}
+`,
+ runner
+ );
+ const context = createEmitterContext(program);
+ const sdkContext = await createCSharpSdkContext(context);
+ const root = createModel(sdkContext);
+ updateClients(root, sdkContext);
+
+ const employeeClient = getAllClients(root).find(
+ (c) => c.name === "Employees"
+ );
+ ok(employeeClient);
+ const employeeModel = root.models.find((m) => m.name === "Employee");
+ ok(employeeModel);
+ const getMethod = employeeClient.methods.find((m) => m.name === "get");
+ ok(getMethod);
+
+ const resourceMetadataDecorator = employeeModel.decorators?.find(
+ (d) => d.name === resourceMetadata
+ );
+ ok(resourceMetadataDecorator);
+ ok(resourceMetadataDecorator.arguments);
+
+ // Verify that the model has NO scope-related decorators
+ const hasNoScopeDecorators = !employeeModel.decorators?.some((d) =>
+ d.name === tenantResource ||
+ d.name === subscriptionResource ||
+ d.name === resourceGroupResource
+ );
+ ok(hasNoScopeDecorators, "Model should have no scope-related decorators to test fallback logic");
+
+ // The model should inherit its resourceScope from the Get method's operationScope (Subscription)
+ // because the Get method operates at subscription scope and there are no explicit scope decorators
+ strictEqual(
+ resourceMetadataDecorator.arguments.resourceScope,
+ "Subscription"
+ );
+
+ // Verify the Get method itself has the correct scope
+ const getMethodEntry = resourceMetadataDecorator.arguments.methods.find(
+ (m: any) => m.methodId === getMethod.crossLanguageDefinitionId
+ );
+ ok(getMethodEntry);
+ strictEqual(getMethodEntry.kind, "Get");
+ strictEqual(getMethodEntry.operationScope, ResourceScope.Subscription);
+ });
});
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/ManagementInputLibrary.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/ManagementInputLibrary.cs
index 925f9e258548..3e1061fcb473 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/ManagementInputLibrary.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/ManagementInputLibrary.cs
@@ -15,7 +15,7 @@ public class ManagementInputLibrary : InputLibrary
{
private const string ResourceMetadataDecoratorName = "Azure.ClientGenerator.Core.@resourceSchema";
private const string NonResourceMethodMetadata = "Azure.ClientGenerator.Core.@nonResourceMethodSchema";
- private const string FlattenPropertyDecoratorName = "Azure.ClientGenerator.Core.@flattenProperty";
+ private const string FlattenPropertyDecoratorName = "Azure.ResourceManager.@flattenProperty";
private IReadOnlyDictionary? _inputServiceMethodsByCrossLanguageDefinitionId;
private IReadOnlyDictionary? _intMethodClientMap;
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/RequestPathPattern.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/RequestPathPattern.cs
index a489a0bf1d60..e3ea29a8d5b0 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/RequestPathPattern.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/RequestPathPattern.cs
@@ -29,18 +29,19 @@ internal class RequestPathPattern : IEquatable, IReadOnlyLis
public static readonly RequestPathPattern ManagementGroup = new("/providers/Microsoft.Management/managementGroups/{managementGroupId}");
public static readonly RequestPathPattern ResourceGroup = new("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}");
public static readonly RequestPathPattern Subscription = new("/subscriptions/{subscriptionId}");
- public static readonly RequestPathPattern Extension = new("/{resourceUri}");
-
public static readonly RequestPathPattern Tenant = new(string.Empty);
- public static RequestPathPattern GetFromScope(ResourceScope scope)
+ public static RequestPathPattern GetFromScope(ResourceScope scope, RequestPathPattern? path = null)
{
return scope switch
{
ResourceScope.ResourceGroup => ResourceGroup,
ResourceScope.Subscription => Subscription,
ResourceScope.ManagementGroup => ManagementGroup,
- ResourceScope.Extension => Extension,
+ ResourceScope.Extension =>
+ path is null
+ ? throw new InvalidOperationException("Extension scope requires a path parameter.")
+ : new RequestPathPattern(path._segments.Take(1)),
ResourceScope.Tenant => Tenant,
_ => throw new InvalidOperationException($"Unhandled scope {scope}"),
};
@@ -80,17 +81,23 @@ private static IReadOnlyList ParseSegments(string path)
///
public bool IsAncestorOf(RequestPathPattern other)
{
+ // Ancestor detection: compare only constant segments, skip variable segments.
// To be the parent of other, you must at least be shorter than other.
if (other.Count <= Count)
return false;
for (int i = 0; i < Count; i++)
{
- // we need the segment to be identical when strict is true (which is the default value)
- // when strict is false, we also need the segment to be identical if it is constant.
- // but if it is a reference, we only require they have the same type, do not require they have the same variable name.
- // This case happens a lot during the management group parent detection - different RP calls this different things
- if (!this[i].Equals(other[i]))
+ if (this[i].IsConstant)
+ {
+ if (!this[i].Equals(other[i]))
+ return false;
+ }
+ else // variable segment
+ {
+ if (!other[i].IsConstant)
+ continue;
return false;
+ }
}
return true;
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/ResourceMetadata.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/ResourceMetadata.cs
index f24396e27bae..cb89f2a16259 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/ResourceMetadata.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Models/ResourceMetadata.cs
@@ -52,7 +52,7 @@ internal static ResourceMetadata DeserializeResourceMetadata(IReadOnlyDictionary
}
//TODO: handle Extension resource in emitter
- if (resourceIdPattern is not null && resourceIdPattern.StartsWith("/{resourceUri}/"))
+ if (resourceIdPattern is not null && (resourceIdPattern.StartsWith("/{resourceUri}/") || resourceIdPattern.StartsWith("/{scope}/")))
{
resourceScope = ResourceScope.Extension;
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/MockableResourceProvider.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/MockableResourceProvider.cs
index 1de16ee7a777..ea0ccd5ba2cd 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/MockableResourceProvider.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/MockableResourceProvider.cs
@@ -220,8 +220,10 @@ private IEnumerable BuildMethodsForResource(ResourceClientProvid
// the first method is returning the collection
var collection = resource.ResourceCollection!;
var collectionMethodSignature = resource.FactoryMethodSignature;
+ var pathParameters = collection.PathParameters;
+ collectionMethodSignature.Update(parameters: [.. collectionMethodSignature.Parameters, .. pathParameters]);
- var bodyStatement = Return(This.As().GetCachedClient(new CodeWriterDeclaration("client"), client => New.Instance(collection.Type, client, This.As().Id())));
+ var bodyStatement = Return(This.As().GetCachedClient(new CodeWriterDeclaration("client"), client => New.Instance(collection.Type, [client, This.As().Id(), .. pathParameters])));
yield return new MethodProvider(
collectionMethodSignature,
bodyStatement,
@@ -233,16 +235,16 @@ private IEnumerable BuildMethodsForResource(ResourceClientProvid
if (getAsyncMethod is not null)
{
// we should be sure that this would never be null, but this null check here is just ensuring that we never crash
- yield return BuildGetMethod(this, getAsyncMethod, collectionMethodSignature, $"Get{resource.ResourceName}Async");
+ yield return BuildGetMethod(this, getAsyncMethod, collectionMethodSignature, pathParameters, $"Get{resource.ResourceName}Async");
}
if (getMethod is not null)
{
// we should be sure that this would never be null, but this null check here is just ensuring that we never crash
- yield return BuildGetMethod(this, getMethod, collectionMethodSignature, $"Get{resource.ResourceName}");
+ yield return BuildGetMethod(this, getMethod, collectionMethodSignature, pathParameters, $"Get{resource.ResourceName}");
}
- static MethodProvider BuildGetMethod(TypeProvider enclosingType, MethodProvider resourceGetMethod, MethodSignature collectionGetSignature, string methodName)
+ static MethodProvider BuildGetMethod(TypeProvider enclosingType, MethodProvider resourceGetMethod, MethodSignature collectionGetSignature, IReadOnlyList pathParameters, string methodName)
{
var signature = new MethodSignature(
methodName,
@@ -250,7 +252,7 @@ static MethodProvider BuildGetMethod(TypeProvider enclosingType, MethodProvider
resourceGetMethod.Signature.Modifiers,
resourceGetMethod.Signature.ReturnType,
resourceGetMethod.Signature.ReturnDescription,
- resourceGetMethod.Signature.Parameters,
+ [.. pathParameters, .. resourceGetMethod.Signature.Parameters],
Attributes: [new AttributeStatement(typeof(ForwardsClientCallsAttribute))]);
return new MethodProvider(
@@ -265,7 +267,6 @@ static MethodProvider BuildGetMethod(TypeProvider enclosingType, MethodProvider
private MethodProvider BuildResourceServiceMethod(ResourceClientProvider resource, ResourceMethod resourceMethod, bool isAsync)
{
var methodName = ResourceHelpers.GetExtensionOperationMethodName(resourceMethod.Kind, resource.ResourceName, isAsync);
-
return BuildServiceMethod(resourceMethod.InputMethod, resourceMethod.InputClient, isAsync, methodName);
}
@@ -274,8 +275,8 @@ private MethodProvider BuildServiceMethod(InputServiceMethod method, InputClient
var clientInfo = _clientInfos[inputClient];
return method switch
{
- InputPagingServiceMethod pagingMethod => new PageableOperationMethodProvider(this, _contextualPath, clientInfo, pagingMethod, isAsync, methodName: methodName),
- _ => new ResourceOperationMethodProvider(this, _contextualPath, clientInfo, method, isAsync, methodName: methodName)
+ InputPagingServiceMethod pagingMethod => new PageableOperationMethodProvider(this, _contextualPath, clientInfo, pagingMethod, isAsync, methodName),
+ _ => new ResourceOperationMethodProvider(this, _contextualPath, clientInfo, method, isAsync, methodName)
};
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/PageableOperationMethodProvider.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/PageableOperationMethodProvider.cs
index 84803c629fbd..fe35d7e737f3 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/PageableOperationMethodProvider.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/PageableOperationMethodProvider.cs
@@ -94,7 +94,7 @@ protected MethodSignature CreateSignature()
_convenienceMethod.Signature.Modifiers,
returnType,
returnDescription,
- OperationMethodParameterHelper.GetOperationMethodParameters(_method, _contextualPath),
+ OperationMethodParameterHelper.GetOperationMethodParameters(_method, _contextualPath, _enclosingType),
_convenienceMethod.Signature.Attributes,
_convenienceMethod.Signature.GenericArguments,
_convenienceMethod.Signature.GenericParameterConstraints,
@@ -119,7 +119,8 @@ protected MethodBodyStatement[] BuildBodyStatements()
{
_restClientInfo.RestClient,
};
- arguments.AddRange(_contextualPath.PopulateArguments(This.As().Id(), requestMethod.Signature.Parameters, contextVariable, _signature.Parameters));
+
+ arguments.AddRange(_contextualPath.PopulateArguments(This.As().Id(), requestMethod.Signature.Parameters, contextVariable, _signature.Parameters, _enclosingType));
// Handle ResourceData type conversion if needed
if (_itemResourceClient != null)
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/ResourceOperationMethodProvider.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/ResourceOperationMethodProvider.cs
index 397ce90e4ad1..06ef16f560d0 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/ResourceOperationMethodProvider.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/OperationMethodProviders/ResourceOperationMethodProvider.cs
@@ -150,7 +150,7 @@ protected virtual MethodBodyStatement[] BuildBodyStatements()
protected IReadOnlyList GetOperationMethodParameters()
{
- return OperationMethodParameterHelper.GetOperationMethodParameters(_serviceMethod, _contextualPath, _isFakeLongRunningOperation);
+ return OperationMethodParameterHelper.GetOperationMethodParameters(_serviceMethod, _contextualPath, _enclosingType, _isFakeLongRunningOperation);
}
protected virtual MethodSignature CreateSignature()
@@ -178,8 +178,9 @@ private TryExpression BuildTryExpression()
{
ResourceMethodSnippets.CreateRequestContext(cancellationTokenParameter, out var contextVariable)
};
+
// Populate arguments for the REST client method call
- var arguments = _contextualPath.PopulateArguments(This.As().Id(), requestMethod.Signature.Parameters, contextVariable, _signature.Parameters);
+ var arguments = _contextualPath.PopulateArguments(This.As().Id(), requestMethod.Signature.Parameters, contextVariable, _signature.Parameters, _enclosingType);
tryStatements.Add(ResourceMethodSnippets.CreateHttpMessage(_restClientField, requestMethod.Signature.Name, arguments, out var messageVariable));
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceClientProvider.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceClientProvider.cs
index 327e5bbf3b86..b46bbc374050 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceClientProvider.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceClientProvider.cs
@@ -86,6 +86,8 @@ private ResourceClientProvider(string resourceName, InputModelType model, IReadO
internal ResourceCollectionClientProvider? ResourceCollection { get; private set; }
+ public RequestPathPattern ContextualPath => _contextualPath;
+
protected override string BuildName() => ResourceName.EndsWith("Resource") ? ResourceName : $"{ResourceName}Resource";
protected override FormattableString BuildDescription() => $"A class representing a {ResourceName} along with the instance operations that can be performed on it.\nIf you have a {typeof(ResourceIdentifier):C} you can construct a {Type:C} from an instance of {typeof(ArmClient):C} using the GetResource method.\nOtherwise you can get one from its parent resource {TypeOfParentResource:C} using the {FactoryMethodSignature.Name} method.";
@@ -302,7 +304,7 @@ private ConstructorProvider BuildResourceIdentifierConstructor()
}
// TODO -- this is temporary. We should change this to find the corresponding parameters in ContextualParameters after it is refactored to consume parent resources.
- private CSharpType GetPathParameterType(string parameterName)
+ public CSharpType GetPathParameterType(string parameterName)
{
foreach (var resourceMethod in _resourceServiceMethods)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceCollectionClientProvider.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceCollectionClientProvider.cs
index 8e1b943e6da1..d148864ea34c 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceCollectionClientProvider.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/ResourceCollectionClientProvider.cs
@@ -17,19 +17,19 @@
using Microsoft.TypeSpec.Generator.Providers;
using Microsoft.TypeSpec.Generator.Snippets;
using Microsoft.TypeSpec.Generator.Statements;
-using Microsoft.TypeSpec.Generator.Expressions;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using static Microsoft.TypeSpec.Generator.Snippets.Snippet;
+using System.Linq;
namespace Azure.Generator.Management.Providers
{
internal sealed class ResourceCollectionClientProvider : TypeProvider
{
private readonly ResourceMetadata _resourceMetadata;
-
+ private readonly Dictionary _pathParameterMap;
private readonly ResourceClientProvider _resource;
private readonly ResourceMethod? _getAll;
private readonly ResourceMethod? _create;
@@ -49,6 +49,8 @@ internal ResourceCollectionClientProvider(ResourceClientProvider resource, Input
_contextualPath = GetContextualRequestPattern(resourceMetadata);
_resource = resource;
+ _pathParameterMap = BuildPathParameterMap();
+
// Initialize client info dictionary using extension method
_clientInfos = resourceMetadata.CreateClientInfosMap(this);
@@ -71,6 +73,15 @@ private static RequestPathPattern GetContextualRequestPattern(ResourceMetadata r
return new RequestPathPattern(resourceMetadata.ParentResourceId);
}
+ if (resourceMetadata.ResourceScope == ResourceScope.Extension)
+ {
+ if (string.IsNullOrEmpty(resourceMetadata.ResourceIdPattern))
+ {
+ throw new InvalidOperationException("Extension resource's IdPattern can't be empty or null.");
+ }
+ return RequestPathPattern.GetFromScope(resourceMetadata.ResourceScope, new RequestPathPattern(resourceMetadata.ResourceIdPattern));
+ }
+
return RequestPathPattern.GetFromScope(resourceMetadata.ResourceScope);
}
@@ -103,6 +114,9 @@ private static void InitializeMethods(
}
public ResourceClientProvider Resource => _resource;
+ public IReadOnlyList PathParameterFields => _pathParameterMap.Values.ToList();
+ public IReadOnlyList PathParameters => _pathParameterMap.Keys.ToList();
+ public RequestPathPattern ContextualPath => _contextualPath;
internal string ResourceName => _resource.ResourceName;
internal ResourceScope ResourceScope => _resource.ResourceScope;
@@ -142,6 +156,29 @@ protected override PropertyProvider[] BuildProperties()
return [.. properties];
}
+ private Dictionary BuildPathParameterMap()
+ {
+ var map = new Dictionary();
+ var diff = ContextualPath.TrimAncestorFrom(Resource.ContextualPath);
+ var variableSegments = diff.Where(seg => !seg.IsConstant).ToList();
+ if (variableSegments.Count > 0)
+ {
+ variableSegments.RemoveAt(variableSegments.Count - 1);
+ }
+ foreach (var seg in variableSegments)
+ {
+ var parameter = new ParameterProvider(
+ seg.VariableName,
+ $"The {seg.VariableName} for the resource.",
+ Resource.GetPathParameterType(seg.VariableName));
+ var field = new FieldProvider(FieldModifiers.Private | FieldModifiers.ReadOnly, Resource.GetPathParameterType(seg.VariableName), $"_{seg.VariableName}", this, description: $"The {seg.VariableName}.");
+ map.Add(parameter, field);
+ }
+ return map;
+ }
+
+ // BuildPathParameters is now handled by BuildPathParametersAndFields
+
protected override FieldProvider[] BuildFields()
{
var fields = new List();
@@ -150,7 +187,7 @@ protected override FieldProvider[] BuildFields()
fields.Add(clientInfo.DiagnosticsField);
fields.Add(clientInfo.RestClientField);
}
- return [.. fields];
+ return [ .. fields, .. _pathParameterMap.Values];
}
protected override ConstructorProvider[] BuildConstructors()
@@ -159,13 +196,17 @@ protected override ConstructorProvider[] BuildConstructors()
private ConstructorProvider BuildResourceIdentifierConstructor()
{
var idParameter = new ParameterProvider("id", $"The identifier of the resource that is the target of operations.", typeof(ResourceIdentifier));
- var parameters = new List
+ var baseParameters = new List
{
new("client", $"The client parameters to use in these operations.", typeof(ArmClient)),
idParameter
};
- var initializer = new ConstructorInitializer(true, parameters);
+ var initializer = new ConstructorInitializer(true, baseParameters);
+ var parameters = new List(baseParameters);
+
+ parameters.AddRange(_pathParameterMap.Keys);
+
var signature = new ConstructorSignature(
Type,
$"Initializes a new instance of {Type:C} class.",
@@ -180,6 +221,12 @@ private ConstructorProvider BuildResourceIdentifierConstructor()
bodyStatements.Add(thisCollection.TryGetApiVersion(_resourceTypeExpression, $"{ResourceName}ApiVersion".ToVariableName(), out var apiVersion).Terminate());
+ // Assign all path parameter fields by assigning from the path parameters
+ foreach (var kvp in _pathParameterMap)
+ {
+ bodyStatements.Add(kvp.Value.Assign(kvp.Key).Terminate());
+ }
+
// Initialize all client diagnostics and rest client fields
foreach (var (inputClient, clientInfo) in _clientInfos)
{
@@ -285,8 +332,8 @@ private MethodProvider BuildGetAllMethod(ResourceMethod getAll, bool isAsync)
var methodName = ResourceHelpers.GetOperationMethodName(ResourceOperationKind.List, isAsync);
return getAll.InputMethod switch
{
- InputPagingServiceMethod pagingGetAll => new PageableOperationMethodProvider(this, _contextualPath, restClientInfo, pagingGetAll, isAsync, methodName: methodName),
- _ => new ResourceOperationMethodProvider(this, _contextualPath, restClientInfo, getAll.InputMethod, isAsync, methodName: methodName)
+ InputPagingServiceMethod pagingGetAll => new PageableOperationMethodProvider(this, _contextualPath, restClientInfo, pagingGetAll, isAsync, methodName),
+ _ => new ResourceOperationMethodProvider(this, _contextualPath, restClientInfo, getAll.InputMethod, isAsync, methodName)
};
}
@@ -345,5 +392,13 @@ private List BuildGetIfExistsMethods()
return result;
}
+
+ public bool TryGetPrivateFieldParameter(ParameterProvider parameter, out FieldProvider? matchingField)
+ {
+ matchingField = _pathParameterMap
+ .FirstOrDefault(kvp => kvp.Key.WireInfo.SerializedName.Equals(parameter.WireInfo.SerializedName, StringComparison.OrdinalIgnoreCase))
+ .Value;
+ return matchingField != null;
+ }
}
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/TagMethodProviders/BaseTagMethodProvider.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/TagMethodProviders/BaseTagMethodProvider.cs
index 38eb5a88892c..c3ebd94d95a9 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/TagMethodProviders/BaseTagMethodProvider.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Providers/TagMethodProviders/BaseTagMethodProvider.cs
@@ -3,6 +3,7 @@
using Azure.Generator.Management.Extensions;
using Azure.Generator.Management.Models;
+using Azure.Generator.Management.Primitives;
using Azure.Generator.Management.Providers.OperationMethodProviders;
using Azure.Generator.Management.Snippets;
using Azure.Generator.Management.Utilities;
@@ -116,7 +117,8 @@ protected List CreateRequestContextAndProcessMessage(
};
var requestMethod = _getRestClient.GetRequestMethodByOperation(_getMethodProvider.Operation);
- var arguments = _contextualPath.PopulateArguments(This.As().Id(), requestMethod.Signature.Parameters, contextVariable, _signature.Parameters);
+
+ var arguments = _contextualPath.PopulateArguments(This.As().Id(), requestMethod.Signature.Parameters, contextVariable, _signature.Parameters, _enclosingType);
statements.Add(ResourceMethodSnippets.CreateHttpMessage(_getRestClientField, "CreateGetRequest", arguments, out var messageVariable));
@@ -169,7 +171,7 @@ protected static MethodBodyStatement GetResourceDataStatements(
return Declare(
variableName,
resourceClientProvider.ResourceData.Type,
- new TupleExpression(This.Invoke(getMethod, [cancellationTokenParam], null, isAsync))
+ new TupleExpression(This.Invoke(getMethod, [KnownAzureParameters.CancellationTokenWithoutDefault.PositionalReference(cancellationTokenParam)], null, isAsync))
.Property("Value").Property("Data"),
out currentVar);
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/ContextualParameterBuilder.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/ContextualParameterBuilder.cs
index a70cbf6bd989..824b91a263b5 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/ContextualParameterBuilder.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/ContextualParameterBuilder.cs
@@ -60,9 +60,10 @@ private static void BuildContextualParameterHierarchy(RequestPathPattern current
// using the reference name of the last segment as the parameter name, aka resourceGroupName
parameterStack.Push(new ContextualParameter(current[^2].Value, current[^1].VariableName, id => id.ResourceGroupName()));
}
- else if (current == RequestPathPattern.Extension)
+ else if (current.Count == 1 && !current[0].IsConstant) // Extension resource case: single variable segment. Here we assume the extension resource's requestPathPattern start with one and only one variable segment
{
- parameterStack.Push(new ContextualParameter("resourceUri", "resourceUri", id => BuildParentInvocation(parentLayerCount, id)));
+ // Extension resource case: single variable segment
+ parameterStack.Push(new ContextualParameter(current[0].VariableName, current[0].VariableName, id => BuildParentInvocation(parentLayerCount, id)));
}
else
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/OperationMethodParameterHelper.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/OperationMethodParameterHelper.cs
index 606c9b830ed1..a2d5cd5fd5ec 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/OperationMethodParameterHelper.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/OperationMethodParameterHelper.cs
@@ -3,6 +3,7 @@
using Azure.Generator.Management.Models;
using Azure.Generator.Management.Primitives;
+using Azure.Generator.Management.Providers;
using Microsoft.TypeSpec.Generator.Input;
using Microsoft.TypeSpec.Generator.Primitives;
using Microsoft.TypeSpec.Generator.Providers;
@@ -17,6 +18,7 @@ internal static class OperationMethodParameterHelper
public static IReadOnlyList GetOperationMethodParameters(
InputServiceMethod serviceMethod,
RequestPathPattern contextualPath,
+ TypeProvider? enclosingTypeProvider,
bool forceLro = false)
{
var requiredParameters = new List();
@@ -36,21 +38,30 @@ public static IReadOnlyList GetOperationMethodParameters(
}
var outputParameter = ManagementClientGenerator.Instance.TypeFactory.CreateParameter(parameter)!;
- if (!contextualPath.TryGetContextualParameter(outputParameter, out _))
+
+ if (contextualPath.TryGetContextualParameter(outputParameter, out _))
+ {
+ continue;
+ }
+
+ if (enclosingTypeProvider is ResourceCollectionClientProvider collectionProvider &&
+ collectionProvider.TryGetPrivateFieldParameter(outputParameter, out _))
+ {
+ continue;
+ }
+
+ if (parameter.Type is InputModelType modelType && ManagementClientGenerator.Instance.InputLibrary.IsResourceModel(modelType))
+ {
+ outputParameter.Update(name: "data");
+ }
+
+ if (parameter.IsRequired)
+ {
+ requiredParameters.Add(outputParameter);
+ }
+ else
{
- if (parameter.Type is InputModelType modelType && ManagementClientGenerator.Instance.InputLibrary.IsResourceModel(modelType))
- {
- outputParameter.Update(name: "data");
- }
-
- if (parameter.IsRequired)
- {
- requiredParameters.Add(outputParameter);
- }
- else
- {
- optionalParameters.Add(outputParameter);
- }
+ optionalParameters.Add(outputParameter);
}
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs
index 7f5dcbb5d00f..4a9121c7b33c 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/PropertyHelpers.cs
@@ -80,9 +80,15 @@ private static bool HasDefaultPublicCtor(ModelProvider? innerModel)
return false;
}
- public static MethodBodyStatement BuildGetter(bool? includeGetterNullCheck, PropertyProvider internalProperty, TypeProvider innerModel, PropertyProvider singleProperty)
+ public static MethodBodyStatement BuildGetter(bool? includeGetterNullCheck, PropertyProvider internalProperty, TypeProvider innerModel, PropertyProvider innerProperty)
{
var checkNullExpression = This.Property(internalProperty.Name).Is(Null);
+ // For collection types, we do not do null check and initialization in getter, they have been initialized in constructor.
+ if (innerProperty.Type.IsCollection && internalProperty.WireInfo?.IsRequired == true)
+ {
+ return new List() { Return(new MemberExpression(internalProperty, innerProperty.Name)) };
+ }
+
if (includeGetterNullCheck == true)
{
return new List {
@@ -90,25 +96,30 @@ public static MethodBodyStatement BuildGetter(bool? includeGetterNullCheck, Prop
{
internalProperty.Assign(New.Instance(innerModel.Type)).Terminate()
},
- Return(new MemberExpression(internalProperty, singleProperty.Name))
+ Return(new MemberExpression(internalProperty, innerProperty.Name))
};
}
else if (includeGetterNullCheck == false)
{
- return Return(new TernaryConditionalExpression(checkNullExpression, Default, new MemberExpression(internalProperty, singleProperty.Name)));
+ return Return(new TernaryConditionalExpression(checkNullExpression, Default, new MemberExpression(internalProperty, innerProperty.Name)));
}
else
{
if (innerModel.Type.IsNullable)
{
- return Return(new MemberExpression(internalProperty.AsVariableExpression.NullConditional(), singleProperty.Name));
+ return Return(new MemberExpression(internalProperty.AsVariableExpression.NullConditional(), innerProperty.Name));
}
- return Return(new MemberExpression(internalProperty, singleProperty.Name));
+ return Return(new MemberExpression(internalProperty, innerProperty.Name));
}
}
- public static MethodBodyStatement BuildSetterForPropertyFlatten(ModelProvider innerModel, PropertyProvider internalProperty, PropertyProvider innerProperty)
+ public static MethodBodyStatement? BuildSetterForPropertyFlatten(ModelProvider innerModel, PropertyProvider internalProperty, PropertyProvider innerProperty)
{
+ if (innerProperty.Type.IsCollection)
+ {
+ return null;
+ }
+
var isNullableValueType = innerProperty.Type.IsValueType && innerProperty.Type.IsNullable;
var setter = new List();
var internalPropertyExpression = This.Property(internalProperty.Name);
@@ -122,26 +133,9 @@ public static MethodBodyStatement BuildSetterForPropertyFlatten(ModelProvider in
return setter;
}
- public static Dictionary PopulateCollectionProperties(IEnumerable collectionTypeProperties)
- {
- var result = new Dictionary();
- foreach (var property in collectionTypeProperties)
- {
- var propertyValue = Value.Property(property.Name);
- if (property.Type.IsList)
- {
- result.Add(Identifier(property.Name), New.Instance(ManagementClientGenerator.Instance.TypeFactory.ListInitializationType.MakeGenericType(property.Type.Arguments)));
- }
- if (property.Type.IsDictionary)
- {
- result.Add(Identifier(property.Name), New.Instance(ManagementClientGenerator.Instance.TypeFactory.DictionaryInitializationType.MakeGenericType(property.Type.Arguments)));
- }
- }
- return result;
- }
-
- public static MethodBodyStatement BuildSetterForSafeFlatten(bool includeSetterCheck, ModelProvider innerModel, PropertyProvider internalProperty, PropertyProvider innerProperty)
+ public static MethodBodyStatement? BuildSetterForSafeFlatten(bool includeSetterCheck, ModelProvider innerModel, PropertyProvider internalProperty, PropertyProvider innerProperty)
{
+ // To not introduce breaking change, for collection types, we keep the setter for collection-type properties during safe flatten.
var isOverriddenValueType = IsOverriddenValueType(innerProperty);
var setter = new List();
var internalPropertyExpression = This.Property(internalProperty.Name);
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/RequestPathPatternExtensions.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/RequestPathPatternExtensions.cs
index af6b52e3002d..09d8d4fd5195 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/RequestPathPatternExtensions.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Utilities/RequestPathPatternExtensions.cs
@@ -3,6 +3,7 @@
using Azure.Core;
using Azure.Generator.Management.Models;
+using Azure.Generator.Management.Providers;
using Azure.Generator.Management.Visitors;
using Microsoft.TypeSpec.Generator.Expressions;
using Microsoft.TypeSpec.Generator.Primitives;
@@ -22,7 +23,8 @@ public static IReadOnlyList PopulateArguments(
ScopedApi idProperty,
IReadOnlyList requestParameters,
VariableExpression requestContext,
- IReadOnlyList methodParameters)
+ IReadOnlyList methodParameters,
+ TypeProvider? enclosingType = null)
{
var arguments = new List();
// here we always assume that the parameter name matches the parameter name in the request path.
@@ -33,6 +35,11 @@ public static IReadOnlyList PopulateArguments(
{
arguments.Add(Convert(contextualParameter.BuildValueExpression(idProperty), typeof(string), parameter.Type));
}
+ //Find matching parameter from pathFieldsParameters if enclosing type is ResourceCollectionClientProvider
+ else if (enclosingType is ResourceCollectionClientProvider collectionProvider && collectionProvider.TryGetPrivateFieldParameter(parameter, out var matchingField) && matchingField != null)
+ {
+ arguments.Add(matchingField);
+ }
else if (parameter.Type.Equals(typeof(RequestContent)))
{
// find the body parameter
@@ -52,10 +59,18 @@ public static IReadOnlyList PopulateArguments(
}
else
{
- var methodParam = methodParameters.Single(p => p.WireInfo.SerializedName == parameter.WireInfo.SerializedName);
- arguments.Add(Convert(methodParam, methodParam.Type, parameter.Type));
+ var methodParam = methodParameters.SingleOrDefault(p => p.WireInfo.SerializedName == parameter.WireInfo.SerializedName);
+ if (methodParam != null)
+ {
+ arguments.Add(Convert(methodParam, methodParam.Type, parameter.Type));
+ }
+ else
+ {
+ arguments.Add(Null);
+ }
}
}
+
return arguments;
static ValueExpression Convert(ValueExpression expression, CSharpType fromType, CSharpType toType)
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Visitors/FlattenPropertyVisitor.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Visitors/FlattenPropertyVisitor.cs
index c787d98b6a1f..43886f3c9b1b 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Visitors/FlattenPropertyVisitor.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/src/Visitors/FlattenPropertyVisitor.cs
@@ -9,6 +9,7 @@
using Microsoft.TypeSpec.Generator.Providers;
using Microsoft.TypeSpec.Generator.Snippets;
using Microsoft.TypeSpec.Generator.Statements;
+using System;
using System.Collections.Generic;
using System.Linq;
using static Microsoft.TypeSpec.Generator.Snippets.Snippet;
@@ -36,41 +37,55 @@ internal class FlattenPropertyVisitor : ScmLibraryVisitor
if (type is ModelProvider model && _collectionTypeProperties.TryGetValue(model, out var value))
{
- foreach (var (internalProperty, collectionProperties) in value)
+ foreach (var internalProperty in value)
{
- var innerCollectionProperties = collectionProperties.Select(x => x.InnerProperty);
- var initializationMethod = BuildInitializationMethod(innerCollectionProperties, internalProperty, model);
- var publicConstructor = model.Constructors.Single(m => m.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Public));
- var invokeInitialization = This.Invoke(initializationMethod.Signature.Name).Terminate();
+ var publicConstructor = model.Constructors.SingleOrDefault(m => m.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Public));
+ if (publicConstructor is null)
+ {
+ continue;
+ }
+ var internalPropertyTypeConstructor = ManagementClientGenerator.Instance.TypeFactory.CSharpTypeMap[internalProperty.Type]!.Constructors.Single(c => c.Signature.Modifiers.HasFlag(MethodSignatureModifiers.Public));
+ var initializationParameters = PopulateInitializationParameters(publicConstructor, internalPropertyTypeConstructor);
+ var initialization = internalProperty.Assign(New.Instance(internalProperty.Type, initializationParameters)).Terminate();
// If the property is a collection type, we need to ensure that it is initialized
if (publicConstructor.BodyStatements is null)
{
- publicConstructor.Update(bodyStatements: new List { invokeInitialization });
+ publicConstructor.Update(bodyStatements: new List { initialization });
}
else
{
var body = publicConstructor.BodyStatements.ToList();
- body.Add(invokeInitialization);
+ body.Add(initialization);
publicConstructor.Update(bodyStatements: body);
}
- model.Update(methods: [.. model.Methods, initializationMethod]);
}
}
return base.PostVisitType(type);
}
- internal const string s_initializationMethodName = "Initialize";
- private MethodProvider BuildInitializationMethod(IEnumerable collectionTypeProperties, PropertyProvider internalProperty, ModelProvider model)
+ private ValueExpression[] PopulateInitializationParameters(ConstructorProvider publicConstructor, ConstructorProvider internalPropertyTypeConstructor)
{
- var signature = new MethodSignature($"{s_initializationMethodName}{internalProperty.Type.Name}", null, MethodSignatureModifiers.Private, null, null, []);
- MethodBodyStatement[] body = [
- new IfStatement(This.Property(internalProperty.Name).Is(Null))
- {
- internalProperty.Assign(New.Instance(internalProperty.Type, PropertyHelpers.PopulateCollectionProperties(collectionTypeProperties))).Terminate()
- },];
- return new MethodProvider(signature, body, model);
+ var parameters = new List();
+ foreach (var parameter in internalPropertyTypeConstructor.Signature.Parameters)
+ {
+ if (parameter.Type.IsList)
+ {
+ parameters.Add(New.Instance(ManagementClientGenerator.Instance.TypeFactory.ListInitializationType.MakeGenericType(parameter.Type.Arguments)));
+ }
+ else if (parameter.Type.IsDictionary)
+ {
+ parameters.Add(New.Instance(ManagementClientGenerator.Instance.TypeFactory.DictionaryInitializationType.MakeGenericType(parameter.Type.Arguments)));
+ }
+ else
+ {
+ var constructorParameter = publicConstructor.Signature.Parameters.Single(p => p.Name.Equals(parameter.Name, System.StringComparison.OrdinalIgnoreCase));
+
+ parameters.Add(constructorParameter);
+ }
+ }
+ return parameters.ToArray();
}
private void UpdateModelFactory(ModelFactoryProvider modelFactory)
@@ -256,7 +271,7 @@ int GetAdditionalPropertyIndex()
// So that, we can use this to update the model factory methods later.
private readonly Dictionary>> _flattenedModelTypes = new();
// TODO: Workadound to initialize all collection-type properties in all collection-type setters, remove this once we have lazy initializtion for collection-type properties
- private readonly Dictionary>> _collectionTypeProperties = new();
+ private readonly Dictionary> _collectionTypeProperties = new();
private void FlattenProperties(ModelProvider model)
{
var isFlattened = false;
@@ -281,11 +296,12 @@ private void FlattenProperties(ModelProvider model)
foreach (var innerProperty in innerProperties)
{
+ CollectFlattenTypeCollectionProperty(property, innerProperty, model);
// flatten the property to public and associate it with the internal property
var (_, includeGetterNullCheck, _) = PropertyHelpers.GetFlags(property, innerProperty);
var flattenPropertyName = innerProperty.Name; // TODO: handle name conflicts
var flattenPropertyBody = new MethodPropertyBody(
- PropertyHelpers.BuildGetter(includeGetterNullCheck == true && !innerProperty.Type.IsCollection, property, modelProvider, innerProperty),
+ PropertyHelpers.BuildGetter(includeGetterNullCheck, property, modelProvider, innerProperty),
!innerProperty.Body.HasSetter ? null : PropertyHelpers.BuildSetterForPropertyFlatten(modelProvider, property, innerProperty)
);
@@ -304,7 +320,6 @@ private void FlattenProperties(ModelProvider model)
innerProperty.Attributes);
flattenedProperties.Add((isOverriddenValueType, flattenedProperty));
- AddInternalSetterForFlattenTypeCollectionProperty(property, innerProperty, flattenedProperty, model);
}
// make the internalized properties internal
property.Update(modifiers: property.Modifiers & ~MethodSignatureModifiers.Public | MethodSignatureModifiers.Internal);
@@ -322,28 +337,20 @@ private void FlattenProperties(ModelProvider model)
}
// TODO: workaround to add internal setter, we should remove this once we add lazy initialization for collection type properties
- private void AddInternalSetterForFlattenTypeCollectionProperty(PropertyProvider internalProperty, PropertyProvider innerProperty, PropertyProvider flattenedProperty, ModelProvider modelProvider)
+ private void CollectFlattenTypeCollectionProperty(PropertyProvider internalProperty, PropertyProvider innerProperty, ModelProvider modelProvider)
{
if (innerProperty.Type.IsCollection)
{
if (_collectionTypeProperties.TryGetValue(modelProvider, out var value))
{
- if (value.TryGetValue(internalProperty, out var properties))
- {
- properties.Add((flattenedProperty, innerProperty));
- }
- else
- {
- value.Add(internalProperty, [(flattenedProperty, innerProperty)]);
- }
+ value.Add(internalProperty);
}
else
{
- var dict = new Dictionary>();
- dict.Add(internalProperty, [(flattenedProperty, innerProperty)]);
- _collectionTypeProperties.Add(modelProvider, dict);
+ var set = new HashSet();
+ set.Add(internalProperty);
+ _collectionTypeProperties.Add(modelProvider, set);
}
- innerProperty.Update(body: new AutoPropertyBody(true, MethodSignatureModifiers.Internal));
}
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTag.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTag.cs
index 292c51ba3e8e..5eb1048c3978 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTag.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTag.cs
@@ -21,7 +21,7 @@
}
else
{
- global::Samples.Models.ResponseTypeData current = (this.Get(cancellationToken)).Value.Data;
+ global::Samples.Models.ResponseTypeData current = (this.Get(cancellationToken: cancellationToken)).Value.Data;
global::Samples.Models.ResponseTypeData patch = new global::Samples.Models.ResponseTypeData();
foreach (global::System.Collections.Generic.KeyValuePair tag in current.Tags)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTagAsync.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTagAsync.cs
index dd1af0434e78..ca596162e938 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTagAsync.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_AddTagAsync.cs
@@ -21,7 +21,7 @@
}
else
{
- global::Samples.Models.ResponseTypeData current = (await this.GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ global::Samples.Models.ResponseTypeData current = (await this.GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
global::Samples.Models.ResponseTypeData patch = new global::Samples.Models.ResponseTypeData();
foreach (global::System.Collections.Generic.KeyValuePair tag in current.Tags)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTag.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTag.cs
index f5a815e1792b..5fbfa777d26d 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTag.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTag.cs
@@ -20,7 +20,7 @@
}
else
{
- global::Samples.Models.ResponseTypeData current = (this.Get(cancellationToken)).Value.Data;
+ global::Samples.Models.ResponseTypeData current = (this.Get(cancellationToken: cancellationToken)).Value.Data;
global::Samples.Models.ResponseTypeData patch = new global::Samples.Models.ResponseTypeData();
foreach (global::System.Collections.Generic.KeyValuePair tag in current.Tags)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTagAsync.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTagAsync.cs
index efa5fe022734..4e03018f975d 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTagAsync.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_RemoveTagAsync.cs
@@ -20,7 +20,7 @@
}
else
{
- global::Samples.Models.ResponseTypeData current = (await this.GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ global::Samples.Models.ResponseTypeData current = (await this.GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
global::Samples.Models.ResponseTypeData patch = new global::Samples.Models.ResponseTypeData();
foreach (global::System.Collections.Generic.KeyValuePair tag in current.Tags)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTags.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTags.cs
index 379079e7ad54..383b1cb7f097 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTags.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTags.cs
@@ -21,7 +21,7 @@
}
else
{
- global::Samples.Models.ResponseTypeData current = (this.Get(cancellationToken)).Value.Data;
+ global::Samples.Models.ResponseTypeData current = (this.Get(cancellationToken: cancellationToken)).Value.Data;
global::Samples.Models.ResponseTypeData patch = new global::Samples.Models.ResponseTypeData();
patch.Tags.ReplaceWith(tags);
global::Azure.Response result = this.Update(patch, cancellationToken);
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTagsAsync.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTagsAsync.cs
index 6a09479451db..31bec31e8692 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTagsAsync.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/Providers/TestData/TagMethodProviderTests/Verify_SetTagsAsync.cs
@@ -21,7 +21,7 @@
}
else
{
- global::Samples.Models.ResponseTypeData current = (await this.GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ global::Samples.Models.ResponseTypeData current = (await this.GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
global::Samples.Models.ResponseTypeData patch = new global::Samples.Models.ResponseTypeData();
patch.Tags.ReplaceWith(tags);
global::Azure.Response result = await this.UpdateAsync(patch, cancellationToken).ConfigureAwait(false);
diff --git a/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/RequestPathPatternTests.cs b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/RequestPathPatternTests.cs
new file mode 100644
index 000000000000..469e88c3b1ef
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/Azure.Generator.Management/test/RequestPathPatternTests.cs
@@ -0,0 +1,51 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+using Azure.Generator.Management.Models;
+using NUnit.Framework;
+
+namespace Azure.Generator.Management.Tests
+{
+ public class RequestPathPatternTests
+ {
+ [TestCase("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}", true)]
+ [TestCase("/subscriptions/{subscriptionId}", "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}", true)]
+ [TestCase("/subscriptions/{subscriptionId}", "/providers/Microsoft.Management/managementGroups/{managementGroupId}", false)]
+ public void IsAncestorOf_BasicCases(string ancestor, string descendant, bool expected)
+ {
+ var ancestorPattern = new RequestPathPattern(ancestor);
+ var descendantPattern = new RequestPathPattern(descendant);
+ Assert.AreEqual(expected, ancestorPattern.IsAncestorOf(descendantPattern));
+ }
+
+ [Test]
+ public void IsAncestorOf_AncestorMustBeShorterThanDescendant()
+ {
+ var ancestorPattern = new RequestPathPattern("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}");
+ var childPattern = new RequestPathPattern("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}");
+ // Ancestor and child are the same length, should return false
+ Assert.IsFalse(ancestorPattern.IsAncestorOf(childPattern));
+
+ var longerAncestor = new RequestPathPattern("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage");
+ var shorterChild = new RequestPathPattern("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}");
+ // Ancestor is longer than child, should return false
+ Assert.IsFalse(longerAncestor.IsAncestorOf(shorterChild));
+ }
+
+ [Test]
+ public void IsAncestorOf_VariableSegmentCheck()
+ {
+ var ancestorPattern = new RequestPathPattern("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}");
+ var descendantPattern = new RequestPathPattern("/subscriptions/{otherSub}/resourceGroups/{otherGroup}/providers/Microsoft.Storage/storageAccounts/{accountName}");
+ Assert.IsTrue(ancestorPattern.IsAncestorOf(descendantPattern));
+ }
+
+ [Test]
+ public void IsAncestorOf_ConstantSegmentMismatch()
+ {
+ var ancestorPattern = new RequestPathPattern("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}");
+ var descendantPattern = new RequestPathPattern("/tenants/{tenantId}/resourceGroups/{resourceGroupName}");
+ Assert.IsFalse(ancestorPattern.IsAncestorOf(descendantPattern));
+ }
+ }
+}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/bar.tsp b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/bar.tsp
index 2b0ea5185f81..524755706f4d 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/bar.tsp
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/bar.tsp
@@ -51,6 +51,7 @@ model BarSettingsResource is ProxyResource {
property: BarQuotaProperties;
anotherProperty: BarQuotaProperties;
flattenedNestedProperty: BarNestedQuotaProperties;
+ optionalFlattenProperty?: optionalFlattenPropertyType;
}
@parentResource(Bar)
@@ -68,6 +69,10 @@ model BarMiddleNestedQuotaProperties extends BarDeeplyNestedQuotaProperties {
middleProp2: Record;
}
+model optionalFlattenPropertyType {
+ randomCollectionProp: string[];
+}
+
model BarDeeplyNestedQuotaProperties {
innerProp1?: int32;
innerProp2: string;
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/databox.tsp b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/databox.tsp
new file mode 100644
index 000000000000..c056ec5dcf07
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/databox.tsp
@@ -0,0 +1,56 @@
+import "@typespec/rest";
+import "@typespec/openapi";
+import "@azure-tools/typespec-azure-core";
+import "@azure-tools/typespec-azure-resource-manager";
+
+namespace MgmtTypeSpec;
+
+using TypeSpec.Rest;
+using Azure.ResourceManager;
+using TypeSpec.Http;
+using TypeSpec.OpenAPI;
+
+
+model JobResource
+ is Azure.ResourceManager.TrackedResource {
+ ...ResourceNameParameter<
+ Resource = JobResource,
+ KeyName = "jobName",
+ SegmentName = "jobs",
+ NamePattern = "^[-\\w\\.]+$"
+ >;
+}
+
+model JobProperties {
+ jobName: string;
+}
+
+@armResourceOperations
+interface JobResources {
+ /**
+ * Gets information about the specified job.
+ */
+ get is ArmResourceRead<
+ JobResource,
+ Parameters = {
+ /**
+ * $expand is supported on details parameter for job, which provides details on the job stages.
+ */
+ @query("$expand")
+ $expand?: string;
+ },
+ >;
+
+ #suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-patch" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
+ @patch(#{ implicitOptionality: false })
+ update is ArmCustomPatchAsync<
+ JobResource,
+ PatchModel = JobResourceUpdateParameter,
+ >;
+}
+
+model JobResourceUpdateParameter {
+ properties?: JobProperties;
+ #suppress "@azure-tools/typespec-azure-resource-manager/arm-no-record" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
+ tags?: Record;
+}
\ No newline at end of file
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/main.tsp b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/main.tsp
index 63846603a96f..39a5860551d4 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/main.tsp
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/main.tsp
@@ -7,7 +7,9 @@ import "./baz.tsp";
import "./zoo.tsp";
import "./routes.tsp";
import "./endpoint.tsp";
-
+import "./selfhelp.tsp";
+import "./playwright.tsp";
+import "./databox.tsp";
using TypeSpec.Versioning;
using Azure.ClientGenerator.Core;
using Azure.ResourceManager;
@@ -34,4 +36,4 @@ enum Versions {
@@clientLocation(Bars.update, "Bar");
#suppress "deprecated"
-@@flattenProperty(BarSettingsResource.flattenedNestedProperty);
+@@Azure.ClientGenerator.Core.Legacy.flattenProperty(BarSettingsResource.flattenedNestedProperty);
\ No newline at end of file
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/playwright.tsp b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/playwright.tsp
new file mode 100644
index 000000000000..cd61c3737626
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/playwright.tsp
@@ -0,0 +1,44 @@
+import "@typespec/rest";
+import "@azure-tools/typespec-azure-core";
+import "@azure-tools/typespec-azure-resource-manager";
+
+namespace MgmtTypeSpec;
+
+using Azure.Core;
+using Azure.ResourceManager;
+using TypeSpec.Rest;
+
+@doc("Subscription-level location-based Playwright quota resource.")
+@parentResource(SubscriptionLocationResource)
+model PlaywrightQuota is ProxyResource {
+ ...ResourceNameParameter;
+}
+
+@doc("Playwright quota names.")
+union PlaywrightQuotaName {
+ string,
+
+ @doc("Quota for execution duration in minutes.")
+ ExecutionMinutes: "ExecutionMinutes",
+}
+
+@doc("Subscription-level location-based Playwright quota resource properties.")
+model PlaywrightQuotaProperties {
+ @visibility(Lifecycle.Read)
+ @doc("The subscription-level location-based Playwright quota resource free-trial properties.")
+ freeTrial?: string;
+
+ @visibility(Lifecycle.Read)
+ @doc("The status of the last resource operation.")
+ provisioningState?: string;
+}
+
+
+@armResourceOperations
+interface PlaywrightQuotas {
+ @doc("Get subscription-level location-based Playwright quota resource by name.")
+ get is ArmResourceRead;
+
+ @doc("List Playwright quota resources for a given subscription Id.")
+ listBySubscription is ArmListBySubscription;
+}
\ No newline at end of file
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/selfhelp.tsp b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/selfhelp.tsp
new file mode 100644
index 000000000000..146904514395
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/selfhelp.tsp
@@ -0,0 +1,30 @@
+import "@azure-tools/typespec-azure-core";
+import "@azure-tools/typespec-azure-resource-manager";
+import "@typespec/openapi";
+import "@typespec/rest";
+
+using Azure.ResourceManager;
+using TypeSpec.Http;
+using TypeSpec.OpenAPI;
+
+namespace MgmtTypeSpec;
+
+model SelfHelpResource
+ is Azure.ResourceManager.ExtensionResource {
+ ...ResourceNameParameter<
+ Resource = SelfHelpResource,
+ KeyName = "selfHelpName",
+ SegmentName = "selfHelps",
+ NamePattern = ""
+ >;
+}
+
+model SelfHelpResourceProperties {
+ selfHelpId: string;
+}
+
+#suppress "@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
+@armResourceOperations
+interface SolutionResources {
+ get is Extension.Read;
+}
\ No newline at end of file
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.Serialization.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.Serialization.cs
index 6e680bc60eb8..ab171884174d 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.Serialization.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.Serialization.cs
@@ -82,7 +82,7 @@ internal static BarData DeserializeBarData(JsonElement element, ModelReaderWrite
SystemData systemData = default;
IDictionary additionalBinaryDataProperties = new ChangeTrackingDictionary();
IDictionary tags = default;
- string location = default;
+ AzureLocation location = default;
BarProperties properties = default;
foreach (var prop in element.EnumerateObject())
{
@@ -141,7 +141,7 @@ internal static BarData DeserializeBarData(JsonElement element, ModelReaderWrite
}
if (prop.NameEquals("location"u8))
{
- location = prop.Value.GetString();
+ location = new AzureLocation(prop.Value.GetString());
continue;
}
if (prop.NameEquals("properties"u8))
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.cs
index 5e7c9fbd91b1..3e8990dd5d99 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarData.cs
@@ -21,11 +21,8 @@ public partial class BarData : TrackedResourceData
/// Initializes a new instance of .
/// The geo-location where the resource lives.
- /// is null.
- public BarData(string location) : base(location)
+ public BarData(AzureLocation location) : base(location)
{
- Argument.AssertNotNull(location, nameof(location));
-
}
/// Initializes a new instance of .
@@ -37,7 +34,7 @@ public BarData(string location) : base(location)
/// Resource tags.
/// The geo-location where the resource lives.
/// The resource-specific properties for this resource.
- internal BarData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, IDictionary tags, string location, BarProperties properties) : base(id, name, resourceType, systemData, tags, location)
+ internal BarData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, IDictionary tags, AzureLocation location, BarProperties properties) : base(id, name, resourceType, systemData, tags, location)
{
_additionalBinaryDataProperties = additionalBinaryDataProperties;
Properties = properties;
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarResource.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarResource.cs
index c37df128d954..630ec7b4f696 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarResource.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarResource.cs
@@ -305,7 +305,7 @@ public virtual async Task> AddTagAsync(string key, string
}
else
{
- BarData current = (await GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ BarData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
BarData patch = new BarData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -353,7 +353,7 @@ public virtual Response AddTag(string key, string value, Cancellati
}
else
{
- BarData current = Get(cancellationToken).Value.Data;
+ BarData current = Get(cancellationToken: cancellationToken).Value.Data;
BarData patch = new BarData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -400,7 +400,7 @@ public virtual async Task> SetTagsAsync(IDictionary result = await UpdateAsync(patch, cancellationToken).ConfigureAwait(false);
@@ -443,7 +443,7 @@ public virtual Response SetTags(IDictionary tags, C
}
else
{
- BarData current = Get(cancellationToken).Value.Data;
+ BarData current = Get(cancellationToken: cancellationToken).Value.Data;
BarData patch = new BarData();
patch.Tags.ReplaceWith(tags);
Response result = Update(patch, cancellationToken);
@@ -485,7 +485,7 @@ public virtual async Task> RemoveTagAsync(string key, Canc
}
else
{
- BarData current = (await GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ BarData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
BarData patch = new BarData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -531,7 +531,7 @@ public virtual Response RemoveTag(string key, CancellationToken can
}
else
{
- BarData current = Get(cancellationToken).Value.Data;
+ BarData current = Get(cancellationToken: cancellationToken).Value.Data;
BarData patch = new BarData();
foreach (KeyValuePair tag in current.Tags)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.Serialization.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.Serialization.cs
index 15b3d6d9feb4..c4083ea1e27e 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.Serialization.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.Serialization.cs
@@ -70,6 +70,11 @@ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWri
writer.WriteObjectValue(AnotherProperty, options);
writer.WritePropertyName("flattenedNestedProperty"u8);
writer.WriteObjectValue(FlattenedNestedProperty, options);
+ if (Optional.IsDefined(OptionalFlattenProperty))
+ {
+ writer.WritePropertyName("optionalFlattenProperty"u8);
+ writer.WriteObjectValue(OptionalFlattenProperty, options);
+ }
}
/// The JSON reader.
@@ -107,6 +112,7 @@ internal static BarSettingsResourceData DeserializeBarSettingsResourceData(JsonE
BarQuotaProperties @property = default;
BarQuotaProperties anotherProperty = default;
BarNestedQuotaProperties flattenedNestedProperty = default;
+ OptionalFlattenPropertyType optionalFlattenProperty = default;
foreach (var prop in element.EnumerateObject())
{
if (prop.NameEquals("id"u8))
@@ -186,6 +192,15 @@ internal static BarSettingsResourceData DeserializeBarSettingsResourceData(JsonE
flattenedNestedProperty = BarNestedQuotaProperties.DeserializeBarNestedQuotaProperties(prop.Value, options);
continue;
}
+ if (prop.NameEquals("optionalFlattenProperty"u8))
+ {
+ if (prop.Value.ValueKind == JsonValueKind.Null)
+ {
+ continue;
+ }
+ optionalFlattenProperty = OptionalFlattenPropertyType.DeserializeOptionalFlattenPropertyType(prop.Value, options);
+ continue;
+ }
if (options.Format != "W")
{
additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText()));
@@ -201,7 +216,8 @@ internal static BarSettingsResourceData DeserializeBarSettingsResourceData(JsonE
stringArray ?? new ChangeTrackingList(),
@property,
anotherProperty,
- flattenedNestedProperty);
+ flattenedNestedProperty,
+ optionalFlattenProperty);
}
/// The client options for reading and writing models.
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs
index df5a31fc8960..66839da53e1b 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BarSettingsResourceData.cs
@@ -36,7 +36,7 @@ public BarSettingsResourceData(BarQuotaProperties @property, BarQuotaProperties
InnerProp2 = innerProp2;
MiddleProp1 = middleProp1;
Prop2 = prop2;
- InitializeBarNestedQuotaProperties();
+ FlattenedNestedProperty = new BarNestedQuotaProperties(innerProp2, middleProp1, new ChangeTrackingDictionary(), new ChangeTrackingList(), prop2);
}
/// Initializes a new instance of .
@@ -50,7 +50,8 @@ public BarSettingsResourceData(BarQuotaProperties @property, BarQuotaProperties
///
///
///
- internal BarSettingsResourceData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, BarSettingsProperties properties, IList stringArray, BarQuotaProperties @property, BarQuotaProperties anotherProperty, BarNestedQuotaProperties flattenedNestedProperty) : base(id, name, resourceType, systemData)
+ ///
+ internal BarSettingsResourceData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, BarSettingsProperties properties, IList stringArray, BarQuotaProperties @property, BarQuotaProperties anotherProperty, BarNestedQuotaProperties flattenedNestedProperty, OptionalFlattenPropertyType optionalFlattenProperty) : base(id, name, resourceType, systemData)
{
_additionalBinaryDataProperties = additionalBinaryDataProperties;
Properties = properties;
@@ -58,6 +59,7 @@ internal BarSettingsResourceData(ResourceIdentifier id, string name, ResourceTyp
Property = @property;
AnotherProperty = anotherProperty;
FlattenedNestedProperty = flattenedNestedProperty;
+ OptionalFlattenProperty = optionalFlattenProperty;
}
/// The resource-specific properties for this resource.
@@ -75,6 +77,9 @@ internal BarSettingsResourceData(ResourceIdentifier id, string name, ResourceTyp
/// Gets or sets the FlattenedNestedProperty.
internal BarNestedQuotaProperties FlattenedNestedProperty { get; set; }
+ /// Gets or sets the OptionalFlattenProperty.
+ internal OptionalFlattenPropertyType OptionalFlattenProperty { get; set; }
+
/// Gets or sets the InnerProp1.
public int? InnerProp1
{
@@ -131,7 +136,7 @@ public IDictionary MiddleProp2
{
get
{
- return FlattenedNestedProperty is null ? default : FlattenedNestedProperty.MiddleProp2;
+ return FlattenedNestedProperty.MiddleProp2;
}
}
@@ -140,7 +145,7 @@ public IList Prop1
{
get
{
- return FlattenedNestedProperty is null ? default : FlattenedNestedProperty.Prop1;
+ return FlattenedNestedProperty.Prop1;
}
}
@@ -196,15 +201,16 @@ public int? AnotherPropertyLeft
}
}
- private void InitializeBarNestedQuotaProperties()
+ /// Gets the RandomCollectionProp.
+ public IList OptionalFlattenPropertyRandomCollectionProp
{
- if (FlattenedNestedProperty is null)
+ get
{
- FlattenedNestedProperty = new BarNestedQuotaProperties
- {
- MiddleProp2 = new ChangeTrackingDictionary(),
- Prop1 = new ChangeTrackingList()
- };
+ return OptionalFlattenProperty is null ? default : OptionalFlattenProperty.RandomCollectionProp;
+ }
+ set
+ {
+ OptionalFlattenProperty = new OptionalFlattenPropertyType(value);
}
}
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.Serialization.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.Serialization.cs
index 8f0b71710483..dc03094c000b 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.Serialization.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.Serialization.cs
@@ -82,7 +82,7 @@ internal static BazData DeserializeBazData(JsonElement element, ModelReaderWrite
SystemData systemData = default;
IDictionary additionalBinaryDataProperties = new ChangeTrackingDictionary();
IDictionary tags = default;
- string location = default;
+ AzureLocation location = default;
BazProperties properties = default;
foreach (var prop in element.EnumerateObject())
{
@@ -141,7 +141,7 @@ internal static BazData DeserializeBazData(JsonElement element, ModelReaderWrite
}
if (prop.NameEquals("location"u8))
{
- location = prop.Value.GetString();
+ location = new AzureLocation(prop.Value.GetString());
continue;
}
if (prop.NameEquals("properties"u8))
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.cs
index 1522a315144d..224ef09843a1 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazData.cs
@@ -21,11 +21,8 @@ public partial class BazData : TrackedResourceData
/// Initializes a new instance of .
/// The geo-location where the resource lives.
- /// is null.
- public BazData(string location) : base(location)
+ public BazData(AzureLocation location) : base(location)
{
- Argument.AssertNotNull(location, nameof(location));
-
}
/// Initializes a new instance of .
@@ -37,7 +34,7 @@ public BazData(string location) : base(location)
/// Resource tags.
/// The geo-location where the resource lives.
/// The resource-specific properties for this resource.
- internal BazData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, IDictionary tags, string location, BazProperties properties) : base(id, name, resourceType, systemData, tags, location)
+ internal BazData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, IDictionary tags, AzureLocation location, BazProperties properties) : base(id, name, resourceType, systemData, tags, location)
{
_additionalBinaryDataProperties = additionalBinaryDataProperties;
Properties = properties;
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazResource.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazResource.cs
index a493c7add159..741f96823210 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazResource.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/BazResource.cs
@@ -314,7 +314,7 @@ public virtual async Task> AddTagAsync(string key, string
}
else
{
- BazData current = (await GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ BazData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
BazData patch = new BazData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -362,7 +362,7 @@ public virtual Response AddTag(string key, string value, Cancellati
}
else
{
- BazData current = Get(cancellationToken).Value.Data;
+ BazData current = Get(cancellationToken: cancellationToken).Value.Data;
BazData patch = new BazData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -409,7 +409,7 @@ public virtual async Task> SetTagsAsync(IDictionary result = await UpdateAsync(WaitUntil.Completed, patch, cancellationToken).ConfigureAwait(false);
@@ -452,7 +452,7 @@ public virtual Response SetTags(IDictionary tags, C
}
else
{
- BazData current = Get(cancellationToken).Value.Data;
+ BazData current = Get(cancellationToken: cancellationToken).Value.Data;
BazData patch = new BazData();
patch.Tags.ReplaceWith(tags);
ArmOperation result = Update(WaitUntil.Completed, patch, cancellationToken);
@@ -494,7 +494,7 @@ public virtual async Task> RemoveTagAsync(string key, Canc
}
else
{
- BazData current = (await GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ BazData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
BazData patch = new BazData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -540,7 +540,7 @@ public virtual Response RemoveTag(string key, CancellationToken can
}
else
{
- BazData current = Get(cancellationToken).Value.Data;
+ BazData current = Get(cancellationToken: cancellationToken).Value.Data;
BazData patch = new BazData();
foreach (KeyValuePair tag in current.Tags)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MgmtTypeSpecExtensions.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MgmtTypeSpecExtensions.cs
index a7e1312b88db..0a97588f3d1c 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MgmtTypeSpecExtensions.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MgmtTypeSpecExtensions.cs
@@ -174,6 +174,82 @@ public static async Task> GetEndpointResourceAsync(th
return await GetMockableMgmtTypeSpecArmClient(client).GetEndpointResourceAsync(scope, endpointName, cancellationToken).ConfigureAwait(false);
}
+ /// Gets an object representing a along with the instance operations that can be performed on it but with no data.
+ /// The the method will execute against.
+ /// The resource ID of the resource to get.
+ /// is null.
+ /// Returns a object.
+ public static SelfHelpResource GetSelfHelpResource(this ArmClient client, ResourceIdentifier id)
+ {
+ Argument.AssertNotNull(client, nameof(client));
+
+ return GetMockableMgmtTypeSpecArmClient(client).GetSelfHelpResource(id);
+ }
+
+ /// Gets a collection of objects within the specified scope.
+ /// The the method will execute against.
+ /// The scope of the resource collection to get.
+ /// is null.
+ /// Returns a collection of objects.
+ public static SelfHelpResourceCollection GetSelfHelpResources(this ArmClient client, ResourceIdentifier scope)
+ {
+ Argument.AssertNotNull(client, nameof(client));
+
+ return GetMockableMgmtTypeSpecArmClient(client).GetSelfHelpResources(scope);
+ }
+
+ /// Get a SelfHelpResource.
+ /// The the method will execute against.
+ /// The scope of the resource collection to get.
+ /// The name of the SelfHelpResource.
+ /// The cancellation token to use.
+ /// is null.
+ [ForwardsClientCalls]
+ public static Response GetSelfHelpResource(this ArmClient client, ResourceIdentifier scope, string selfHelpName, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(client, nameof(client));
+
+ return GetMockableMgmtTypeSpecArmClient(client).GetSelfHelpResource(scope, selfHelpName, cancellationToken);
+ }
+
+ /// Get a SelfHelpResource.
+ /// The the method will execute against.
+ /// The scope of the resource collection to get.
+ /// The name of the SelfHelpResource.
+ /// The cancellation token to use.
+ /// is null.
+ [ForwardsClientCalls]
+ public static async Task> GetSelfHelpResourceAsync(this ArmClient client, ResourceIdentifier scope, string selfHelpName, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(client, nameof(client));
+
+ return await GetMockableMgmtTypeSpecArmClient(client).GetSelfHelpResourceAsync(scope, selfHelpName, cancellationToken).ConfigureAwait(false);
+ }
+
+ /// Gets an object representing a along with the instance operations that can be performed on it but with no data.
+ /// The the method will execute against.
+ /// The resource ID of the resource to get.
+ /// is null.
+ /// Returns a object.
+ public static PlaywrightQuotaResource GetPlaywrightQuotaResource(this ArmClient client, ResourceIdentifier id)
+ {
+ Argument.AssertNotNull(client, nameof(client));
+
+ return GetMockableMgmtTypeSpecArmClient(client).GetPlaywrightQuotaResource(id);
+ }
+
+ /// Gets an object representing a along with the instance operations that can be performed on it but with no data.
+ /// The the method will execute against.
+ /// The resource ID of the resource to get.
+ /// is null.
+ /// Returns a object.
+ public static JobResource GetJobResource(this ArmClient client, ResourceIdentifier id)
+ {
+ Argument.AssertNotNull(client, nameof(client));
+
+ return GetMockableMgmtTypeSpecArmClient(client).GetJobResource(id);
+ }
+
/// Gets a collection of Foos in the .
/// The the method will execute against.
/// is null.
@@ -296,6 +372,85 @@ public static Response GetZoo(this ResourceGroupResource resourceGr
return GetMockableMgmtTypeSpecResourceGroupResource(resourceGroupResource).GetZoo(zooName, cancellationToken);
}
+ /// Gets a collection of JobResources in the .
+ /// The the method will execute against.
+ /// is null.
+ /// An object representing collection of JobResources and their operations over a JobResource.
+ public static JobResourceCollection GetJobResources(this ResourceGroupResource resourceGroupResource)
+ {
+ Argument.AssertNotNull(resourceGroupResource, nameof(resourceGroupResource));
+
+ return GetMockableMgmtTypeSpecResourceGroupResource(resourceGroupResource).GetJobResources();
+ }
+
+ /// Gets information about the specified job.
+ /// The the method will execute against.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ [ForwardsClientCalls]
+ public static async Task> GetJobResourceAsync(this ResourceGroupResource resourceGroupResource, string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(resourceGroupResource, nameof(resourceGroupResource));
+
+ return await GetMockableMgmtTypeSpecResourceGroupResource(resourceGroupResource).GetJobResourceAsync(jobName, expand, cancellationToken).ConfigureAwait(false);
+ }
+
+ /// Gets information about the specified job.
+ /// The the method will execute against.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ [ForwardsClientCalls]
+ public static Response GetJobResource(this ResourceGroupResource resourceGroupResource, string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(resourceGroupResource, nameof(resourceGroupResource));
+
+ return GetMockableMgmtTypeSpecResourceGroupResource(resourceGroupResource).GetJobResource(jobName, expand, cancellationToken);
+ }
+
+ /// Gets a collection of PlaywrightQuotas in the .
+ /// The the method will execute against.
+ /// The location for the resource.
+ /// is null.
+ /// An object representing collection of PlaywrightQuotas and their operations over a PlaywrightQuotaResource.
+ public static PlaywrightQuotaCollection GetPlaywrightQuotas(this SubscriptionResource subscriptionResource, AzureLocation location)
+ {
+ Argument.AssertNotNull(subscriptionResource, nameof(subscriptionResource));
+
+ return GetMockableMgmtTypeSpecSubscriptionResource(subscriptionResource).GetPlaywrightQuotas(location);
+ }
+
+ /// Get subscription-level location-based Playwright quota resource by name.
+ /// The the method will execute against.
+ /// The location for the resource.
+ /// The name of the PlaywrightQuota.
+ /// The cancellation token to use.
+ /// is null.
+ [ForwardsClientCalls]
+ public static async Task> GetPlaywrightQuotaAsync(this SubscriptionResource subscriptionResource, AzureLocation location, PlaywrightQuotaName playwrightQuotaName, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(subscriptionResource, nameof(subscriptionResource));
+
+ return await GetMockableMgmtTypeSpecSubscriptionResource(subscriptionResource).GetPlaywrightQuotaAsync(location, playwrightQuotaName, cancellationToken).ConfigureAwait(false);
+ }
+
+ /// Get subscription-level location-based Playwright quota resource by name.
+ /// The the method will execute against.
+ /// The location for the resource.
+ /// The name of the PlaywrightQuota.
+ /// The cancellation token to use.
+ /// is null.
+ [ForwardsClientCalls]
+ public static Response GetPlaywrightQuota(this SubscriptionResource subscriptionResource, AzureLocation location, PlaywrightQuotaName playwrightQuotaName, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(subscriptionResource, nameof(subscriptionResource));
+
+ return GetMockableMgmtTypeSpecSubscriptionResource(subscriptionResource).GetPlaywrightQuota(location, playwrightQuotaName, cancellationToken);
+ }
+
/// List Foo resources by subscription ID.
/// The the method will execute against.
/// The cancellation token to use.
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecArmClient.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecArmClient.cs
index 2f4bab3dcdd0..5386fab3e0b8 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecArmClient.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecArmClient.cs
@@ -137,5 +137,68 @@ public virtual async Task> GetEndpointResourceAsync(R
return await GetEndpointResources(scope).GetAsync(endpointName, cancellationToken).ConfigureAwait(false);
}
+
+ /// Gets an object representing a along with the instance operations that can be performed on it but with no data.
+ /// The resource ID of the resource to get.
+ /// Returns a object.
+ public virtual SelfHelpResource GetSelfHelpResource(ResourceIdentifier id)
+ {
+ SelfHelpResource.ValidateResourceId(id);
+ return new SelfHelpResource(Client, id);
+ }
+
+ /// Gets a collection of objects within the specified scope.
+ /// The scope of the resource collection to get.
+ /// Returns a collection of objects.
+ public virtual SelfHelpResourceCollection GetSelfHelpResources(ResourceIdentifier scope)
+ {
+ return new SelfHelpResourceCollection(Client, scope);
+ }
+
+ /// Get a SelfHelpResource.
+ /// The scope of the resource collection to get.
+ /// The name of the SelfHelpResource.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ [ForwardsClientCalls]
+ public virtual Response GetSelfHelpResource(ResourceIdentifier scope, string selfHelpName, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(selfHelpName, nameof(selfHelpName));
+
+ return GetSelfHelpResources(scope).Get(selfHelpName, cancellationToken);
+ }
+
+ /// Get a SelfHelpResource.
+ /// The scope of the resource collection to get.
+ /// The name of the SelfHelpResource.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ [ForwardsClientCalls]
+ public virtual async Task> GetSelfHelpResourceAsync(ResourceIdentifier scope, string selfHelpName, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(selfHelpName, nameof(selfHelpName));
+
+ return await GetSelfHelpResources(scope).GetAsync(selfHelpName, cancellationToken).ConfigureAwait(false);
+ }
+
+ /// Gets an object representing a along with the instance operations that can be performed on it but with no data.
+ /// The resource ID of the resource to get.
+ /// Returns a object.
+ public virtual PlaywrightQuotaResource GetPlaywrightQuotaResource(ResourceIdentifier id)
+ {
+ PlaywrightQuotaResource.ValidateResourceId(id);
+ return new PlaywrightQuotaResource(Client, id);
+ }
+
+ /// Gets an object representing a along with the instance operations that can be performed on it but with no data.
+ /// The resource ID of the resource to get.
+ /// Returns a object.
+ public virtual JobResource GetJobResource(ResourceIdentifier id)
+ {
+ JobResource.ValidateResourceId(id);
+ return new JobResource(Client, id);
+ }
}
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecResourceGroupResource.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecResourceGroupResource.cs
index 837b9657e948..c1225fcdfcbb 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecResourceGroupResource.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecResourceGroupResource.cs
@@ -136,5 +136,40 @@ public virtual Response GetZoo(string zooName, CancellationToken ca
return GetZoos().Get(zooName, cancellationToken);
}
+
+ /// Gets a collection of JobResources in the .
+ /// An object representing collection of JobResources and their operations over a JobResource.
+ public virtual JobResourceCollection GetJobResources()
+ {
+ return GetCachedClient(client => new JobResourceCollection(client, Id));
+ }
+
+ /// Gets information about the specified job.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ [ForwardsClientCalls]
+ public virtual async Task> GetJobResourceAsync(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ return await GetJobResources().GetAsync(jobName, expand, cancellationToken).ConfigureAwait(false);
+ }
+
+ /// Gets information about the specified job.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ [ForwardsClientCalls]
+ public virtual Response GetJobResource(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ return GetJobResources().Get(jobName, expand, cancellationToken);
+ }
}
}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecSubscriptionResource.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecSubscriptionResource.cs
index 7963dfa41a2b..491de17a9c1b 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecSubscriptionResource.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/Extensions/MockableMgmtTypeSpecSubscriptionResource.cs
@@ -58,6 +58,34 @@ internal MockableMgmtTypeSpecSubscriptionResource(ArmClient client, ResourceIden
private MgmtTypeSpecClient MgmtTypeSpecClientRestClient => _mgmtTypeSpecClientRestClient ??= new MgmtTypeSpecClient(MgmtTypeSpecClientClientDiagnostics, Pipeline, Endpoint, "2024-05-01");
+ /// Gets a collection of PlaywrightQuotas in the .
+ /// The location for the resource.
+ /// An object representing collection of PlaywrightQuotas and their operations over a PlaywrightQuotaResource.
+ public virtual PlaywrightQuotaCollection GetPlaywrightQuotas(AzureLocation location)
+ {
+ return GetCachedClient(client => new PlaywrightQuotaCollection(client, Id, location));
+ }
+
+ /// Get subscription-level location-based Playwright quota resource by name.
+ /// The location for the resource.
+ /// The name of the PlaywrightQuota.
+ /// The cancellation token to use.
+ [ForwardsClientCalls]
+ public virtual async Task> GetPlaywrightQuotaAsync(AzureLocation location, PlaywrightQuotaName playwrightQuotaName, CancellationToken cancellationToken = default)
+ {
+ return await GetPlaywrightQuotas(location).GetAsync(playwrightQuotaName, cancellationToken).ConfigureAwait(false);
+ }
+
+ /// Get subscription-level location-based Playwright quota resource by name.
+ /// The location for the resource.
+ /// The name of the PlaywrightQuota.
+ /// The cancellation token to use.
+ [ForwardsClientCalls]
+ public virtual Response GetPlaywrightQuota(AzureLocation location, PlaywrightQuotaName playwrightQuotaName, CancellationToken cancellationToken = default)
+ {
+ return GetPlaywrightQuotas(location).Get(playwrightQuotaName, cancellationToken);
+ }
+
/// List Foo resources by subscription ID.
/// The cancellation token to use.
/// A collection of that may take multiple service requests to iterate over.
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.Serialization.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.Serialization.cs
index 1403260190cf..10041424228f 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.Serialization.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.Serialization.cs
@@ -88,7 +88,7 @@ internal static FooData DeserializeFooData(JsonElement element, ModelReaderWrite
SystemData systemData = default;
IDictionary additionalBinaryDataProperties = new ChangeTrackingDictionary();
IDictionary tags = default;
- string location = default;
+ AzureLocation location = default;
FooProperties properties = default;
ExtendedLocation extendedLocation = default;
foreach (var prop in element.EnumerateObject())
@@ -148,7 +148,7 @@ internal static FooData DeserializeFooData(JsonElement element, ModelReaderWrite
}
if (prop.NameEquals("location"u8))
{
- location = prop.Value.GetString();
+ location = new AzureLocation(prop.Value.GetString());
continue;
}
if (prop.NameEquals("properties"u8))
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.cs
index 0d1da356c948..6ebab2e5aa07 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooData.cs
@@ -22,11 +22,8 @@ public partial class FooData : TrackedResourceData
/// Initializes a new instance of .
/// The geo-location where the resource lives.
- /// is null.
- public FooData(string location) : base(location)
+ public FooData(AzureLocation location) : base(location)
{
- Argument.AssertNotNull(location, nameof(location));
-
}
/// Initializes a new instance of .
@@ -39,7 +36,7 @@ public FooData(string location) : base(location)
/// The geo-location where the resource lives.
/// The resource-specific properties for this resource.
///
- internal FooData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, IDictionary tags, string location, FooProperties properties, ExtendedLocation extendedLocation) : base(id, name, resourceType, systemData, tags, location)
+ internal FooData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, IDictionary additionalBinaryDataProperties, IDictionary tags, AzureLocation location, FooProperties properties, ExtendedLocation extendedLocation) : base(id, name, resourceType, systemData, tags, location)
{
_additionalBinaryDataProperties = additionalBinaryDataProperties;
Properties = properties;
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooResource.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooResource.cs
index d97900b140f6..44b20d66dc62 100644
--- a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooResource.cs
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/FooResource.cs
@@ -314,7 +314,7 @@ public virtual async Task> AddTagAsync(string key, string
}
else
{
- FooData current = (await GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ FooData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
FooData patch = new FooData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -362,7 +362,7 @@ public virtual Response AddTag(string key, string value, Cancellati
}
else
{
- FooData current = Get(cancellationToken).Value.Data;
+ FooData current = Get(cancellationToken: cancellationToken).Value.Data;
FooData patch = new FooData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -409,7 +409,7 @@ public virtual async Task> SetTagsAsync(IDictionary result = await UpdateAsync(WaitUntil.Completed, patch, cancellationToken).ConfigureAwait(false);
@@ -452,7 +452,7 @@ public virtual Response SetTags(IDictionary tags, C
}
else
{
- FooData current = Get(cancellationToken).Value.Data;
+ FooData current = Get(cancellationToken: cancellationToken).Value.Data;
FooData patch = new FooData();
patch.Tags.ReplaceWith(tags);
ArmOperation result = Update(WaitUntil.Completed, patch, cancellationToken);
@@ -494,7 +494,7 @@ public virtual async Task> RemoveTagAsync(string key, Canc
}
else
{
- FooData current = (await GetAsync(cancellationToken).ConfigureAwait(false)).Value.Data;
+ FooData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
FooData patch = new FooData();
foreach (KeyValuePair tag in current.Tags)
{
@@ -540,7 +540,7 @@ public virtual Response RemoveTag(string key, CancellationToken can
}
else
{
- FooData current = Get(cancellationToken).Value.Data;
+ FooData current = Get(cancellationToken: cancellationToken).Value.Data;
FooData patch = new FooData();
foreach (KeyValuePair tag in current.Tags)
{
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResource.Serialization.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResource.Serialization.cs
new file mode 100644
index 000000000000..8bf8ef080092
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResource.Serialization.cs
@@ -0,0 +1,39 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+//
+
+#nullable disable
+
+using System;
+using System.ClientModel.Primitives;
+using System.Text.Json;
+
+namespace MgmtTypeSpec
+{
+ ///
+ public partial class JobResource : IJsonModel
+ {
+ private static IJsonModel s_dataDeserializationInstance;
+
+ private static IJsonModel DataDeserializationInstance => s_dataDeserializationInstance ??= new JobResourceData();
+
+ /// The writer to serialize the model to.
+ /// The client options for reading and writing models.
+ void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options) => ((IJsonModel)Data).Write(writer, options);
+
+ /// The reader for deserializing the model.
+ /// The client options for reading and writing models.
+ JobResourceData IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => DataDeserializationInstance.Create(ref reader, options);
+
+ /// The client options for reading and writing models.
+ BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => ModelReaderWriter.Write(Data, options, MgmtTypeSpecContext.Default);
+
+ /// The binary data to be processed.
+ /// The client options for reading and writing models.
+ JobResourceData IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => ModelReaderWriter.Read(data, options, MgmtTypeSpecContext.Default);
+
+ /// The client options for reading and writing models.
+ string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => DataDeserializationInstance.GetFormatFromOptions(options);
+ }
+}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResource.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResource.cs
new file mode 100644
index 000000000000..9405c87ac5e8
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResource.cs
@@ -0,0 +1,506 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+//
+
+#nullable disable
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+using Azure;
+using Azure.Core;
+using Azure.Core.Pipeline;
+using Azure.ResourceManager;
+using Azure.ResourceManager.Resources;
+using MgmtTypeSpec.Models;
+
+namespace MgmtTypeSpec
+{
+ ///
+ /// A class representing a JobResource along with the instance operations that can be performed on it.
+ /// If you have a you can construct a from an instance of using the GetResource method.
+ /// Otherwise you can get one from its parent resource using the GetJobResources method.
+ ///
+ public partial class JobResource : ArmResource
+ {
+ private readonly ClientDiagnostics _jobResourcesClientDiagnostics;
+ private readonly JobResources _jobResourcesRestClient;
+ private readonly JobResourceData _data;
+ /// Gets the resource type for the operations.
+ public static readonly ResourceType ResourceType = "MgmtTypeSpec/jobs";
+
+ /// Initializes a new instance of JobResource for mocking.
+ protected JobResource()
+ {
+ }
+
+ /// Initializes a new instance of class.
+ /// The client parameters to use in these operations.
+ /// The resource that is the target of operations.
+ internal JobResource(ArmClient client, JobResourceData data) : this(client, data.Id)
+ {
+ HasData = true;
+ _data = data;
+ }
+
+ /// Initializes a new instance of class.
+ /// The client parameters to use in these operations.
+ /// The identifier of the resource that is the target of operations.
+ internal JobResource(ArmClient client, ResourceIdentifier id) : base(client, id)
+ {
+ TryGetApiVersion(ResourceType, out string jobResourceApiVersion);
+ _jobResourcesClientDiagnostics = new ClientDiagnostics("MgmtTypeSpec", ResourceType.Namespace, Diagnostics);
+ _jobResourcesRestClient = new JobResources(_jobResourcesClientDiagnostics, Pipeline, Endpoint, jobResourceApiVersion ?? "2024-05-01");
+ ValidateResourceId(id);
+ }
+
+ /// Gets whether or not the current instance has data.
+ public virtual bool HasData { get; }
+
+ /// Gets the data representing this Feature.
+ public virtual JobResourceData Data
+ {
+ get
+ {
+ if (!HasData)
+ {
+ throw new InvalidOperationException("The current instance does not have data, you must call Get first.");
+ }
+ return _data;
+ }
+ }
+
+ /// Generate the resource identifier for this resource.
+ /// The subscriptionId.
+ /// The resourceGroupName.
+ /// The jobName.
+ public static ResourceIdentifier CreateResourceIdentifier(string subscriptionId, string resourceGroupName, string jobName)
+ {
+ string resourceId = $"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/MgmtTypeSpec/jobs/{jobName}";
+ return new ResourceIdentifier(resourceId);
+ }
+
+ ///
+ [Conditional("DEBUG")]
+ internal static void ValidateResourceId(ResourceIdentifier id)
+ {
+ if (id.ResourceType != ResourceType)
+ {
+ throw new ArgumentException(string.Format("Invalid resource type {0} expected {1}", id.ResourceType, ResourceType), id);
+ }
+ }
+
+ /// Gets information about the specified job.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ public virtual async Task> GetAsync(string expand = default, CancellationToken cancellationToken = default)
+ {
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.Get");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, expand, context);
+ Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ if (response.Value == null)
+ {
+ throw new RequestFailedException(response.GetRawResponse());
+ }
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Gets information about the specified job.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ public virtual Response Get(string expand = default, CancellationToken cancellationToken = default)
+ {
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.Get");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, expand, context);
+ Response result = Pipeline.ProcessMessage(message, context);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ if (response.Value == null)
+ {
+ throw new RequestFailedException(response.GetRawResponse());
+ }
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Update a JobResource.
+ /// if the method should wait to return until the long-running operation has completed on the service; if it should return after starting the operation. For more information on long-running operations, please see Azure.Core Long-Running Operation samples.
+ /// The resource properties to be updated.
+ /// The cancellation token to use.
+ /// is null.
+ public virtual async Task> UpdateAsync(WaitUntil waitUntil, JobResourcePatch patch, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(patch, nameof(patch));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.Update");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateUpdateRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, JobResourcePatch.ToRequestContent(patch), context);
+ Response response = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ MgmtTypeSpecArmOperation operation = new MgmtTypeSpecArmOperation(
+ new JobResourceOperationSource(Client),
+ _jobResourcesClientDiagnostics,
+ Pipeline,
+ message.Request,
+ response,
+ OperationFinalStateVia.Location);
+ if (waitUntil == WaitUntil.Completed)
+ {
+ await operation.WaitForCompletionAsync(cancellationToken).ConfigureAwait(false);
+ }
+ return operation;
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Update a JobResource.
+ /// if the method should wait to return until the long-running operation has completed on the service; if it should return after starting the operation. For more information on long-running operations, please see Azure.Core Long-Running Operation samples.
+ /// The resource properties to be updated.
+ /// The cancellation token to use.
+ /// is null.
+ public virtual ArmOperation Update(WaitUntil waitUntil, JobResourcePatch patch, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(patch, nameof(patch));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.Update");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateUpdateRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, JobResourcePatch.ToRequestContent(patch), context);
+ Response response = Pipeline.ProcessMessage(message, context);
+ MgmtTypeSpecArmOperation operation = new MgmtTypeSpecArmOperation(
+ new JobResourceOperationSource(Client),
+ _jobResourcesClientDiagnostics,
+ Pipeline,
+ message.Request,
+ response,
+ OperationFinalStateVia.Location);
+ if (waitUntil == WaitUntil.Completed)
+ {
+ operation.WaitForCompletion(cancellationToken);
+ }
+ return operation;
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Add a tag to the current resource.
+ /// The key for the tag.
+ /// The value for the tag.
+ /// The cancellation token to use.
+ /// or is null.
+ public virtual async Task> AddTagAsync(string key, string value, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(key, nameof(key));
+ Argument.AssertNotNull(value, nameof(value));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.AddTag");
+ scope.Start();
+ try
+ {
+ if (await CanUseTagResourceAsync(cancellationToken).ConfigureAwait(false))
+ {
+ Response originalTags = await GetTagResource().GetAsync(cancellationToken).ConfigureAwait(false);
+ originalTags.Value.Data.TagValues[key] = value;
+ await GetTagResource().CreateOrUpdateAsync(WaitUntil.Completed, originalTags.Value.Data, cancellationToken).ConfigureAwait(false);
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, null, context);
+ Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ else
+ {
+ JobResourceData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
+ JobResourcePatch patch = new JobResourcePatch();
+ foreach (KeyValuePair tag in current.Tags)
+ {
+ patch.Tags.Add(tag);
+ }
+ patch.Tags[key] = value;
+ ArmOperation result = await UpdateAsync(WaitUntil.Completed, patch, cancellationToken).ConfigureAwait(false);
+ return Response.FromValue(result.Value, result.GetRawResponse());
+ }
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Add a tag to the current resource.
+ /// The key for the tag.
+ /// The value for the tag.
+ /// The cancellation token to use.
+ /// or is null.
+ public virtual Response AddTag(string key, string value, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(key, nameof(key));
+ Argument.AssertNotNull(value, nameof(value));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.AddTag");
+ scope.Start();
+ try
+ {
+ if (CanUseTagResource(cancellationToken))
+ {
+ Response originalTags = GetTagResource().Get(cancellationToken);
+ originalTags.Value.Data.TagValues[key] = value;
+ GetTagResource().CreateOrUpdate(WaitUntil.Completed, originalTags.Value.Data, cancellationToken);
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, null, context);
+ Response result = Pipeline.ProcessMessage(message, context);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ else
+ {
+ JobResourceData current = Get(cancellationToken: cancellationToken).Value.Data;
+ JobResourcePatch patch = new JobResourcePatch();
+ foreach (KeyValuePair tag in current.Tags)
+ {
+ patch.Tags.Add(tag);
+ }
+ patch.Tags[key] = value;
+ ArmOperation result = Update(WaitUntil.Completed, patch, cancellationToken);
+ return Response.FromValue(result.Value, result.GetRawResponse());
+ }
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Replace the tags on the resource with the given set.
+ /// The tags to set on the resource.
+ /// The cancellation token to use.
+ /// is null.
+ public virtual async Task> SetTagsAsync(IDictionary tags, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(tags, nameof(tags));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.SetTags");
+ scope.Start();
+ try
+ {
+ if (await CanUseTagResourceAsync(cancellationToken).ConfigureAwait(false))
+ {
+ await GetTagResource().DeleteAsync(WaitUntil.Completed, cancellationToken).ConfigureAwait(false);
+ Response originalTags = await GetTagResource().GetAsync(cancellationToken).ConfigureAwait(false);
+ originalTags.Value.Data.TagValues.ReplaceWith(tags);
+ await GetTagResource().CreateOrUpdateAsync(WaitUntil.Completed, originalTags.Value.Data, cancellationToken).ConfigureAwait(false);
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, null, context);
+ Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ else
+ {
+ JobResourceData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
+ JobResourcePatch patch = new JobResourcePatch();
+ patch.Tags.ReplaceWith(tags);
+ ArmOperation result = await UpdateAsync(WaitUntil.Completed, patch, cancellationToken).ConfigureAwait(false);
+ return Response.FromValue(result.Value, result.GetRawResponse());
+ }
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Replace the tags on the resource with the given set.
+ /// The tags to set on the resource.
+ /// The cancellation token to use.
+ /// is null.
+ public virtual Response SetTags(IDictionary tags, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(tags, nameof(tags));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.SetTags");
+ scope.Start();
+ try
+ {
+ if (CanUseTagResource(cancellationToken))
+ {
+ GetTagResource().Delete(WaitUntil.Completed, cancellationToken);
+ Response originalTags = GetTagResource().Get(cancellationToken);
+ originalTags.Value.Data.TagValues.ReplaceWith(tags);
+ GetTagResource().CreateOrUpdate(WaitUntil.Completed, originalTags.Value.Data, cancellationToken);
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, null, context);
+ Response result = Pipeline.ProcessMessage(message, context);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ else
+ {
+ JobResourceData current = Get(cancellationToken: cancellationToken).Value.Data;
+ JobResourcePatch patch = new JobResourcePatch();
+ patch.Tags.ReplaceWith(tags);
+ ArmOperation result = Update(WaitUntil.Completed, patch, cancellationToken);
+ return Response.FromValue(result.Value, result.GetRawResponse());
+ }
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Removes a tag by key from the resource.
+ /// The key for the tag.
+ /// The cancellation token to use.
+ /// is null.
+ public virtual async Task> RemoveTagAsync(string key, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(key, nameof(key));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.RemoveTag");
+ scope.Start();
+ try
+ {
+ if (await CanUseTagResourceAsync(cancellationToken).ConfigureAwait(false))
+ {
+ Response originalTags = await GetTagResource().GetAsync(cancellationToken).ConfigureAwait(false);
+ originalTags.Value.Data.TagValues.Remove(key);
+ await GetTagResource().CreateOrUpdateAsync(WaitUntil.Completed, originalTags.Value.Data, cancellationToken).ConfigureAwait(false);
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, null, context);
+ Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ else
+ {
+ JobResourceData current = (await GetAsync(cancellationToken: cancellationToken).ConfigureAwait(false)).Value.Data;
+ JobResourcePatch patch = new JobResourcePatch();
+ foreach (KeyValuePair tag in current.Tags)
+ {
+ patch.Tags.Add(tag);
+ }
+ patch.Tags.Remove(key);
+ ArmOperation result = await UpdateAsync(WaitUntil.Completed, patch, cancellationToken).ConfigureAwait(false);
+ return Response.FromValue(result.Value, result.GetRawResponse());
+ }
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Removes a tag by key from the resource.
+ /// The key for the tag.
+ /// The cancellation token to use.
+ /// is null.
+ public virtual Response RemoveTag(string key, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNull(key, nameof(key));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResource.RemoveTag");
+ scope.Start();
+ try
+ {
+ if (CanUseTagResource(cancellationToken))
+ {
+ Response originalTags = GetTagResource().Get(cancellationToken);
+ originalTags.Value.Data.TagValues.Remove(key);
+ GetTagResource().CreateOrUpdate(WaitUntil.Completed, originalTags.Value.Data, cancellationToken);
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, Id.Name, null, context);
+ Response result = Pipeline.ProcessMessage(message, context);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ else
+ {
+ JobResourceData current = Get(cancellationToken: cancellationToken).Value.Data;
+ JobResourcePatch patch = new JobResourcePatch();
+ foreach (KeyValuePair tag in current.Tags)
+ {
+ patch.Tags.Add(tag);
+ }
+ patch.Tags.Remove(key);
+ ArmOperation result = Update(WaitUntil.Completed, patch, cancellationToken);
+ return Response.FromValue(result.Value, result.GetRawResponse());
+ }
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+ }
+}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResourceCollection.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResourceCollection.cs
new file mode 100644
index 000000000000..cabe1dd88a54
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResourceCollection.cs
@@ -0,0 +1,252 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+//
+
+#nullable disable
+
+using System;
+using System.Diagnostics;
+using System.Threading;
+using System.Threading.Tasks;
+using Azure;
+using Azure.Core;
+using Azure.Core.Pipeline;
+using Azure.ResourceManager;
+using Azure.ResourceManager.Resources;
+
+namespace MgmtTypeSpec
+{
+ ///
+ /// A class representing a collection of and their operations.
+ /// Each in the collection will belong to the same instance of a parent resource (TODO: add parent resource information).
+ /// To get a instance call the GetJobResources method from an instance of the parent resource.
+ ///
+ public partial class JobResourceCollection : ArmCollection
+ {
+ private readonly ClientDiagnostics _jobResourcesClientDiagnostics;
+ private readonly JobResources _jobResourcesRestClient;
+
+ /// Initializes a new instance of JobResourceCollection for mocking.
+ protected JobResourceCollection()
+ {
+ }
+
+ /// Initializes a new instance of class.
+ /// The client parameters to use in these operations.
+ /// The identifier of the resource that is the target of operations.
+ internal JobResourceCollection(ArmClient client, ResourceIdentifier id) : base(client, id)
+ {
+ TryGetApiVersion(JobResource.ResourceType, out string jobResourceApiVersion);
+ _jobResourcesClientDiagnostics = new ClientDiagnostics("MgmtTypeSpec", JobResource.ResourceType.Namespace, Diagnostics);
+ _jobResourcesRestClient = new JobResources(_jobResourcesClientDiagnostics, Pipeline, Endpoint, jobResourceApiVersion ?? "2024-05-01");
+ ValidateResourceId(id);
+ }
+
+ ///
+ [Conditional("DEBUG")]
+ internal static void ValidateResourceId(ResourceIdentifier id)
+ {
+ if (id.ResourceType != ResourceGroupResource.ResourceType)
+ {
+ throw new ArgumentException(string.Format("Invalid resource type {0} expected {1}", id.ResourceType, ResourceGroupResource.ResourceType), id);
+ }
+ }
+
+ /// Gets information about the specified job.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ public virtual async Task> GetAsync(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResourceCollection.Get");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, jobName, expand, context);
+ Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ if (response.Value == null)
+ {
+ throw new RequestFailedException(response.GetRawResponse());
+ }
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Gets information about the specified job.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ public virtual Response Get(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResourceCollection.Get");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, jobName, expand, context);
+ Response result = Pipeline.ProcessMessage(message, context);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ if (response.Value == null)
+ {
+ throw new RequestFailedException(response.GetRawResponse());
+ }
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Checks to see if the resource exists in azure.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ public virtual async Task> ExistsAsync(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResourceCollection.Exists");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, jobName, expand, context);
+ Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(response.Value != null, response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Checks to see if the resource exists in azure.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ public virtual Response Exists(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResourceCollection.Exists");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, jobName, expand, context);
+ Response result = Pipeline.ProcessMessage(message, context);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ return Response.FromValue(response.Value != null, response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Tries to get details for this resource from the service.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ public virtual async Task> GetIfExistsAsync(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResourceCollection.GetIfExists");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, jobName, expand, context);
+ Response result = await Pipeline.ProcessMessageAsync(message, context).ConfigureAwait(false);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ if (response.Value == null)
+ {
+ return new NoValueResponse(response.GetRawResponse());
+ }
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+
+ /// Tries to get details for this resource from the service.
+ /// The name of the JobResource.
+ /// $expand is supported on details parameter for job, which provides details on the job stages.
+ /// The cancellation token to use.
+ /// is null.
+ /// is an empty string, and was expected to be non-empty.
+ public virtual NullableResponse GetIfExists(string jobName, string expand = default, CancellationToken cancellationToken = default)
+ {
+ Argument.AssertNotNullOrEmpty(jobName, nameof(jobName));
+
+ using DiagnosticScope scope = _jobResourcesClientDiagnostics.CreateScope("JobResourceCollection.GetIfExists");
+ scope.Start();
+ try
+ {
+ RequestContext context = new RequestContext
+ {
+ CancellationToken = cancellationToken
+ };
+ HttpMessage message = _jobResourcesRestClient.CreateGetRequest(Guid.Parse(Id.SubscriptionId), Id.ResourceGroupName, jobName, expand, context);
+ Response result = Pipeline.ProcessMessage(message, context);
+ Response response = Response.FromValue(JobResourceData.FromResponse(result), result);
+ if (response.Value == null)
+ {
+ return new NoValueResponse(response.GetRawResponse());
+ }
+ return Response.FromValue(new JobResource(Client, response.Value), response.GetRawResponse());
+ }
+ catch (Exception e)
+ {
+ scope.Failed(e);
+ throw;
+ }
+ }
+ }
+}
diff --git a/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResourceData.Serialization.cs b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResourceData.Serialization.cs
new file mode 100644
index 000000000000..be632a3402a6
--- /dev/null
+++ b/eng/packages/http-client-csharp-mgmt/generator/TestProjects/Local/Mgmt-TypeSpec/src/Generated/JobResourceData.Serialization.cs
@@ -0,0 +1,213 @@
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License.
+
+//
+
+#nullable disable
+
+using System;
+using System.ClientModel.Primitives;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.Json;
+using Azure;
+using Azure.Core;
+using Azure.ResourceManager.Models;
+using MgmtTypeSpec.Models;
+
+namespace MgmtTypeSpec
+{
+ /// Concrete tracked resource types can be created by aliasing this type using a specific property type.
+ public partial class JobResourceData : IJsonModel
+ {
+ /// Initializes a new instance of for deserialization.
+ internal JobResourceData()
+ {
+ }
+
+ /// The JSON writer.
+ /// The client options for reading and writing models.
+ void IJsonModel.Write(Utf8JsonWriter writer, ModelReaderWriterOptions options)
+ {
+ writer.WriteStartObject();
+ JsonModelWriteCore(writer, options);
+ writer.WriteEndObject();
+ }
+
+ /// The JSON writer.
+ /// The client options for reading and writing models.
+ protected override void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options)
+ {
+ string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format;
+ if (format != "J")
+ {
+ throw new FormatException($"The model {nameof(JobResourceData)} does not support writing '{format}' format.");
+ }
+ base.JsonModelWriteCore(writer, options);
+ writer.WritePropertyName("properties"u8);
+ writer.WriteObjectValue(Properties, options);
+ }
+
+ /// The JSON reader.
+ /// The client options for reading and writing models.
+ JobResourceData IJsonModel.Create(ref Utf8JsonReader reader, ModelReaderWriterOptions options) => (JobResourceData)JsonModelCreateCore(ref reader, options);
+
+ /// The JSON reader.
+ /// The client options for reading and writing models.
+ protected virtual ResourceData JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options)
+ {
+ string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format;
+ if (format != "J")
+ {
+ throw new FormatException($"The model {nameof(JobResourceData)} does not support reading '{format}' format.");
+ }
+ using JsonDocument document = JsonDocument.ParseValue(ref reader);
+ return DeserializeJobResourceData(document.RootElement, options);
+ }
+
+ /// The JSON element to deserialize.
+ /// The client options for reading and writing models.
+ internal static JobResourceData DeserializeJobResourceData(JsonElement element, ModelReaderWriterOptions options)
+ {
+ if (element.ValueKind == JsonValueKind.Null)
+ {
+ return null;
+ }
+ ResourceIdentifier id = default;
+ string name = default;
+ ResourceType resourceType = default;
+ SystemData systemData = default;
+ IDictionary additionalBinaryDataProperties = new ChangeTrackingDictionary();
+ IDictionary tags = default;
+ AzureLocation location = default;
+ JobProperties properties = default;
+ foreach (var prop in element.EnumerateObject())
+ {
+ if (prop.NameEquals("id"u8))
+ {
+ if (prop.Value.ValueKind == JsonValueKind.Null)
+ {
+ continue;
+ }
+ id = new ResourceIdentifier(prop.Value.GetString());
+ continue;
+ }
+ if (prop.NameEquals("name"u8))
+ {
+ name = prop.Value.GetString();
+ continue;
+ }
+ if (prop.NameEquals("type"u8))
+ {
+ if (prop.Value.ValueKind == JsonValueKind.Null)
+ {
+ continue;
+ }
+ resourceType = new ResourceType(prop.Value.GetString());
+ continue;
+ }
+ if (prop.NameEquals("systemData"u8))
+ {
+ if (prop.Value.ValueKind == JsonValueKind.Null)
+ {
+ continue;
+ }
+ systemData = ModelReaderWriter.Read(new BinaryData(Encoding.UTF8.GetBytes(prop.Value.GetRawText())), ModelSerializationExtensions.WireOptions, MgmtTypeSpecContext.Default);
+ continue;
+ }
+ if (prop.NameEquals("tags"u8))
+ {
+ if (prop.Value.ValueKind == JsonValueKind.Null)
+ {
+ continue;
+ }
+ Dictionary dictionary = new Dictionary();
+ foreach (var prop0 in prop.Value.EnumerateObject())
+ {
+ if (prop0.Value.ValueKind == JsonValueKind.Null)
+ {
+ dictionary.Add(prop0.Name, null);
+ }
+ else
+ {
+ dictionary.Add(prop0.Name, prop0.Value.GetString());
+ }
+ }
+ tags = dictionary;
+ continue;
+ }
+ if (prop.NameEquals("location"u8))
+ {
+ location = new AzureLocation(prop.Value.GetString());
+ continue;
+ }
+ if (prop.NameEquals("properties"u8))
+ {
+ properties = JobProperties.DeserializeJobProperties(prop.Value, options);
+ continue;
+ }
+ if (options.Format != "W")
+ {
+ additionalBinaryDataProperties.Add(prop.Name, BinaryData.FromString(prop.Value.GetRawText()));
+ }
+ }
+ return new JobResourceData(
+ id,
+ name,
+ resourceType,
+ systemData,
+ additionalBinaryDataProperties,
+ tags ?? new ChangeTrackingDictionary(),
+ location,
+ properties);
+ }
+
+ /// The client options for reading and writing models.
+ BinaryData IPersistableModel.Write(ModelReaderWriterOptions options) => PersistableModelWriteCore(options);
+
+ /// The client options for reading and writing models.
+ protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options)
+ {
+ string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format;
+ switch (format)
+ {
+ case "J":
+ return ModelReaderWriter.Write(this, options, MgmtTypeSpecContext.Default);
+ default:
+ throw new FormatException($"The model {nameof(JobResourceData)} does not support writing '{options.Format}' format.");
+ }
+ }
+
+ /// The data to parse.
+ /// The client options for reading and writing models.
+ JobResourceData IPersistableModel.Create(BinaryData data, ModelReaderWriterOptions options) => (JobResourceData)PersistableModelCreateCore(data, options);
+
+ /// The data to parse.
+ /// The client options for reading and writing models.
+ protected virtual ResourceData PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options)
+ {
+ string format = options.Format == "W" ? ((IPersistableModel)this).GetFormatFromOptions(options) : options.Format;
+ switch (format)
+ {
+ case "J":
+ using (JsonDocument document = JsonDocument.Parse(data))
+ {
+ return DeserializeJobResourceData(document.RootElement, options);
+ }
+ default:
+ throw new FormatException($"The model {nameof(JobResourceData)} does not support reading '{options.Format}' format.");
+ }
+ }
+
+ /// The client options for reading and writing models.
+ string IPersistableModel.GetFormatFromOptions(ModelReaderWriterOptions options) => "J";
+
+ ///