Skip to content

Commit 553c914

Browse files
authored
[tcgc] rollback SdkApiVersionParameter and remove some deprecations (#2421)
1. since we could not use `SdkApiVersionParameter` in endpoint template arguments, we decided to rollback to previous logic of `isApiVersionParam`. 2. clean up some deprecations that emitter has already finished the migration.
1 parent 9643875 commit 553c914

File tree

17 files changed

+99
-314
lines changed

17 files changed

+99
-314
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
changeKind: fix
3+
packages:
4+
- "@azure-tools/typespec-client-generator-core"
5+
---
6+
7+
Rollback change of `SdkApiVersionParameter`.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
changeKind: breaking
3+
packages:
4+
- "@azure-tools/typespec-client-generator-core"
5+
---
6+
7+
Removed `package-name` and `flatten-union-as-enum` from `SdkEmitterOptions`, `clientNamespace` from `SdkClientType`/`SdkNullableType`/`SdkEnumType`/`SdkUnionType`/`SdkModelType`, `packageName` from `TCGCContext`, `nameSpace` from `SdkClientType`, `name`/`rootNamespace` from `SdkPackage` and `getClientNamespaceString` function. All these things should have been deprecated in previous version or not used by any emitters.

packages/typespec-client-generator-core/README.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ options:
3939

4040
**Type:** `string`
4141

42-
Set `emitter-name` to output TCGC code models for specific language's emitter. This flag only work for taking TCGC as an emitter.
42+
Set `emitter-name` to output TCGC code models for specific language's emitter.
4343

4444
### `generate-protocol-methods`
4545

@@ -53,14 +53,6 @@ When set to `true`, the emitter will generate low-level protocol methods for eac
5353

5454
When set to `true`, the emitter will generate low-level protocol methods for each service operation if `@convenientAPI` is not set for an operation. Default value is `true`.
5555

56-
### `package-name`
57-
58-
**Type:** `string`
59-
60-
### `flatten-union-as-enum`
61-
62-
**Type:** `boolean`
63-
6456
### `examples-dir`
6557

6658
**Type:** `string`

packages/typespec-client-generator-core/src/context.ts

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { handleClientExamples } from "./example.js";
1818
import {
1919
getKnownScalars,
2020
SdkContext,
21-
SdkEmitterOptions,
2221
SdkEnumType,
2322
SdkHttpOperation,
2423
SdkModelPropertyType,
@@ -35,6 +34,25 @@ import {
3534
} from "./internal-utils.js";
3635
import { getSdkPackage } from "./package.js";
3736

37+
export interface TCGCEmitterOptions extends SdkEmitterOptions {
38+
"emitter-name"?: string;
39+
}
40+
41+
export interface SdkEmitterOptions {
42+
"generate-protocol-methods"?: boolean;
43+
"generate-convenience-methods"?: boolean;
44+
"api-version"?: string;
45+
"examples-dir"?: string;
46+
namespace?: string;
47+
license?: {
48+
name: string;
49+
company?: string;
50+
link?: string;
51+
header?: string;
52+
description?: string;
53+
};
54+
}
55+
3856
export function createTCGCContext(program: Program, emitterName?: string): TCGCContext {
3957
const diagnostics = createDiagnosticCollector();
4058
return {
@@ -113,25 +131,20 @@ export async function createSdkContext<
113131
context.program,
114132
emitterName ?? context.options["emitter-name"],
115133
);
116-
let flattenUnionAsEnum = options?.flattenUnionAsEnum;
117-
if (flattenUnionAsEnum === undefined) {
118-
flattenUnionAsEnum = context.options["flatten-union-as-enum"] ?? true;
119-
}
120134
const sdkContext: SdkContext<TOptions, TServiceOperation> = {
121135
...tcgcContext,
122136
emitContext: context,
123137
sdkPackage: undefined!,
124138
generateProtocolMethods: generateProtocolMethods,
125139
generateConvenienceMethods: generateConvenienceMethods,
126-
packageName: context.options["package-name"],
127140
examplesDir: context.options["examples-dir"],
128141
namespaceFlag: context.options["namespace"],
129142
apiVersion: options?.versioning?.strategy === "ignore" ? "all" : context.options["api-version"],
130143
license: context.options["license"],
131144
decoratorsAllowList: [...defaultDecoratorsAllowList, ...(options?.additionalDecorators ?? [])],
132145
previewStringRegex: options?.versioning?.previewStringRegex || tcgcContext.previewStringRegex,
133146
disableUsageAccessPropagationToBase: options?.disableUsageAccessPropagationToBase ?? false,
134-
flattenUnionAsEnum,
147+
flattenUnionAsEnum: options?.flattenUnionAsEnum ?? true,
135148
};
136149
sdkContext.sdkPackage = diagnostics.pipe(getSdkPackage(sdkContext));
137150
for (const client of sdkContext.sdkPackage.clients) {
@@ -168,7 +181,7 @@ async function exportTCGCOutput(context: SdkContext) {
168181
});
169182
}
170183

171-
export async function $onEmit(context: EmitContext<SdkEmitterOptions>) {
184+
export async function $onEmit(context: EmitContext<TCGCEmitterOptions>) {
172185
if (!context.program.compilerOptions.noEmit) {
173186
const sdkContext = await createSdkContext(context, undefined, { exportTCGCoutput: true });
174187
context.program.reportDiagnostics(sdkContext.diagnostics);

packages/typespec-client-generator-core/src/http.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ export function getCorrespondingMethodParams(
575575
}
576576

577577
// 2. To see if the service parameter is api version parameter that has been elevated to client.
578-
if (isApiVersion(context, serviceParam) && serviceParam.onClient) {
578+
if (serviceParam.isApiVersionParam && serviceParam.onClient) {
579579
const existingApiVersion = clientParams?.find((x) => isApiVersion(context, x));
580580
if (!existingApiVersion) {
581581
diagnostics.add(

packages/typespec-client-generator-core/src/interfaces.ts

Lines changed: 14 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@ export interface TCGCContext {
3939

4040
generateProtocolMethods?: boolean;
4141
generateConvenienceMethods?: boolean;
42-
/**
43-
* @deprecated Use `namespaceFlag` instead.
44-
*/
45-
packageName?: string;
4642
examplesDir?: string;
4743
namespaceFlag?: string;
4844
apiVersion?: string;
@@ -85,27 +81,6 @@ export interface SdkContext<
8581
sdkPackage: SdkPackage<TServiceOperation>;
8682
}
8783

88-
export interface SdkEmitterOptions {
89-
"emitter-name"?: string;
90-
"generate-protocol-methods"?: boolean;
91-
"generate-convenience-methods"?: boolean;
92-
/**
93-
* @deprecated Use the `package-name` option on your language emitter instead, if it exists.
94-
*/
95-
"package-name"?: string;
96-
"flatten-union-as-enum"?: boolean;
97-
"api-version"?: string;
98-
"examples-dir"?: string;
99-
namespace?: string;
100-
license?: {
101-
name: string;
102-
company?: string;
103-
link?: string;
104-
header?: string;
105-
description?: string;
106-
};
107-
}
108-
10984
// Types for TCGC customization decorators
11085

11186
export interface SdkClient {
@@ -199,10 +174,6 @@ export interface SdkClientType<TServiceOperation extends SdkServiceOperation>
199174
__raw: SdkClient | SdkOperationGroup;
200175
kind: "client";
201176
name: string;
202-
/**
203-
* @deprecated Use `namespace` instead.
204-
*/
205-
clientNamespace: string;
206177
/**
207178
* Full qualified namespace.
208179
*/
@@ -216,10 +187,6 @@ export interface SdkClientType<TServiceOperation extends SdkServiceOperation>
216187
clientInitialization: SdkClientInitializationType;
217188
methods: SdkMethod<TServiceOperation>[];
218189
apiVersions: string[];
219-
/**
220-
* @deprecated Use `clientNamespace` instead.
221-
*/
222-
nameSpace: string; // fully qualified
223190
crossLanguageDefinitionId: string;
224191
// The parent client of this client. The structure follows the definition hierarchy.
225192
parent?: SdkClientType<TServiceOperation>;
@@ -416,10 +383,6 @@ export interface SdkNullableType extends SdkTypeBase {
416383
type: SdkType;
417384
usage: UsageFlags;
418385
access: AccessFlags;
419-
/**
420-
* @deprecated Use `namespace` instead.
421-
*/
422-
clientNamespace: string;
423386
/**
424387
* Full qualified namespace.
425388
*/
@@ -430,10 +393,6 @@ export interface SdkEnumType extends SdkTypeBase {
430393
kind: "enum";
431394
name: string;
432395
isGeneratedName: boolean;
433-
/**
434-
* @deprecated Use `namespace` instead.
435-
*/
436-
clientNamespace: string;
437396
/**
438397
* Full qualified namespace.
439398
*/
@@ -469,10 +428,6 @@ export interface SdkConstantType extends SdkTypeBase {
469428
export interface SdkUnionType<TValueType extends SdkTypeBase = SdkType> extends SdkTypeBase {
470429
name: string;
471430
isGeneratedName: boolean;
472-
/**
473-
* @deprecated Use `namespace` instead.
474-
*/
475-
clientNamespace: string;
476431
/**
477432
* Full qualified namespace.
478433
*/
@@ -489,10 +444,6 @@ export interface SdkModelType extends SdkTypeBase {
489444
properties: SdkModelPropertyType[];
490445
name: string;
491446
isGeneratedName: boolean;
492-
/**
493-
* @deprecated Use `namespace` instead.
494-
*/
495-
clientNamespace: string;
496447
/**
497448
* Full qualified namespace.
498449
*/
@@ -543,9 +494,6 @@ export interface SdkModelPropertyTypeBase<TType extends SdkTypeBase = SdkType>
543494
apiVersions: string[];
544495
onClient: boolean;
545496
clientDefaultValue?: unknown;
546-
/**
547-
* @deprecated This property is deprecated. See if the kind is `apiVersion` instead
548-
*/
549497
isApiVersionParam: boolean;
550498
optional: boolean;
551499
crossLanguageDefinitionId: string;
@@ -607,34 +555,17 @@ export interface SdkEndpointParameter
607555
serializedName?: string;
608556
}
609557

610-
export interface SdkApiVersionParameter
611-
extends SdkModelPropertyTypeBase<
612-
SdkBuiltInType<"string"> | SdkEnumValueType<SdkBuiltInType<"string">>
613-
> {
614-
kind: "apiVersion";
615-
onClient: true;
616-
type: SdkBuiltInType<"string"> | SdkEnumValueType<SdkBuiltInType<"string">>;
617-
isApiVersionParam: true;
618-
}
619-
620558
export interface SdkCredentialParameter
621559
extends SdkModelPropertyTypeBase<SdkCredentialType | SdkUnionType<SdkCredentialType>> {
622560
kind: "credential";
623561
onClient: true;
624562
}
625563

626-
export type SdkModelPropertyType<TType extends SdkTypeBase = SdkType> =
627-
| SdkBodyModelPropertyType<TType>
628-
| SdkParameter<TType>
629-
| SdkEndpointParameter
630-
| SdkCredentialParameter
631-
| SdkApiVersionParameter
632-
| SdkQueryParameter<TType>
633-
| SdkPathParameter<TType>
634-
| SdkBodyParameter<TType>
635-
| SdkHeaderParameter<TType>
636-
| SdkCookieParameter<TType>
637-
| SdkServiceResponseHeader<TType>;
564+
export type SdkModelPropertyType =
565+
| SdkBodyModelPropertyType
566+
| SdkParameter
567+
| SdkHttpParameter
568+
| SdkServiceResponseHeader;
638569

639570
export interface MultipartOptions {
640571
name: string;
@@ -650,8 +581,7 @@ export interface MultipartOptions {
650581
defaultContentTypes: string[];
651582
}
652583

653-
export interface SdkBodyModelPropertyType<TType extends SdkTypeBase = SdkType>
654-
extends SdkModelPropertyTypeBase<TType> {
584+
export interface SdkBodyModelPropertyType extends SdkModelPropertyTypeBase {
655585
kind: "property";
656586
discriminator: boolean;
657587
/**
@@ -672,25 +602,22 @@ export interface SdkBodyModelPropertyType<TType extends SdkTypeBase = SdkType>
672602

673603
export type CollectionFormat = "multi" | "csv" | "ssv" | "tsv" | "pipes" | "simple" | "form";
674604

675-
export interface SdkHeaderParameter<TType extends SdkTypeBase = SdkType>
676-
extends SdkModelPropertyTypeBase<TType> {
605+
export interface SdkHeaderParameter extends SdkModelPropertyTypeBase {
677606
kind: "header";
678607
collectionFormat?: CollectionFormat;
679608
serializedName: string;
680609
correspondingMethodParams: SdkModelPropertyType[];
681610
}
682611

683-
export interface SdkQueryParameter<TType extends SdkTypeBase = SdkType>
684-
extends SdkModelPropertyTypeBase<TType> {
612+
export interface SdkQueryParameter extends SdkModelPropertyTypeBase {
685613
kind: "query";
686614
collectionFormat?: CollectionFormat;
687615
serializedName: string;
688616
correspondingMethodParams: SdkModelPropertyType[];
689617
explode: boolean;
690618
}
691619

692-
export interface SdkPathParameter<TType extends SdkTypeBase = SdkType>
693-
extends SdkModelPropertyTypeBase<TType> {
620+
export interface SdkPathParameter extends SdkModelPropertyTypeBase {
694621
kind: "path";
695622
/**
696623
* @deprecated This property is deprecated. Use `allowReserved` instead.
@@ -705,15 +632,13 @@ export interface SdkPathParameter<TType extends SdkTypeBase = SdkType>
705632
correspondingMethodParams: SdkModelPropertyType[];
706633
}
707634

708-
export interface SdkCookieParameter<TType extends SdkTypeBase = SdkType>
709-
extends SdkModelPropertyTypeBase<TType> {
635+
export interface SdkCookieParameter extends SdkModelPropertyTypeBase {
710636
kind: "cookie";
711637
serializedName: string;
712638
correspondingMethodParams: SdkModelPropertyType[];
713639
}
714640

715-
export interface SdkBodyParameter<TType extends SdkTypeBase = SdkType>
716-
extends SdkModelPropertyTypeBase<TType> {
641+
export interface SdkBodyParameter extends SdkModelPropertyTypeBase {
717642
kind: "body";
718643
serializedName: string;
719644
optional: boolean;
@@ -729,13 +654,11 @@ export type SdkHttpParameter =
729654
| SdkHeaderParameter
730655
| SdkCookieParameter;
731656

732-
export interface SdkMethodParameter<TType extends SdkTypeBase = SdkType>
733-
extends SdkModelPropertyTypeBase<TType> {
657+
export interface SdkMethodParameter extends SdkModelPropertyTypeBase {
734658
kind: "method";
735659
}
736660

737-
export interface SdkServiceResponseHeader<TType extends SdkTypeBase = SdkType>
738-
extends SdkModelPropertyTypeBase<TType> {
661+
export interface SdkServiceResponseHeader extends SdkModelPropertyTypeBase {
739662
__raw: ModelProperty;
740663
kind: "responseheader";
741664
serializedName: string;
@@ -778,11 +701,7 @@ export interface SdkHttpErrorResponse extends SdkHttpResponseBase {
778701

779702
interface SdkServiceOperationBase {}
780703

781-
export type SdkParameter<TType extends SdkTypeBase = SdkType> =
782-
| SdkEndpointParameter
783-
| SdkCredentialParameter
784-
| SdkApiVersionParameter
785-
| SdkMethodParameter<TType>;
704+
export type SdkParameter = SdkEndpointParameter | SdkCredentialParameter | SdkMethodParameter;
786705

787706
export interface SdkHttpOperation extends SdkServiceOperationBase {
788707
__raw: HttpOperation;
@@ -970,11 +889,6 @@ export type SdkMethod<TServiceOperation extends SdkServiceOperation> =
970889
| SdkClientAccessor<TServiceOperation>; // eslint-disable-line @typescript-eslint/no-deprecated
971890

972891
export interface SdkPackage<TServiceOperation extends SdkServiceOperation> {
973-
name: string;
974-
/**
975-
* @deprecated Look at `.namespaces` instead
976-
*/
977-
rootNamespace: string;
978892
clients: SdkClientType<TServiceOperation>[];
979893
models: SdkModelType[];
980894
enums: SdkEnumType[];

0 commit comments

Comments
 (0)