diff --git a/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts b/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts index 165e794e1c12..af8374d4586a 100644 --- a/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts +++ b/eng/tools/typespec-validation/src/rules/sdk-tspconfig-validation.ts @@ -234,27 +234,27 @@ export class TspConfigTsMgmtModularGenerateMetadataTrueSubRule extends TspConfig } } -export class TspConfigTsMgmtModularHierarchyClientFalseSubRule extends TspconfigEmitterOptionsSubRuleBase { +export class TspConfigTsMgmtModularHierarchyClientFalseSubRule extends TspConfigTsOptionMigrationSubRuleBase { constructor() { - super("@azure-tools/typespec-ts", "hierarchyClient", false); + super("hierarchyClient", "hierarchy-client", false); } protected skip(config: any, folder: string) { return skipForNonModularOrDataPlaneInTsEmitter(config, folder); } } -export class TspConfigTsMgmtModularExperimentalExtensibleEnumsTrueSubRule extends TspconfigEmitterOptionsSubRuleBase { +export class TspConfigTsMgmtModularExperimentalExtensibleEnumsTrueSubRule extends TspConfigTsOptionMigrationSubRuleBase { constructor() { - super("@azure-tools/typespec-ts", "experimentalExtensibleEnums", true); + super("experimentalExtensibleEnums", "experimental-extensible-enums", true); } protected skip(config: any, folder: string) { return skipForNonModularOrDataPlaneInTsEmitter(config, folder); } } -export class TspConfigTsMgmtModularEnableOperationGroupTrueSubRule extends TspconfigEmitterOptionsSubRuleBase { +export class TspConfigTsMgmtModularEnableOperationGroupTrueSubRule extends TspConfigTsOptionMigrationSubRuleBase { constructor() { - super("@azure-tools/typespec-ts", "enableOperationGroup", true); + super("enableOperationGroup", "enable-operation-group", true); } protected skip(config: any, folder: string) { return skipForNonModularOrDataPlaneInTsEmitter(config, folder); @@ -270,13 +270,9 @@ export class TspConfigTsMgmtModularPackageDirectorySubRule extends TspconfigEmit } } -export class TspConfigTsMgmtModularPackageNameMatchPatternSubRule extends TspconfigEmitterOptionsSubRuleBase { +export class TspConfigTsMgmtModularPackageNameMatchPatternSubRule extends TspConfigTsOptionMigrationSubRuleBase { constructor() { - super( - "@azure-tools/typespec-ts", - "packageDetails.name", - new RegExp(/^\@azure\/arm(?:-[a-z]+)+$/), - ); + super("packageDetails.name", "package-details.name", new RegExp(/^\@azure\/arm(?:-[a-z]+)+$/)); } protected skip(config: any, folder: string) { return skipForNonModularOrDataPlaneInTsEmitter(config, folder); diff --git a/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts b/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts index 023e62d83c2f..cb0be4a0e73d 100644 --- a/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts +++ b/eng/tools/typespec-validation/test/sdk-tspconfig-validation.test.ts @@ -214,6 +214,27 @@ const tsManagementHierarchyClientTestCases = createEmitterOptionTestCases( [new TspConfigTsMgmtModularHierarchyClientFalseSubRule()], ); +const newTsManagementHierarchyClientTestCases = createEmitterOptionTestCases( + "@azure-tools/typespec-ts", + managementTspconfigFolder, + "hierarchy-client", + false, + true, + [new TspConfigTsMgmtModularHierarchyClientFalseSubRule()], +); + +const mixTsManagementHierarchyClientTestCases = { + description: `Validate @azure-tools/typespec-ts's mix options: hierarchy-client/hierarchyClient with different values`, + folder: "aaa.Management", + tspconfigContent: createEmitterOptionExample( + "@azure-tools/typespec-ts", + { key: "hierarchyClient", value: false }, + { key: "hierarchy-client", value: true }, + ), + success: false, + subRules: [new TspConfigTsMgmtModularHierarchyClientFalseSubRule()], +}; + const tsManagementExperimentalExtensibleEnumsTestCases = createEmitterOptionTestCases( "@azure-tools/typespec-ts", managementTspconfigFolder, @@ -223,6 +244,27 @@ const tsManagementExperimentalExtensibleEnumsTestCases = createEmitterOptionTest [new TspConfigTsMgmtModularExperimentalExtensibleEnumsTrueSubRule()], ); +const newTsManagementExperimentalExtensibleEnumsTestCases = createEmitterOptionTestCases( + "@azure-tools/typespec-ts", + managementTspconfigFolder, + "experimental-extensible-enums", + true, + false, + [new TspConfigTsMgmtModularExperimentalExtensibleEnumsTrueSubRule()], +); + +const mixTsManagementExperimentalExtensibleEnumsTestCases = { + description: `Validate @azure-tools/typespec-ts's mix options: experimental-extensible-enums/experimentalExtensibleEnums with different values`, + folder: "aaa.Management", + tspconfigContent: createEmitterOptionExample( + "@azure-tools/typespec-ts", + { key: "experimentalExtensibleEnums", value: true }, + { key: "experimental-extensible-enums", value: false }, + ), + success: false, + subRules: [new TspConfigTsMgmtModularExperimentalExtensibleEnumsTrueSubRule()], +}; + const tsManagementEnableOperationGroupTestCases = createEmitterOptionTestCases( "@azure-tools/typespec-ts", managementTspconfigFolder, @@ -232,6 +274,27 @@ const tsManagementEnableOperationGroupTestCases = createEmitterOptionTestCases( [new TspConfigTsMgmtModularEnableOperationGroupTrueSubRule()], ); +const newTsManagementEnableOperationGroupTestCases = createEmitterOptionTestCases( + "@azure-tools/typespec-ts", + managementTspconfigFolder, + "enable-operation-group", + true, + false, + [new TspConfigTsMgmtModularEnableOperationGroupTrueSubRule()], +); + +const mixTsManagementEnableOperationGroupTestCases = { + description: `Validate @azure-tools/typespec-ts's mix options: enable-operation-group/enableOperationGroup with different values`, + folder: "aaa.Management", + tspconfigContent: createEmitterOptionExample( + "@azure-tools/typespec-ts", + { key: "enableOperationGroup", value: true }, + { key: "enable-operation-group", value: false }, + ), + success: false, + subRules: [new TspConfigTsMgmtModularEnableOperationGroupTrueSubRule()], +}; + const tsManagementPackageDirTestCases = createEmitterOptionTestCases( "@azure-tools/typespec-ts", managementTspconfigFolder, @@ -250,6 +313,27 @@ const tsManagementPackageNameTestCases = createEmitterOptionTestCases( [new TspConfigTsMgmtModularPackageNameMatchPatternSubRule()], ); +const newTsManagementPackageNameTestCases = createEmitterOptionTestCases( + "@azure-tools/typespec-ts", + managementTspconfigFolder, + "package-details.name", + "@azure/arm-aaa-bbb", + "@azure/aaa-bbb", + [new TspConfigTsMgmtModularPackageNameMatchPatternSubRule()], +); + +const mixTsManagementPackageNameTestCases = { + description: `Validate @azure-tools/typespec-ts's mix options: package-details/packageDetails with different values`, + folder: "aaa.Management", + tspconfigContent: createEmitterOptionExample( + "@azure-tools/typespec-ts", + { key: "packageDetails.name", value: "@azure/arm-aaa-bbb" }, + { key: "package-details.name", value: "@azure/aaa-bbb" }, + ), + success: false, + subRules: [new TspConfigTsMgmtModularPackageNameMatchPatternSubRule()], +}; + const goManagementServiceDirTestCases = createEmitterOptionTestCases( "@azure-tools/typespec-go", managementTspconfigFolder, @@ -518,12 +602,20 @@ describe("tspconfig", function () { // ts ...newTsManagementGenerateMetadataTestCases, ...tsManagementGenerateMetadataTestCases, + ...newTsManagementHierarchyClientTestCases, ...tsManagementHierarchyClientTestCases, + ...newTsManagementExperimentalExtensibleEnumsTestCases, ...tsManagementExperimentalExtensibleEnumsTestCases, + ...newTsManagementEnableOperationGroupTestCases, ...tsManagementEnableOperationGroupTestCases, ...tsManagementPackageDirTestCases, + ...newTsManagementPackageNameTestCases, ...tsManagementPackageNameTestCases, mixTsManagementGenerateMetadataTestCase, + mixTsManagementHierarchyClientTestCases, + mixTsManagementExperimentalExtensibleEnumsTestCases, + mixTsManagementEnableOperationGroupTestCases, + mixTsManagementPackageNameTestCases, // go ...goManagementServiceDirTestCases, ...goManagementPackageDirTestCases, diff --git a/specification/ai/Face/tspconfig.yaml b/specification/ai/Face/tspconfig.yaml index b2ea94fb8c34..140ddccd11fd 100644 --- a/specification/ai/Face/tspconfig.yaml +++ b/specification/ai/Face/tspconfig.yaml @@ -29,10 +29,10 @@ options: flavor: azure "@azure-tools/typespec-ts": package-dir: "ai-vision-face-rest" - generateMetadata: true - generateTest: true + generate-metadata: true + generate-test: true flavor: azure - packageDetails: + package-details: name: "@azure-rest/ai-vision-face" description: "Face API REST Client" "@azure-tools/typespec-java": diff --git a/specification/contosowidgetmanager/Contoso.Management/tspconfig.yaml b/specification/contosowidgetmanager/Contoso.Management/tspconfig.yaml index 4fb3ab326744..a3339263a5e0 100644 --- a/specification/contosowidgetmanager/Contoso.Management/tspconfig.yaml +++ b/specification/contosowidgetmanager/Contoso.Management/tspconfig.yaml @@ -28,14 +28,14 @@ options: flavor: azure "@azure-tools/typespec-ts": package-dir: "arm-contoso" - azureSdkForJs: true - isModularLibrary: true - generateMetadata: true + azure-sdk-for-js: true + is-modular-library: true + generate-metadata: true flavor: "azure" - hierarchyClient: false - experimentalExtensibleEnums: true - enableOperationGroup: true - packageDetails: + hierarchy-client: false + experimental-extensible-enums: true + enable-operation-group: true + package-details: name: "@azure/arm-contoso" "@azure-tools/typespec-go": service-dir: "sdk/resourcemanager/contoso" diff --git a/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml b/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml index 64cde823d5cd..883d5720ce6a 100644 --- a/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml +++ b/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml @@ -30,7 +30,7 @@ options: flavor: azure "@azure-tools/typespec-ts": package-dir: "contosowidgetmanager-rest" - packageDetails: + package-details: name: "@azure-rest/contoso-widgetmanager-rest" flavor: azure "@azure-tools/typespec-java": diff --git a/specification/fabric/Microsoft.Fabric.Management/tspconfig.yaml b/specification/fabric/Microsoft.Fabric.Management/tspconfig.yaml index 84ec16f84ac6..68b26853a8b1 100644 --- a/specification/fabric/Microsoft.Fabric.Management/tspconfig.yaml +++ b/specification/fabric/Microsoft.Fabric.Management/tspconfig.yaml @@ -24,15 +24,15 @@ options: generate-test: true generate-sample: true "@azure-tools/typespec-ts": - azureSdkForJs: true - isModularLibrary: true - generateMetadata: true - hierarchyClient: false - experimentalExtensibleEnums: true - enableOperationGroup: true + azure-sdk-for-js: true + is-modular-library: true + generate-metadata: true + hierarchy-client: false + experimental-extensible-enums: true + enable-operation-group: true package-dir: "arm-fabric" flavor: "azure" - packageDetails: + package-details: name: "@azure/arm-fabric" "@azure-tools/typespec-java": package-dir: "azure-resourcemanager-fabric" diff --git a/specification/verifiedid/Microsoft.VerifiedId.Management/tspconfig.yaml b/specification/verifiedid/Microsoft.VerifiedId.Management/tspconfig.yaml index a083f4e1d9f5..d9af86af46fb 100644 --- a/specification/verifiedid/Microsoft.VerifiedId.Management/tspconfig.yaml +++ b/specification/verifiedid/Microsoft.VerifiedId.Management/tspconfig.yaml @@ -16,15 +16,15 @@ options: output-file: "{azure-resource-provider-folder}/{service-name}/{version-status}/{version}/verifiedid.json" use-read-only-status-schema: true "@azure-tools/typespec-ts": - azureSdkForJs: true - isModularLibrary: true - generateMetadata: true - hierarchyClient: false - experimentalExtensibleEnums: true - enableOperationGroup: true + azure-sdk-for-js: true + is-modular-library: true + generate-metadata: true + hierarchy-client: false + experimental-extensible-enums: true + enable-operation-group: true package-dir: "arm-verifiedid" flavor: "azure" - packageDetails: + package-details: name: "@azure/arm-verifiedid" "@azure-tools/typespec-python": package-dir: "azure-mgmt-verifiedid"