@azure-tools/typespec-java 0.27.8 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,35 @@
1
1
  import { AnySchema, BinarySchema, BooleanSchema, NumberSchema, ObjectSchema, Schema, StringSchema } from "@autorest/codemodel";
2
2
  import { SdkType } from "@azure-tools/typespec-client-generator-core";
3
- import { EmitContext, Program, Type, Union } from "@typespec/compiler";
3
+ import { EmitContext, Program } from "@typespec/compiler";
4
4
  import { CodeModel } from "./common/code-model.js";
5
- import { EmitterOptions } from "./lib.js";
5
+ import { DevOptions, EmitterOptions } from "./options.js";
6
6
  import { ProcessingCache } from "./type-utils.js";
7
+ export interface EmitterOptionsDev {
8
+ flavor?: string;
9
+ namespace?: string;
10
+ "service-name"?: string;
11
+ "service-versions"?: string[];
12
+ "generate-samples"?: boolean;
13
+ "generate-tests"?: boolean;
14
+ "partial-update"?: boolean;
15
+ "models-subpackage"?: string;
16
+ "custom-types"?: string;
17
+ "custom-types-subpackage"?: string;
18
+ "customization-class"?: string;
19
+ polling?: any;
20
+ "skip-special-headers"?: string[];
21
+ "enable-subclient"?: boolean;
22
+ "group-etag-headers"?: boolean;
23
+ "enable-sync-stack"?: boolean;
24
+ "stream-style-serialization"?: boolean;
25
+ "use-object-for-unknown"?: boolean;
26
+ "api-version"?: string;
27
+ "advanced-versioning"?: boolean;
28
+ "service-version-exclude-preview"?: boolean;
29
+ "dev-options"?: DevOptions;
30
+ "output-dir": string;
31
+ arm?: boolean;
32
+ }
7
33
  export declare class CodeModelBuilder {
8
34
  private program;
9
35
  private typeNameOptions;
@@ -15,8 +41,8 @@ export declare class CodeModelBuilder {
15
41
  private codeModel;
16
42
  private emitterContext;
17
43
  private serviceNamespace;
44
+ private readonly javaNamespaceCache;
18
45
  readonly schemaCache: ProcessingCache<SdkType, Schema>;
19
- readonly typeUnionRefCache: Map<Type, Union | null | undefined>;
20
46
  private apiVersion;
21
47
  constructor(program1: Program, context: EmitContext<EmitterOptions>);
22
48
  build(): Promise<CodeModel>;
@@ -95,6 +121,7 @@ export declare class CodeModelBuilder {
95
121
  private getConvenienceApiName;
96
122
  private getBaseJavaNamespace;
97
123
  private getJavaNamespace;
124
+ private escapeJavaNamespace;
98
125
  private trace;
99
126
  private _stringSchema?;
100
127
  get stringSchema(): StringSchema;
@@ -111,6 +138,7 @@ export declare class CodeModelBuilder {
111
138
  private _pollResultSchema?;
112
139
  get pollResultSchema(): ObjectSchema;
113
140
  private createApiVersionParameter;
141
+ private isApiVersionParameter;
114
142
  private _apiVersionParameter?;
115
143
  private _apiVersionParameterInPath?;
116
144
  private _apiVersionParameterInHeader?;
@@ -1 +1 @@
1
- {"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"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"}
@@ -17,18 +17,19 @@ import { OrSchema } from "./common/schemas/relationship.js";
17
17
  import { DurationSchema } from "./common/schemas/time.js";
18
18
  import { SchemaContext } from "./common/schemas/usage.js";
19
19
  import { createPollOperationDetailsSchema, getFileDetailsSchema } from "./external-schemas.js";
20
- import { LIB_NAME, createDiagnostic, reportDiagnostic } from "./lib.js";
20
+ import { createDiagnostic, reportDiagnostic } from "./lib.js";
21
21
  import { ClientContext } from "./models.js";
22
22
  import { CONTENT_TYPE_KEY, ORIGIN_API_VERSION, SPECIAL_HEADER_NAMES, cloneOperationParameter, getServiceVersion, isKnownContentType, isLroNewPollingStrategy, operationIsJsonMergePatch, operationIsMultipart, operationIsMultipleContentTypes, } from "./operation-utils.js";
23
+ import { LIB_NAME } from "./options.js";
23
24
  import { BYTES_KNOWN_ENCODING, DATETIME_KNOWN_ENCODING, DURATION_KNOWN_ENCODING, ProcessingCache, getAccess, getDurationFormat, getNonNullSdkType, getPropertySerializedName, getUnionDescription, getUsage, modelIs, pushDistinct, } from "./type-utils.js";
24
- import { DiagnosticError, getNamespace, isStableApiVersion, pascalCase, removeClientSuffix, stringArrayContainsIgnoreCase, trace, } from "./utils.js";
25
+ import { DiagnosticError, escapeJavaKeywords, getNamespace, isStableApiVersion, pascalCase, removeClientSuffix, stringArrayContainsIgnoreCase, trace, } from "./utils.js";
25
26
  const { isEqual } = pkg;
26
27
  const AZURE_CORE_FOUNDATIONS_ERROR_ID = "Azure.Core.Foundations.Error";
27
28
  export class CodeModelBuilder {
28
29
  constructor(program1, context) {
29
30
  var _a, _b;
31
+ this.javaNamespaceCache = new Map();
30
32
  this.schemaCache = new ProcessingCache((type, name) => this.processSchemaImpl(type, name));
31
- this.typeUnionRefCache = new Map(); // Union means it ref a Union type, null means it does not ref any Union, undefined means type visited but not completed
32
33
  this.options = context.options;
33
34
  this.program = program1;
34
35
  this.emitterContext = context;
@@ -78,6 +79,7 @@ export class CodeModelBuilder {
78
79
  additionalDecorators: ["Azure\\.ClientGenerator\\.Core\\.@override"],
79
80
  versioning: { previewStringRegex: /$/ },
80
81
  }); // include all versions and do the filter by ourselves
82
+ this.program.reportDiagnostics(this.sdkContext.diagnostics);
81
83
  // java namespace
82
84
  if (this.options.namespace) {
83
85
  // legacy mode, clientNamespace from TCGC will be ignored
@@ -92,8 +94,6 @@ export class CodeModelBuilder {
92
94
  this.baseJavaNamespace = this.getBaseJavaNamespace();
93
95
  }
94
96
  this.codeModel.language.java.namespace = this.baseJavaNamespace;
95
- // potential problem https://github.com/Azure/typespec-azure/issues/1675
96
- this.program.reportDiagnostics(this.sdkContext.diagnostics);
97
97
  // auth
98
98
  // TODO: it is not very likely, but different client could have different auth
99
99
  const auth = getAuthentication(this.program, this.serviceNamespace);
@@ -116,7 +116,7 @@ export class CodeModelBuilder {
116
116
  let parameter;
117
117
  sdkPathParameters.forEach((arg) => {
118
118
  var _a;
119
- if (arg.isApiVersionParam) {
119
+ if (this.isApiVersionParameter(arg)) {
120
120
  parameter = this.createApiVersionParameter(arg.name, ParameterLocation.Uri);
121
121
  }
122
122
  else {
@@ -589,7 +589,6 @@ export class CodeModelBuilder {
589
589
  const operationName = sdkMethod.name;
590
590
  const httpOperation = sdkMethod.operation;
591
591
  const operationId = groupName ? `${groupName}_${operationName}` : `${operationName}`;
592
- const operationGroup = this.codeModel.getOperationGroup(groupName);
593
592
  const operationExamples = this.getOperationExample(sdkMethod);
594
593
  const codeModelOperation = new CodeModelOperation(operationName, (_a = sdkMethod.doc) !== null && _a !== void 0 ? _a : "", {
595
594
  operationId: operationId,
@@ -711,7 +710,6 @@ export class CodeModelBuilder {
711
710
  this.processRouteForPaged(codeModelOperation, sdkMethod);
712
711
  // check for long-running operation
713
712
  this.processRouteForLongRunning(codeModelOperation, lroMetadata);
714
- operationGroup.addOperation(codeModelOperation);
715
713
  return codeModelOperation;
716
714
  }
717
715
  processRouteForPaged(op, sdkMethod) {
@@ -778,7 +776,8 @@ export class CodeModelBuilder {
778
776
  continuationTokenParameter = param;
779
777
  break;
780
778
  }
781
- else if (param.language.default.serializedName === parameter.serializedName) {
779
+ else if (parameter.kind === "query" &&
780
+ param.language.default.serializedName === parameter.serializedName) {
782
781
  continuationTokenParameter = param;
783
782
  break;
784
783
  }
@@ -919,7 +918,7 @@ export class CodeModelBuilder {
919
918
  }
920
919
  processParameter(op, param, clientContext) {
921
920
  var _a, _b, _c;
922
- if (clientContext.apiVersions && param.isApiVersionParam && param.kind !== "cookie") {
921
+ if (clientContext.apiVersions && this.isApiVersionParameter(param) && param.kind !== "cookie") {
923
922
  // pre-condition for "isApiVersion": the client supports ApiVersions
924
923
  if (this.isArm()) {
925
924
  // Currently we assume ARM tsp only have one client and one api-version.
@@ -1073,7 +1072,8 @@ export class CodeModelBuilder {
1073
1072
  }
1074
1073
  // group ETag header parameters, if exists
1075
1074
  if (this.options["group-etag-headers"]) {
1076
- // TODO: unsure what happens, if the etag headers is already processed by override
1075
+ // the etag headers would be re-grouped, if they are already processed by override
1076
+ // this may not be the expected behavior
1077
1077
  this.processEtagHeaderParameters(op, httpOperation);
1078
1078
  }
1079
1079
  }
@@ -1236,6 +1236,7 @@ export class CodeModelBuilder {
1236
1236
  }
1237
1237
  }
1238
1238
  processEtagHeaderParameters(op, httpOperation) {
1239
+ var _a, _b;
1239
1240
  if (op.convenienceApi && op.parameters && op.signatureParameters) {
1240
1241
  const etagHeadersNames = new Set([
1241
1242
  "if-match",
@@ -1268,25 +1269,35 @@ export class CodeModelBuilder {
1268
1269
  }
1269
1270
  }
1270
1271
  if (groupToRequestConditions || groupToMatchConditions) {
1271
- op.convenienceApi.requests = [];
1272
- const request = new Request({
1273
- protocol: op.requests[0].protocol,
1274
- });
1272
+ // method be called, only if "op.convenienceApi"
1273
+ let request = (_b = (_a = op.convenienceApi) === null || _a === void 0 ? void 0 : _a.requests) === null || _b === void 0 ? void 0 : _b[0];
1274
+ let requestParameters;
1275
+ let requestSignatureParameters;
1276
+ if (request) {
1277
+ requestParameters = request.parameters;
1278
+ requestSignatureParameters = request.signatureParameters;
1279
+ }
1280
+ else {
1281
+ op.convenienceApi.requests = [];
1282
+ request = new Request({
1283
+ protocol: op.requests[0].protocol,
1284
+ });
1285
+ op.convenienceApi.requests.push(request);
1286
+ requestParameters = op.parameters;
1287
+ requestSignatureParameters = op.signatureParameters;
1288
+ }
1275
1289
  request.parameters = [];
1276
1290
  request.signatureParameters = [];
1277
- op.convenienceApi.requests.push(request);
1278
- for (const parameter of op.parameters) {
1291
+ for (const parameter of requestParameters) {
1279
1292
  // copy all parameters to request
1280
- const clonedParameter = cloneOperationParameter(parameter);
1281
- request.parameters.push(clonedParameter);
1293
+ request.parameters.push(parameter);
1282
1294
  // copy signatureParameters, but exclude etag headers (as they won't be in method signature)
1283
- if (op.signatureParameters.includes(parameter) &&
1295
+ if (requestSignatureParameters.includes(parameter) &&
1284
1296
  !(parameter.language.default.serializedName &&
1285
1297
  etagHeaders.includes(parameter.language.default.serializedName))) {
1286
- request.signatureParameters.push(clonedParameter);
1298
+ request.signatureParameters.push(parameter);
1287
1299
  }
1288
1300
  }
1289
- const namespace = getNamespace(httpOperation.__raw.operation); // TODO: SdkHttpOperation does not have namespace
1290
1301
  const schemaName = groupToRequestConditions ? "RequestConditions" : "MatchConditions";
1291
1302
  const schemaDescription = groupToRequestConditions
1292
1303
  ? "Specifies HTTP options for conditional requests based on modification time."
@@ -1295,7 +1306,7 @@ export class CodeModelBuilder {
1295
1306
  const requestConditionsSchema = this.codeModel.schemas.add(new GroupSchema(schemaName, schemaDescription, {
1296
1307
  language: {
1297
1308
  default: {
1298
- namespace: namespace,
1309
+ namespace: this.namespace,
1299
1310
  },
1300
1311
  java: {
1301
1312
  namespace: "com.azure.core.http",
@@ -1318,6 +1329,15 @@ export class CodeModelBuilder {
1318
1329
  for (const parameter of request.parameters) {
1319
1330
  if (parameter.language.default.serializedName &&
1320
1331
  etagHeaders.includes(parameter.language.default.serializedName)) {
1332
+ if (parameter.groupedBy) {
1333
+ // remove etag header from its original groupBy schema
1334
+ if (parameter.groupedBy.schema instanceof GroupSchema &&
1335
+ parameter.groupedBy.schema.properties) {
1336
+ parameter.groupedBy.schema.properties =
1337
+ parameter.groupedBy.schema.properties.filter((p) => p.serializedName !== parameter.language.default.serializedName);
1338
+ }
1339
+ }
1340
+ // add it to RequestConditions or MatchConditions
1321
1341
  parameter.groupedBy = requestConditionsParameter;
1322
1342
  requestConditionsSchema.add(
1323
1343
  // name is serializedName, as it must be same as that in RequestConditions class
@@ -2272,7 +2292,7 @@ export class CodeModelBuilder {
2272
2292
  if (!baseJavaNamespace) {
2273
2293
  baseJavaNamespace = this.namespace;
2274
2294
  }
2275
- return baseJavaNamespace.toLowerCase();
2295
+ return this.escapeJavaNamespace(baseJavaNamespace.toLowerCase());
2276
2296
  }
2277
2297
  getJavaNamespace(type = undefined) {
2278
2298
  // clientNamespace from TCGC
@@ -2322,7 +2342,27 @@ export class CodeModelBuilder {
2322
2342
  return this.baseJavaNamespace;
2323
2343
  }
2324
2344
  else {
2325
- return clientNamespace.toLowerCase();
2345
+ return this.escapeJavaNamespace(clientNamespace.toLowerCase());
2346
+ }
2347
+ }
2348
+ escapeJavaNamespace(namespace) {
2349
+ if (this.javaNamespaceCache.has(namespace)) {
2350
+ return this.javaNamespaceCache.get(namespace);
2351
+ }
2352
+ else {
2353
+ const processedJavaNamespace = namespace
2354
+ .split(".")
2355
+ .map((segment) => escapeJavaKeywords(segment, "namespace"))
2356
+ .join(".");
2357
+ if (processedJavaNamespace !== namespace) {
2358
+ reportDiagnostic(this.program, {
2359
+ code: "invalid-java-namespace",
2360
+ format: { namespace: namespace, processedNamespace: processedJavaNamespace },
2361
+ target: NoTarget,
2362
+ });
2363
+ }
2364
+ this.javaNamespaceCache.set(namespace, processedJavaNamespace);
2365
+ return processedJavaNamespace;
2326
2366
  }
2327
2367
  }
2328
2368
  trace(msg) {
@@ -2374,6 +2414,9 @@ export class CodeModelBuilder {
2374
2414
  },
2375
2415
  });
2376
2416
  }
2417
+ isApiVersionParameter(param) {
2418
+ return param.isApiVersionParam;
2419
+ }
2377
2420
  getApiVersionParameter(param) {
2378
2421
  // apiVersionParameter is cached by param.kind
2379
2422
  // we didn't expect Azure service have more than 1 type of api-version, and certainly not more than 1 of each kind.