@azure-tools/typespec-java 0.31.11 → 0.32.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 +25 -30
- package/dist/src/code-model-builder.js.map +1 -1
- package/dist/src/external-schemas.d.ts +2 -2
- package/dist/src/external-schemas.d.ts.map +1 -1
- package/dist/src/external-schemas.js.map +1 -1
- package/dist/src/operation-utils.d.ts +2 -2
- package/dist/src/operation-utils.d.ts.map +1 -1
- package/dist/src/operation-utils.js.map +1 -1
- package/dist/src/options.d.ts +1 -0
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/options.js +14 -8
- package/dist/src/options.js.map +1 -1
- package/dist/src/type-utils.d.ts +3 -3
- package/dist/src/type-utils.d.ts.map +1 -1
- package/dist/src/type-utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/generator/http-client-generator/target/emitter.jar +0 -0
- package/package.json +33 -33
|
@@ -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,EAKb,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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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnySchema, ApiVersion, ArraySchema, BinaryResponse, BinarySchema, BooleanSchema, ByteArraySchema, ChoiceValue, DateSchema, DateTimeSchema, DictionarySchema, Discriminator, GroupProperty, GroupSchema, HttpHeader, HttpParameter, ImplementationLocation, KeySecurityScheme, Language, License, Metadata, NumberSchema, OAuth2SecurityScheme, ObjectSchema, OperationGroup, Parameter, ParameterLocation, Property, Relations, Response, SchemaResponse, SchemaType, Security, SerializationStyle, StringSchema, TimeSchema, UnixTimeSchema, UriSchema, VirtualParameter, } from "@autorest/codemodel";
|
|
2
2
|
import { KnownMediaType } from "@azure-tools/codegen";
|
|
3
|
-
import { InitializedByFlags, createSdkContext, getAllModels, getClientNameOverride, getHttpOperationParameter, isSdkBuiltInKind, isSdkIntKind, } from "@azure-tools/typespec-client-generator-core";
|
|
3
|
+
import { InitializedByFlags, createSdkContext, getAllModels, getClientNameOverride, getHttpOperationParameter, isHttpMetadata, isSdkBuiltInKind, isSdkIntKind, } from "@azure-tools/typespec-client-generator-core";
|
|
4
4
|
import { NoTarget, getDoc, getNamespaceFullName, getOverloadedOperation, getSummary, isArrayModelType, isRecordModelType, listServices, } from "@typespec/compiler";
|
|
5
5
|
import { Visibility, getAuthentication, } from "@typespec/http";
|
|
6
6
|
import { getSegment } from "@typespec/rest";
|
|
@@ -718,12 +718,6 @@ export class CodeModelBuilder {
|
|
|
718
718
|
this.trackSchemaUsage(r.schema, { usage: [SchemaContext.Paged] });
|
|
719
719
|
}
|
|
720
720
|
});
|
|
721
|
-
function getLastSegment(segments) {
|
|
722
|
-
if (segments) {
|
|
723
|
-
return segments[segments.length - 1];
|
|
724
|
-
}
|
|
725
|
-
return undefined;
|
|
726
|
-
}
|
|
727
721
|
// pageItems
|
|
728
722
|
const pageItemsResponseProperty = findResponsePropertySegments(op, sdkMethod.response.resultSegments);
|
|
729
723
|
// "sdkMethod.response.resultSegments" should not be empty for "paging"/"lropaging"
|
|
@@ -744,9 +738,9 @@ export class CodeModelBuilder {
|
|
|
744
738
|
let continuationTokenResponseHeader;
|
|
745
739
|
if (!this.isBranded()) {
|
|
746
740
|
// parameter would either be query or header parameter, so taking the last segment would be enough
|
|
747
|
-
const continuationTokenParameterSegment =
|
|
741
|
+
const continuationTokenParameterSegment = sdkMethod.pagingMetadata.continuationTokenParameterSegments?.at(-1);
|
|
748
742
|
// response could be response header, where the last segment would do; or it be json path in the response body, where we use "findResponsePropertySegments" to find them
|
|
749
|
-
const continuationTokenResponseSegment =
|
|
743
|
+
const continuationTokenResponseSegment = sdkMethod.pagingMetadata.continuationTokenResponseSegments?.at(-1);
|
|
750
744
|
if (continuationTokenParameterSegment && op.parameters) {
|
|
751
745
|
// for now, continuationToken is either request query or header parameter
|
|
752
746
|
const parameter = getHttpOperationParameter(sdkMethod, continuationTokenParameterSegment);
|
|
@@ -787,6 +781,7 @@ export class CodeModelBuilder {
|
|
|
787
781
|
}
|
|
788
782
|
}
|
|
789
783
|
else if (continuationTokenResponseSegment?.kind === "property") {
|
|
784
|
+
// continuationToken is response body property
|
|
790
785
|
continuationTokenResponseProperty = findResponsePropertySegments(op, sdkMethod.pagingMetadata.continuationTokenResponseSegments);
|
|
791
786
|
}
|
|
792
787
|
}
|
|
@@ -800,14 +795,17 @@ export class CodeModelBuilder {
|
|
|
800
795
|
nextLinkReInjectedParameters = [];
|
|
801
796
|
for (const parameterSegments of sdkMethod.pagingMetadata
|
|
802
797
|
.nextLinkReInjectedParametersSegments) {
|
|
803
|
-
const nextLinkReInjectedParameterSegment =
|
|
798
|
+
const nextLinkReInjectedParameterSegment = parameterSegments?.at(-1);
|
|
804
799
|
if (nextLinkReInjectedParameterSegment && op.parameters) {
|
|
805
800
|
const parameter = getHttpOperationParameter(sdkMethod, nextLinkReInjectedParameterSegment);
|
|
806
801
|
if (parameter) {
|
|
807
802
|
// find the corresponding parameter in the code model operation
|
|
808
803
|
for (const opParam of op.parameters) {
|
|
809
804
|
if (opParam.protocol.http?.in === parameter.kind &&
|
|
810
|
-
opParam.language.default.serializedName ===
|
|
805
|
+
opParam.language.default.serializedName ===
|
|
806
|
+
(parameter.kind === "property"
|
|
807
|
+
? getPropertySerializedName(parameter)
|
|
808
|
+
: parameter.serializedName)) {
|
|
811
809
|
nextLinkReInjectedParameters.push(opParam);
|
|
812
810
|
break;
|
|
813
811
|
}
|
|
@@ -878,9 +876,7 @@ export class CodeModelBuilder {
|
|
|
878
876
|
lroMetadata.finalResponse.resultSegments) {
|
|
879
877
|
// TODO: in future the property could be nested, so that the "resultSegments" would contain more than 1 element
|
|
880
878
|
const lastSegment = lroMetadata.finalResponse.resultSegments[lroMetadata.finalResponse.resultSegments.length - 1];
|
|
881
|
-
|
|
882
|
-
finalResultPropertySerializedName = getPropertySerializedName(lastSegment);
|
|
883
|
-
}
|
|
879
|
+
finalResultPropertySerializedName = getPropertySerializedName(lastSegment);
|
|
884
880
|
}
|
|
885
881
|
}
|
|
886
882
|
// track usage
|
|
@@ -1096,6 +1092,7 @@ export class CodeModelBuilder {
|
|
|
1096
1092
|
}
|
|
1097
1093
|
request.parameters = [];
|
|
1098
1094
|
request.signatureParameters = [];
|
|
1095
|
+
const thisSdkContext = this.sdkContext;
|
|
1099
1096
|
function findOperationParameter(parameter) {
|
|
1100
1097
|
let opParameter;
|
|
1101
1098
|
// ignore constant parameter, usually the "accept" and "content-type" header
|
|
@@ -1104,7 +1101,7 @@ export class CodeModelBuilder {
|
|
|
1104
1101
|
// there should be only 1 body parameter
|
|
1105
1102
|
opParameter = requestParameters.find((it) => it.protocol.http?.in === "body");
|
|
1106
1103
|
}
|
|
1107
|
-
else if (parameter.kind === "property") {
|
|
1104
|
+
else if (parameter.kind === "property" && !isHttpMetadata(thisSdkContext, parameter)) {
|
|
1108
1105
|
// body property
|
|
1109
1106
|
// if body property appears on method signature, it should already be flattened, hence the check on VirtualParameter
|
|
1110
1107
|
opParameter = requestParameters.find((it) => it instanceof VirtualParameter &&
|
|
@@ -1113,7 +1110,10 @@ export class CodeModelBuilder {
|
|
|
1113
1110
|
else {
|
|
1114
1111
|
// query, path, header
|
|
1115
1112
|
opParameter = requestParameters.find((it) => it.protocol.http?.in === parameter.kind &&
|
|
1116
|
-
it.language.default.serializedName ===
|
|
1113
|
+
it.language.default.serializedName ===
|
|
1114
|
+
(parameter.kind === "property"
|
|
1115
|
+
? getPropertySerializedName(parameter)
|
|
1116
|
+
: parameter.serializedName));
|
|
1117
1117
|
}
|
|
1118
1118
|
}
|
|
1119
1119
|
return opParameter;
|
|
@@ -1454,7 +1454,7 @@ export class CodeModelBuilder {
|
|
|
1454
1454
|
if (bodyParameter) {
|
|
1455
1455
|
if (bodyParameter.type.kind === "model") {
|
|
1456
1456
|
for (const bodyProperty of bodyParameter.type.properties) {
|
|
1457
|
-
if (
|
|
1457
|
+
if (!isHttpMetadata(this.sdkContext, bodyProperty)) {
|
|
1458
1458
|
this.addParameterOrBodyPropertyToCodeModelRequest(bodyProperty, op, request, schema, parameter);
|
|
1459
1459
|
}
|
|
1460
1460
|
}
|
|
@@ -1993,7 +1993,7 @@ export class CodeModelBuilder {
|
|
|
1993
1993
|
}
|
|
1994
1994
|
// properties
|
|
1995
1995
|
for (const prop of type.properties) {
|
|
1996
|
-
if (
|
|
1996
|
+
if (!isHttpMetadata(this.sdkContext, prop) && !prop.discriminator) {
|
|
1997
1997
|
objectSchema.addProperty(this.processModelProperty(prop));
|
|
1998
1998
|
}
|
|
1999
1999
|
}
|
|
@@ -2019,7 +2019,7 @@ export class CodeModelBuilder {
|
|
|
2019
2019
|
// if the property does not return in response, it had to be nullable
|
|
2020
2020
|
nullable = true;
|
|
2021
2021
|
}
|
|
2022
|
-
if (modelProperty.
|
|
2022
|
+
if (modelProperty.flatten) {
|
|
2023
2023
|
extensions = extensions ?? {};
|
|
2024
2024
|
extensions["x-ms-client-flatten"] = true;
|
|
2025
2025
|
}
|
|
@@ -2028,15 +2028,10 @@ export class CodeModelBuilder {
|
|
|
2028
2028
|
extensions = extensions ?? {};
|
|
2029
2029
|
extensions["x-ms-mutability"] = mutability;
|
|
2030
2030
|
}
|
|
2031
|
-
if (modelProperty.
|
|
2031
|
+
if (modelProperty.serializationOptions.multipart) {
|
|
2032
2032
|
if (modelProperty.serializationOptions.multipart?.isFilePart) {
|
|
2033
2033
|
schema = this.processMultipartFormDataFilePropertySchema(modelProperty);
|
|
2034
2034
|
}
|
|
2035
|
-
else if (modelProperty.type.kind === "model" &&
|
|
2036
|
-
modelProperty.type.properties.some((it) => it.kind === "body")) {
|
|
2037
|
-
// TODO: this is HttpPart of non-File. TCGC should help handle this.
|
|
2038
|
-
schema = this.processSchema(modelProperty.type.properties.find((it) => it.kind === "body").type, "");
|
|
2039
|
-
}
|
|
2040
2035
|
else {
|
|
2041
2036
|
schema = this.processSchema(nonNullType, "");
|
|
2042
2037
|
}
|
|
@@ -2049,11 +2044,11 @@ export class CodeModelBuilder {
|
|
|
2049
2044
|
required: !modelProperty.optional,
|
|
2050
2045
|
nullable: nullable,
|
|
2051
2046
|
readOnly: this.isReadOnly(modelProperty),
|
|
2052
|
-
serializedName:
|
|
2047
|
+
serializedName: getPropertySerializedName(modelProperty),
|
|
2053
2048
|
extensions: extensions,
|
|
2054
2049
|
});
|
|
2055
2050
|
// xml
|
|
2056
|
-
if (modelProperty.
|
|
2051
|
+
if (modelProperty.serializationOptions.xml) {
|
|
2057
2052
|
// property.serializedName is set via getPropertySerializedName
|
|
2058
2053
|
// "serialization" is set to the property in TypeSpec emitter, not in the schema
|
|
2059
2054
|
// this avoid duplicate schema, when different property has different serialization options, but refers to the same schema
|
|
@@ -2215,7 +2210,7 @@ export class CodeModelBuilder {
|
|
|
2215
2210
|
return true;
|
|
2216
2211
|
}
|
|
2217
2212
|
else {
|
|
2218
|
-
const visibility = target.
|
|
2213
|
+
const visibility = target.visibility;
|
|
2219
2214
|
if (visibility) {
|
|
2220
2215
|
return (!visibility.includes(Visibility.All) &&
|
|
2221
2216
|
!visibility.includes(Visibility.Create) &&
|
|
@@ -2229,7 +2224,7 @@ export class CodeModelBuilder {
|
|
|
2229
2224
|
}
|
|
2230
2225
|
}
|
|
2231
2226
|
isSecret(target) {
|
|
2232
|
-
if (target.
|
|
2227
|
+
if (target.visibility) {
|
|
2233
2228
|
return !target.visibility.includes(Visibility.Read);
|
|
2234
2229
|
}
|
|
2235
2230
|
else {
|
|
@@ -2237,7 +2232,7 @@ export class CodeModelBuilder {
|
|
|
2237
2232
|
}
|
|
2238
2233
|
}
|
|
2239
2234
|
getMutability(target) {
|
|
2240
|
-
if (target.
|
|
2235
|
+
if (target.visibility) {
|
|
2241
2236
|
const mutability = [];
|
|
2242
2237
|
if (target.visibility.includes(Visibility.Create)) {
|
|
2243
2238
|
mutability.push("create");
|