@azure-tools/typespec-java 0.37.3 → 0.38.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 +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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"}
@@ -23,7 +23,7 @@ import { CONTENT_TYPE_KEY, ORIGIN_API_VERSION, SPECIAL_HEADER_NAMES, cloneOperat
23
23
  import { LIB_NAME } from "./options.js";
24
24
  import { BYTES_KNOWN_ENCODING, DATETIME_KNOWN_ENCODING, DURATION_KNOWN_ENCODING, ProcessingCache, getAccess, getDurationFormat, getExternalJavaClassName, getNonNullSdkType, getPropertySerializedName, getUnionDescription, getUsage, getXmlSerializationFormat, modelIs, pushDistinct, } from "./type-utils.js";
25
25
  import { DiagnosticError, escapeJavaKeywords, getNamespace, optionBoolean, pascalCase, removeClientSuffix, stringArrayContainsIgnoreCase, trace, } from "./utils.js";
26
- import { getFilteredApiVersions, getServiceApiVersions } from "./versioning-utils.js";
26
+ import { InconsistentVersions, getFilteredApiVersions, getServiceApiVersions, } from "./versioning-utils.js";
27
27
  const { isEqual } = pkg;
28
28
  const AZURE_CORE_FOUNDATIONS_ERROR_ID = "Azure.Core.Foundations.Error";
29
29
  export class CodeModelBuilder {
@@ -86,10 +86,14 @@ export class CodeModelBuilder {
86
86
  if (this.program.hasError()) {
87
87
  return this.codeModel;
88
88
  }
89
- this.sdkContext = await createSdkContext(this.emitterContext, LIB_NAME, {
90
- additionalDecorators: ["Azure\\.ClientGenerator\\.Core\\.@override"],
91
- versioning: { previewStringRegex: /$/ },
92
- }); // include all versions and do the filter by ourselves
89
+ // on filtering of preview version: TCGC only do this on "apiVersion" parameter in clientInitialization
90
+ const sdkContextOptions = this.options["service-version-exclude-preview"] === false
91
+ ? {
92
+ versioning: { previewStringRegex: /$/ },
93
+ }
94
+ : {};
95
+ sdkContextOptions.additionalDecorators = ["Azure\\.ClientGenerator\\.Core\\.@override"];
96
+ this.sdkContext = await createSdkContext(this.emitterContext, LIB_NAME, sdkContextOptions);
93
97
  this.program.reportDiagnostics(this.sdkContext.diagnostics);
94
98
  // license
95
99
  if (this.sdkContext.sdkPackage.licenseInfo) {
@@ -394,9 +398,10 @@ export class CodeModelBuilder {
394
398
  security: this.codeModel.security,
395
399
  });
396
400
  codeModelClient.language.default.crossLanguageDefinitionId = client.crossLanguageDefinitionId;
397
- // versioning
401
+ // versioning, here we handle consistent api-versions for the client
398
402
  const versions = getServiceApiVersions(this.program, client);
399
- if (versions && versions.length > 0) {
403
+ if (Array.isArray(versions) && versions.length > 0) {
404
+ // consistent api-versions
400
405
  if (!this.sdkContext.apiVersion || ["all", "latest"].includes(this.sdkContext.apiVersion)) {
401
406
  this.apiVersion = versions[versions.length - 1].value;
402
407
  }
@@ -448,7 +453,11 @@ export class CodeModelBuilder {
448
453
  codeModelClient.addGlobalParameters(hostParameters);
449
454
  }
450
455
  });
451
- const clientContext = new ClientContext(baseUri, hostParameters, codeModelClient.globalParameters, codeModelClient.apiVersions);
456
+ const clientContext = new ClientContext(baseUri, hostParameters, codeModelClient.globalParameters,
457
+ // versioning: consistent api-versions, or MixedVersions for mixed api-versions, undefined if not versioned
458
+ versions === InconsistentVersions.MixedVersions
459
+ ? InconsistentVersions.MixedVersions
460
+ : codeModelClient.apiVersions);
452
461
  const enableSubclient = optionBoolean(this.options["enable-subclient"]) ?? false;
453
462
  // preprocess operation groups and operations
454
463
  // operations without operation group
@@ -720,9 +729,9 @@ export class CodeModelBuilder {
720
729
  if (responses.length === 0) {
721
730
  return;
722
731
  }
723
- const response = responses[0];
724
- const bodyType = response.type;
725
- if (!bodyType || bodyType.kind !== "model") {
732
+ if (!responses.some((r) => r.type && r.type.kind === "model")) {
733
+ // abort, if none of the responses contains model type
734
+ // this operation is not valid for pageable (which should return a JSON object), and hence will be generated without pageable
726
735
  return;
727
736
  }
728
737
  op.responses?.forEach((r) => {
@@ -935,20 +944,26 @@ export class CodeModelBuilder {
935
944
  processParameter(op, param, clientContext) {
936
945
  if (clientContext.apiVersions && this.isApiVersionParameter(param) && param.kind !== "cookie") {
937
946
  // pre-condition for "isApiVersion": the client supports ApiVersions
938
- if (this.isArm()) {
939
- // Currently we assume ARM tsp only have one client and one api-version.
940
- // TODO: How will service define mixed api-versions(like those in Compute RP)?
941
- const apiVersion = this.apiVersion;
942
- if (!this._armApiVersionParameter) {
943
- this._armApiVersionParameter = this.createApiVersionParameter("api-version", param.kind === "query" ? ParameterLocation.Query : ParameterLocation.Path, apiVersion);
944
- clientContext.addGlobalParameter(this._armApiVersionParameter);
945
- }
946
- op.addParameter(this._armApiVersionParameter);
947
+ if (clientContext.apiVersions === InconsistentVersions.MixedVersions) {
948
+ // mixed api-versions
949
+ const parameter = this.createApiVersionParameter("api-version", param.kind === "query" ? ParameterLocation.Query : ParameterLocation.Path, String(param.clientDefaultValue), ImplementationLocation.Method);
950
+ op.addParameter(parameter);
947
951
  }
948
952
  else {
949
- const parameter = this.getApiVersionParameter(param);
950
- op.addParameter(parameter);
951
- clientContext.addGlobalParameter(parameter);
953
+ // consistent api-versions
954
+ if (this.isArm()) {
955
+ const apiVersion = this.apiVersion;
956
+ if (!this._armApiVersionParameter) {
957
+ this._armApiVersionParameter = this.createApiVersionParameter("api-version", param.kind === "query" ? ParameterLocation.Query : ParameterLocation.Path, apiVersion);
958
+ clientContext.addGlobalParameter(this._armApiVersionParameter);
959
+ }
960
+ op.addParameter(this._armApiVersionParameter);
961
+ }
962
+ else {
963
+ const parameter = this.getApiVersionParameter(param);
964
+ op.addParameter(parameter);
965
+ clientContext.addGlobalParameter(parameter);
966
+ }
952
967
  }
953
968
  }
954
969
  else if (param.kind === "path" && param.onClient && this.isSubscriptionId(param)) {
@@ -1043,8 +1058,10 @@ export class CodeModelBuilder {
1043
1058
  const parameterOnClient = param.onClient;
1044
1059
  if (parameterOnClient) {
1045
1060
  // use parameter name from client parameter, as the name could be an alias
1046
- if (param.correspondingMethodParams) {
1047
- parameterName = param.correspondingMethodParams[0].name;
1061
+ if (param.methodParameterSegments &&
1062
+ param.methodParameterSegments[0] &&
1063
+ param.methodParameterSegments[0].at(-1)) {
1064
+ parameterName = param.methodParameterSegments[0].at(-1).name;
1048
1065
  }
1049
1066
  }
1050
1067
  const nullable = param.type.kind === "nullable";
@@ -1451,13 +1468,13 @@ export class CodeModelBuilder {
1451
1468
  * see https://typespec.io/docs/libraries/http/cheat-sheet#data-types
1452
1469
  */
1453
1470
  /**
1454
- * In TCGC, the condition is 'sdkType.kind === "model" && sdkBody.type !== sdkBody.correspondingMethodParams[0]?.type'.
1471
+ * In TCGC, the condition is 'sdkType.kind === "model" && sdkBody.type !== sdkBody.methodParameterSegments.at(0)?.at(-1)?.type'.
1455
1472
  * Basically, it means that the model of the SDK method parameters (typically, more than 1) be different from the model of this single HTTP body parameter.
1456
1473
  */
1457
1474
  const bodyParameterFlatten = !this.isArm() &&
1458
1475
  schema instanceof ObjectSchema &&
1459
1476
  sdkType.kind === "model" &&
1460
- sdkBody.type !== sdkBody.correspondingMethodParams[0]?.type;
1477
+ sdkBody.type !== sdkBody.methodParameterSegments.at(0)?.at(-1)?.type;
1461
1478
  if (schema instanceof ObjectSchema && bodyParameterFlatten) {
1462
1479
  // flatten body parameter
1463
1480
  const parameters = sdkHttpOperation.parameters;
@@ -2129,6 +2146,18 @@ export class CodeModelBuilder {
2129
2146
  serializedName: getPropertySerializedName(modelProperty),
2130
2147
  extensions: extensions,
2131
2148
  });
2149
+ if (modelProperty.encode) {
2150
+ if (schema instanceof ArraySchema) {
2151
+ const elementSchema = schema.elementType;
2152
+ if (!(elementSchema instanceof StringSchema)) {
2153
+ reportDiagnostic(this.program, {
2154
+ code: "non-string-array-encoding-element-notsupported",
2155
+ target: modelProperty.__raw ?? NoTarget,
2156
+ });
2157
+ }
2158
+ }
2159
+ codeModelProperty.arrayEncoding = modelProperty.encode;
2160
+ }
2132
2161
  // xml
2133
2162
  if (modelProperty.serializationOptions.xml) {
2134
2163
  // property.serializedName is set via getPropertySerializedName
@@ -2483,12 +2512,12 @@ export class CodeModelBuilder {
2483
2512
  }
2484
2513
  return this._pollResultSchema;
2485
2514
  }
2486
- createApiVersionParameter(serializedName, parameterLocation, value = "") {
2515
+ createApiVersionParameter(serializedName, parameterLocation, value = "", implementationLocation = ImplementationLocation.Client) {
2487
2516
  return new Parameter(serializedName, "Version parameter", this.codeModel.schemas.add(new ConstantSchema(serializedName, "API Version", {
2488
2517
  valueType: this.stringSchema,
2489
2518
  value: new ConstantValue(value),
2490
2519
  })), {
2491
- implementation: ImplementationLocation.Client,
2520
+ implementation: implementationLocation,
2492
2521
  origin: ORIGIN_API_VERSION,
2493
2522
  required: true,
2494
2523
  protocol: {