@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.
- package/dist/src/code-model-builder.d.ts.map +1 -1
- package/dist/src/code-model-builder.js +58 -29
- package/dist/src/code-model-builder.js.map +1 -1
- package/dist/src/common/client.d.ts +8 -0
- package/dist/src/common/client.d.ts.map +1 -1
- package/dist/src/common/client.js.map +1 -1
- package/dist/src/common/schemas/choice.d.ts.map +1 -1
- package/dist/src/common/schemas/choice.js.map +1 -1
- package/dist/src/lib.d.ts +17 -2
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +6 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/models.d.ts +3 -2
- package/dist/src/models.d.ts.map +1 -1
- package/dist/src/models.js +9 -2
- package/dist/src/models.js.map +1 -1
- package/dist/src/operation-utils.js +2 -2
- package/dist/src/operation-utils.js.map +1 -1
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/options.js +6 -0
- package/dist/src/options.js.map +1 -1
- package/dist/src/versioning-utils.d.ts +19 -3
- package/dist/src/versioning-utils.d.ts.map +1 -1
- package/dist/src/versioning-utils.js +42 -7
- package/dist/src/versioning-utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/generator/http-client-generator/target/emitter.jar +0 -0
- package/package.json +20 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAIT,YAAY,EACZ,aAAa,EAcb,OAAO,EAEP,YAAY,EAEZ,YAAY,EAOZ,MAAM,EAMN,YAAY,EAMb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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,
|
|
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
|
-
|
|
724
|
-
|
|
725
|
-
|
|
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 (
|
|
939
|
-
//
|
|
940
|
-
|
|
941
|
-
|
|
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
|
-
|
|
950
|
-
|
|
951
|
-
|
|
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.
|
|
1047
|
-
|
|
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.
|
|
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.
|
|
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:
|
|
2520
|
+
implementation: implementationLocation,
|
|
2492
2521
|
origin: ORIGIN_API_VERSION,
|
|
2493
2522
|
required: true,
|
|
2494
2523
|
protocol: {
|