@azure-tools/typespec-java 0.20.0 → 0.20.2
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 +0 -1
- package/dist/src/code-model-builder.d.ts.map +1 -1
- package/dist/src/code-model-builder.js +178 -137
- package/dist/src/code-model-builder.js.map +1 -1
- package/dist/src/common/client.d.ts +1 -1
- package/dist/src/common/client.d.ts.map +1 -1
- package/dist/src/common/client.js +1 -0
- package/dist/src/common/client.js.map +1 -1
- package/dist/src/common/code-model.d.ts +1 -1
- package/dist/src/common/code-model.d.ts.map +1 -1
- package/dist/src/common/code-model.js +2 -1
- package/dist/src/common/code-model.js.map +1 -1
- package/dist/src/common/operation.d.ts +2 -2
- package/dist/src/common/operation.d.ts.map +1 -1
- package/dist/src/common/operation.js +2 -1
- package/dist/src/common/operation.js.map +1 -1
- package/dist/src/common/schemas/choice.d.ts.map +1 -1
- package/dist/src/common/schemas/choice.js +2 -1
- package/dist/src/common/schemas/choice.js.map +1 -1
- package/dist/src/common/schemas/constant.d.ts +1 -1
- package/dist/src/common/schemas/constant.d.ts.map +1 -1
- package/dist/src/common/schemas/constant.js +1 -0
- package/dist/src/common/schemas/constant.js.map +1 -1
- package/dist/src/common/schemas/relationship.d.ts +2 -3
- package/dist/src/common/schemas/relationship.d.ts.map +1 -1
- package/dist/src/common/schemas/relationship.js +2 -2
- package/dist/src/common/schemas/relationship.js.map +1 -1
- package/dist/src/common/schemas/time.d.ts +1 -1
- package/dist/src/common/schemas/time.d.ts.map +1 -1
- package/dist/src/common/schemas/time.js +1 -0
- package/dist/src/common/schemas/time.js.map +1 -1
- package/dist/src/common/schemas/usage.d.ts +2 -2
- package/dist/src/common/schemas/usage.d.ts.map +1 -1
- package/dist/src/common/schemas/usage.js +2 -2
- package/dist/src/common/schemas/usage.js.map +1 -1
- package/dist/src/emitter.d.ts +5 -6
- package/dist/src/emitter.d.ts.map +1 -1
- package/dist/src/emitter.js +12 -14
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/external-schemas.d.ts.map +1 -1
- package/dist/src/external-schemas.js +3 -2
- package/dist/src/external-schemas.js.map +1 -1
- package/dist/src/models.d.ts +2 -2
- package/dist/src/models.d.ts.map +1 -1
- package/dist/src/models.js.map +1 -1
- package/dist/src/operation-utils.d.ts +3 -3
- package/dist/src/operation-utils.d.ts.map +1 -1
- package/dist/src/operation-utils.js +2 -2
- package/dist/src/operation-utils.js.map +1 -1
- package/dist/src/type-utils.d.ts +2 -2
- package/dist/src/type-utils.d.ts.map +1 -1
- package/dist/src/type-utils.js +23 -10
- package/dist/src/type-utils.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +10 -4
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/{target → generator/http-client-generator/target}/emitter.jar +0 -0
- package/package.json +5 -5
- package/dist/src/prenamer/formatter.d.ts +0 -11
- package/dist/src/prenamer/formatter.d.ts.map +0 -1
- package/dist/src/prenamer/formatter.js +0 -124
- package/dist/src/prenamer/formatter.js.map +0 -1
- package/dist/src/prenamer/naming-utils.d.ts +0 -67
- package/dist/src/prenamer/naming-utils.d.ts.map +0 -1
- package/dist/src/prenamer/naming-utils.js +0 -147
- package/dist/src/prenamer/naming-utils.js.map +0 -1
- package/dist/src/prenamer/prenamer.d.ts +0 -36
- package/dist/src/prenamer/prenamer.d.ts.map +0 -1
- package/dist/src/prenamer/prenamer.js +0 -333
- package/dist/src/prenamer/prenamer.js.map +0 -1
|
@@ -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,EAeb,YAAY,EAEZ,YAAY,EAEZ,SAAS,EAKT,MAAM,EAMN,YAAY,EAKb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAwBL,OAAO,
|
|
1
|
+
{"version":3,"file":"code-model-builder.d.ts","sourceRoot":"","sources":["../../src/code-model-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { AnySchema, ApiVersion, ArraySchema, BinaryResponse, BinarySchema, BooleanSchema, ByteArraySchema, ChoiceValue, DateSchema, DateTimeSchema, DictionarySchema, Discriminator, GroupProperty, GroupSchema, HttpHeader, HttpParameter, ImplementationLocation, KeySecurityScheme, Language, 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 {
|
|
3
|
+
import { createSdkContext, getAllModels, getClientType, getWireName, isApiVersion, isSdkBuiltInKind, isSdkIntKind, } from "@azure-tools/typespec-client-generator-core";
|
|
4
4
|
import { getDoc, getEffectiveModelType, getNamespaceFullName, getOverloadedOperation, getSummary, getVisibility, isArrayModelType, isRecordModelType, listServices, } from "@typespec/compiler";
|
|
5
|
-
import { Visibility, getAuthentication, getHeaderFieldName, getPathParamName, getQueryParamName,
|
|
5
|
+
import { Visibility, getAuthentication, getHeaderFieldName, getPathParamName, getQueryParamName, isHeader, isPathParam, isQueryParam, } from "@typespec/http";
|
|
6
6
|
import { getSegment } from "@typespec/rest";
|
|
7
7
|
import { getAddedOnVersions } from "@typespec/versioning";
|
|
8
8
|
import { fail } from "assert";
|
|
9
9
|
import pkg from "lodash";
|
|
10
|
-
import { Client as CodeModelClient } from "./common/client.js";
|
|
10
|
+
import { Client as CodeModelClient, } from "./common/client.js";
|
|
11
11
|
import { CodeModel } from "./common/code-model.js";
|
|
12
12
|
import { LongRunningMetadata } from "./common/long-running-metadata.js";
|
|
13
13
|
import { Operation as CodeModelOperation, ConvenienceApi, Request } from "./common/operation.js";
|
|
@@ -19,7 +19,6 @@ import { SchemaContext } from "./common/schemas/usage.js";
|
|
|
19
19
|
import { createPollOperationDetailsSchema, getFileDetailsSchema } from "./external-schemas.js";
|
|
20
20
|
import { ClientContext } from "./models.js";
|
|
21
21
|
import { CONTENT_TYPE_KEY, ORIGIN_API_VERSION, SPECIAL_HEADER_NAMES, cloneOperationParameter, getServiceVersion, isKnownContentType, isLroNewPollingStrategy, isPayloadProperty, operationIsJsonMergePatch, operationIsMultipart, operationIsMultipleContentTypes, } from "./operation-utils.js";
|
|
22
|
-
import { PreNamer } from "./prenamer/prenamer.js";
|
|
23
22
|
import { ProcessingCache, getAccess, getDurationFormatFromSdkType, getNonNullSdkType, getUnionDescription, getUsage, isStable, modelIs, pushDistinct, } from "./type-utils.js";
|
|
24
23
|
import { getNamespace, logWarning, pascalCase, removeClientSuffix, stringArrayContainsIgnoreCase, trace, } from "./utils.js";
|
|
25
24
|
const { isEqual } = pkg;
|
|
@@ -39,12 +38,11 @@ export class CodeModelBuilder {
|
|
|
39
38
|
this.options["skip-special-headers"].forEach((it) => SPECIAL_HEADER_NAMES.add(it.toLowerCase()));
|
|
40
39
|
}
|
|
41
40
|
const service = listServices(this.program)[0];
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
throw Error("Cannot emit yaml for a namespace that doesn't exist.");
|
|
41
|
+
if (!service) {
|
|
42
|
+
throw Error("TypeSpec for HTTP must define a service.");
|
|
45
43
|
}
|
|
46
|
-
this.serviceNamespace =
|
|
47
|
-
this.namespace = getNamespaceFullName(serviceNamespace) || "Azure.Client";
|
|
44
|
+
this.serviceNamespace = service.type;
|
|
45
|
+
this.namespace = getNamespaceFullName(this.serviceNamespace) || "Azure.Client";
|
|
48
46
|
// java namespace
|
|
49
47
|
const javaNamespace = this.getJavaNamespace(this.namespace);
|
|
50
48
|
const namespace1 = this.namespace;
|
|
@@ -56,8 +54,8 @@ export class CodeModelBuilder {
|
|
|
56
54
|
},
|
|
57
55
|
};
|
|
58
56
|
// init code model
|
|
59
|
-
const title = (_b = this.options["service-name"]) !== null && _b !== void 0 ? _b : serviceNamespace.name;
|
|
60
|
-
const description = this.getDoc(serviceNamespace);
|
|
57
|
+
const title = (_b = this.options["service-name"]) !== null && _b !== void 0 ? _b : this.serviceNamespace.name;
|
|
58
|
+
const description = this.getDoc(this.serviceNamespace);
|
|
61
59
|
this.codeModel = new CodeModel(title, false, {
|
|
62
60
|
info: {
|
|
63
61
|
description: description,
|
|
@@ -66,7 +64,7 @@ export class CodeModelBuilder {
|
|
|
66
64
|
default: {
|
|
67
65
|
name: title,
|
|
68
66
|
description: description,
|
|
69
|
-
summary: this.getSummary(serviceNamespace),
|
|
67
|
+
summary: this.getSummary(this.serviceNamespace),
|
|
70
68
|
namespace: this.namespace,
|
|
71
69
|
},
|
|
72
70
|
java: {
|
|
@@ -93,9 +91,6 @@ export class CodeModelBuilder {
|
|
|
93
91
|
this.processClients();
|
|
94
92
|
this.processModels();
|
|
95
93
|
this.processSchemaUsage();
|
|
96
|
-
if (this.options.namer) {
|
|
97
|
-
this.codeModel = new PreNamer(this.codeModel).init().process();
|
|
98
|
-
}
|
|
99
94
|
this.deduplicateSchemaName();
|
|
100
95
|
return this.codeModel;
|
|
101
96
|
}
|
|
@@ -121,7 +116,7 @@ export class CodeModelBuilder {
|
|
|
121
116
|
},
|
|
122
117
|
language: {
|
|
123
118
|
default: {
|
|
124
|
-
serializedName: arg.
|
|
119
|
+
serializedName: arg.serializedName,
|
|
125
120
|
},
|
|
126
121
|
},
|
|
127
122
|
// TODO: deprecate this logic of string/url for x-ms-skip-url-encoding
|
|
@@ -274,11 +269,16 @@ export class CodeModelBuilder {
|
|
|
274
269
|
schemaUsage.splice(index, 1);
|
|
275
270
|
}
|
|
276
271
|
}
|
|
277
|
-
// Internal on
|
|
278
|
-
if (schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
272
|
+
// Internal on PublicSpread, but Public takes precedence
|
|
273
|
+
if (schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.PublicSpread)) {
|
|
274
|
+
// remove PublicSpread as it now served its purpose
|
|
275
|
+
schemaUsage.splice(schemaUsage.indexOf(SchemaContext.PublicSpread), 1);
|
|
276
|
+
// Public would override PublicSpread, hence do nothing if this schema is Public
|
|
277
|
+
if (!(schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.Public))) {
|
|
278
|
+
// set the model as Internal, so that it is not exposed to user
|
|
279
|
+
if (!schemaUsage.includes(SchemaContext.Internal)) {
|
|
280
|
+
schemaUsage.push(SchemaContext.Internal);
|
|
281
|
+
}
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
}
|
|
@@ -431,7 +431,8 @@ export class CodeModelBuilder {
|
|
|
431
431
|
const subClient = method.response;
|
|
432
432
|
if (!isRootClient) {
|
|
433
433
|
// if it is not root client, append the parent client's name
|
|
434
|
-
subClient.name =
|
|
434
|
+
subClient.name =
|
|
435
|
+
removeClientSuffix(client.name) + removeClientSuffix(pascalCase(subClient.name));
|
|
435
436
|
}
|
|
436
437
|
operationGroups.push(subClient);
|
|
437
438
|
if (includeNestedOperationGroups) {
|
|
@@ -518,7 +519,8 @@ export class CodeModelBuilder {
|
|
|
518
519
|
"x-ms-examples": operationExamples,
|
|
519
520
|
},
|
|
520
521
|
});
|
|
521
|
-
codeModelOperation.crossLanguageDefinitionId =
|
|
522
|
+
codeModelOperation.crossLanguageDefinitionId =
|
|
523
|
+
sdkMethod.crossLanguageDefintionId;
|
|
522
524
|
codeModelOperation.internalApi = sdkMethod.access === "internal";
|
|
523
525
|
const convenienceApiName = this.getConvenienceApiName(sdkMethod);
|
|
524
526
|
let generateConvenienceApi = sdkMethod.generateConvenient;
|
|
@@ -539,7 +541,8 @@ export class CodeModelBuilder {
|
|
|
539
541
|
apiComment = `Convenience API is not generated, as operation '${operationName}' is multiple content-type`;
|
|
540
542
|
this.logWarning(apiComment);
|
|
541
543
|
}
|
|
542
|
-
else if (operationIsJsonMergePatch(httpOperation) &&
|
|
544
|
+
else if (operationIsJsonMergePatch(httpOperation) &&
|
|
545
|
+
this.options["stream-style-serialization"] === false) {
|
|
543
546
|
// do not generate convenient method for json merge patch operation if stream-style-serialization is not enabled
|
|
544
547
|
generateConvenienceApi = false;
|
|
545
548
|
apiComment = `Convenience API is not generated, as operation '${operationName}' is 'application/merge-patch+json' and stream-style-serialization is not enabled`;
|
|
@@ -675,7 +678,9 @@ export class CodeModelBuilder {
|
|
|
675
678
|
lroMetadata.finalEnvelopeResult &&
|
|
676
679
|
lroMetadata.finalResult !== "void" &&
|
|
677
680
|
lroMetadata.finalEnvelopeResult !== "void") {
|
|
678
|
-
const finalResult = useNewPollStrategy
|
|
681
|
+
const finalResult = useNewPollStrategy
|
|
682
|
+
? lroMetadata.finalResult
|
|
683
|
+
: lroMetadata.finalEnvelopeResult;
|
|
679
684
|
const finalType = this.findResponseBody(finalResult);
|
|
680
685
|
const sdkType = getClientType(this.sdkContext, finalType);
|
|
681
686
|
finalSchema = this.processSchemaFromSdkType(sdkType, "finalResult");
|
|
@@ -742,7 +747,8 @@ export class CodeModelBuilder {
|
|
|
742
747
|
op.addParameter(parameter);
|
|
743
748
|
clientContext.addGlobalParameter(parameter);
|
|
744
749
|
}
|
|
745
|
-
else if (param.kind === "header" &&
|
|
750
|
+
else if (param.kind === "header" &&
|
|
751
|
+
SPECIAL_HEADER_NAMES.has(param.serializedName.toLowerCase())) {
|
|
746
752
|
// special headers
|
|
747
753
|
op.specialHeaders = (_a = op.specialHeaders) !== null && _a !== void 0 ? _a : [];
|
|
748
754
|
if (!stringArrayContainsIgnoreCase(op.specialHeaders, param.serializedName)) {
|
|
@@ -801,6 +807,10 @@ export class CodeModelBuilder {
|
|
|
801
807
|
explode = true;
|
|
802
808
|
break;
|
|
803
809
|
}
|
|
810
|
+
if (param.explode && !param.collectionFormat) {
|
|
811
|
+
style = SerializationStyle.Form;
|
|
812
|
+
explode = true;
|
|
813
|
+
}
|
|
804
814
|
}
|
|
805
815
|
else if (param.kind === "header") {
|
|
806
816
|
const format = param.collectionFormat;
|
|
@@ -838,7 +848,9 @@ export class CodeModelBuilder {
|
|
|
838
848
|
op.addParameter(parameter);
|
|
839
849
|
this.trackSchemaUsage(schema, { usage: [SchemaContext.Input] });
|
|
840
850
|
if (op.convenienceApi) {
|
|
841
|
-
this.trackSchemaUsage(schema, {
|
|
851
|
+
this.trackSchemaUsage(schema, {
|
|
852
|
+
usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public],
|
|
853
|
+
});
|
|
842
854
|
}
|
|
843
855
|
}
|
|
844
856
|
}
|
|
@@ -868,7 +880,8 @@ export class CodeModelBuilder {
|
|
|
868
880
|
}
|
|
869
881
|
else if (etagHeaders.length === 2) {
|
|
870
882
|
const etagHeadersLowerCase = etagHeaders.map((it) => it.toLowerCase());
|
|
871
|
-
if (etagHeadersLowerCase.includes("if-match") &&
|
|
883
|
+
if (etagHeadersLowerCase.includes("if-match") &&
|
|
884
|
+
etagHeadersLowerCase.includes("if-none-match")) {
|
|
872
885
|
// only 2 headers available, use MatchConditions
|
|
873
886
|
groupToMatchConditions = true;
|
|
874
887
|
}
|
|
@@ -944,7 +957,7 @@ export class CodeModelBuilder {
|
|
|
944
957
|
}
|
|
945
958
|
}
|
|
946
959
|
processParameterBody(op, rawHttpOperation, sdkHttpOperation, sdkBody) {
|
|
947
|
-
var _a;
|
|
960
|
+
var _a, _b, _c;
|
|
948
961
|
// set contentTypes to mediaTypes
|
|
949
962
|
op.requests[0].protocol.http.mediaTypes = sdkBody.contentTypes;
|
|
950
963
|
const unknownRequestBody = op.requests[0].protocol.http.mediaTypes &&
|
|
@@ -969,97 +982,115 @@ export class CodeModelBuilder {
|
|
|
969
982
|
},
|
|
970
983
|
});
|
|
971
984
|
op.addParameter(parameter);
|
|
985
|
+
const jsonMergePatch = operationIsJsonMergePatch(sdkHttpOperation);
|
|
986
|
+
const schemaIsPublicBeforeProcess = schema instanceof ObjectSchema &&
|
|
987
|
+
((_b = schema.usage) === null || _b === void 0 ? void 0 : _b.includes(SchemaContext.Public));
|
|
972
988
|
this.trackSchemaUsage(schema, { usage: [SchemaContext.Input] });
|
|
973
989
|
if (op.convenienceApi) {
|
|
974
990
|
// model/schema does not need to be Public or Internal, if it is not to be used in convenience API
|
|
975
|
-
this.trackSchemaUsage(schema, {
|
|
991
|
+
this.trackSchemaUsage(schema, {
|
|
992
|
+
usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public],
|
|
993
|
+
});
|
|
976
994
|
}
|
|
977
|
-
if (
|
|
995
|
+
if (jsonMergePatch) {
|
|
978
996
|
this.trackSchemaUsage(schema, { usage: [SchemaContext.JsonMergePatch] });
|
|
979
997
|
}
|
|
980
998
|
if (op.convenienceApi && operationIsMultipart(sdkHttpOperation)) {
|
|
981
999
|
this.trackSchemaUsage(schema, { serializationFormats: [KnownMediaType.Multipart] });
|
|
982
1000
|
}
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
//
|
|
987
|
-
const
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
if (
|
|
992
|
-
//
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
return;
|
|
999
|
-
}
|
|
1000
|
-
this.trackSchemaUsage(schema, { usage: [SchemaContext.Anonymous] });
|
|
1001
|
-
if (op.convenienceApi && op.parameters) {
|
|
1002
|
-
op.convenienceApi.requests = [];
|
|
1003
|
-
const request = new Request({
|
|
1004
|
-
protocol: op.requests[0].protocol,
|
|
1005
|
-
});
|
|
1006
|
-
request.parameters = [];
|
|
1007
|
-
op.convenienceApi.requests.push(request);
|
|
1008
|
-
// header/query/path params
|
|
1009
|
-
for (const opParameter of parameters) {
|
|
1010
|
-
this.addParameterOrBodyPropertyToCodeModelRequest(opParameter, op, request, schema, parameter);
|
|
1001
|
+
if (op.convenienceApi) {
|
|
1002
|
+
// Explicit body parameter @body or @bodyRoot would result to the existence of rawHttpOperation.parameters.body.property
|
|
1003
|
+
// Implicit body parameter would result to rawHttpOperation.parameters.body.property be undefined
|
|
1004
|
+
// see https://typespec.io/docs/libraries/http/cheat-sheet#data-types
|
|
1005
|
+
const bodyParameterFlatten = schema instanceof ObjectSchema &&
|
|
1006
|
+
sdkType.kind === "model" &&
|
|
1007
|
+
!((_c = rawHttpOperation.parameters.body) === null || _c === void 0 ? void 0 : _c.property) &&
|
|
1008
|
+
!this.isArm();
|
|
1009
|
+
if (schema instanceof ObjectSchema && bodyParameterFlatten) {
|
|
1010
|
+
// flatten body parameter
|
|
1011
|
+
const parameters = sdkHttpOperation.parameters;
|
|
1012
|
+
const bodyParameter = sdkHttpOperation.bodyParam;
|
|
1013
|
+
if (!parameter.language.default.name) {
|
|
1014
|
+
// name the parameter for documentation
|
|
1015
|
+
parameter.language.default.name = "request";
|
|
1011
1016
|
}
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
if (
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1017
|
+
if (jsonMergePatch) {
|
|
1018
|
+
// skip model flatten, if "application/merge-patch+json"
|
|
1019
|
+
if (sdkType.isGeneratedName) {
|
|
1020
|
+
schema.language.default.name = pascalCase(op.language.default.name) + "PatchRequest";
|
|
1021
|
+
}
|
|
1022
|
+
return;
|
|
1023
|
+
}
|
|
1024
|
+
const schemaUsage = schema.usage;
|
|
1025
|
+
if (!schemaIsPublicBeforeProcess && (schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.includes(SchemaContext.Public))) {
|
|
1026
|
+
// Public added in this op, change it to PublicSpread
|
|
1027
|
+
// This means that if this op would originally add Public to this schema, it adds PublicSpread instead
|
|
1028
|
+
schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.splice(schemaUsage === null || schemaUsage === void 0 ? void 0 : schemaUsage.indexOf(SchemaContext.Public), 1);
|
|
1029
|
+
this.trackSchemaUsage(schema, { usage: [SchemaContext.PublicSpread] });
|
|
1030
|
+
}
|
|
1031
|
+
if (op.convenienceApi && op.parameters) {
|
|
1032
|
+
op.convenienceApi.requests = [];
|
|
1033
|
+
const request = new Request({
|
|
1034
|
+
protocol: op.requests[0].protocol,
|
|
1035
|
+
});
|
|
1036
|
+
request.parameters = [];
|
|
1037
|
+
op.convenienceApi.requests.push(request);
|
|
1038
|
+
// header/query/path params
|
|
1039
|
+
for (const opParameter of parameters) {
|
|
1040
|
+
this.addParameterOrBodyPropertyToCodeModelRequest(opParameter, op, request, schema, parameter);
|
|
1041
|
+
}
|
|
1042
|
+
// body param
|
|
1043
|
+
if (bodyParameter) {
|
|
1044
|
+
if (bodyParameter.type.kind === "model") {
|
|
1045
|
+
for (const bodyProperty of bodyParameter.type.properties) {
|
|
1046
|
+
if (bodyProperty.kind === "property") {
|
|
1047
|
+
this.addParameterOrBodyPropertyToCodeModelRequest(bodyProperty, op, request, schema, parameter);
|
|
1048
|
+
}
|
|
1018
1049
|
}
|
|
1019
1050
|
}
|
|
1020
1051
|
}
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1052
|
+
request.signatureParameters = request.parameters;
|
|
1053
|
+
if (request.signatureParameters.length > 6) {
|
|
1054
|
+
// create an option bag
|
|
1055
|
+
const name = op.language.default.name + "Options";
|
|
1056
|
+
const namespace = getNamespace(rawHttpOperation.operation);
|
|
1057
|
+
// option bag schema
|
|
1058
|
+
const optionBagSchema = this.codeModel.schemas.add(new GroupSchema(name, `Options for ${op.language.default.name} API`, {
|
|
1059
|
+
language: {
|
|
1060
|
+
default: {
|
|
1061
|
+
namespace: namespace,
|
|
1062
|
+
},
|
|
1063
|
+
java: {
|
|
1064
|
+
namespace: this.getJavaNamespace(namespace),
|
|
1065
|
+
},
|
|
1035
1066
|
},
|
|
1036
|
-
},
|
|
1037
|
-
}));
|
|
1038
|
-
request.parameters.forEach((it) => {
|
|
1039
|
-
optionBagSchema.add(new GroupProperty(it.language.default.name, it.language.default.description, it.schema, {
|
|
1040
|
-
originalParameter: [it],
|
|
1041
|
-
summary: it.summary,
|
|
1042
|
-
required: it.required,
|
|
1043
|
-
nullable: it.nullable,
|
|
1044
|
-
readOnly: false,
|
|
1045
|
-
serializedName: it.language.default.serializedName,
|
|
1046
1067
|
}));
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1068
|
+
request.parameters.forEach((it) => {
|
|
1069
|
+
optionBagSchema.add(new GroupProperty(it.language.default.name, it.language.default.description, it.schema, {
|
|
1070
|
+
originalParameter: [it],
|
|
1071
|
+
summary: it.summary,
|
|
1072
|
+
required: it.required,
|
|
1073
|
+
nullable: it.nullable,
|
|
1074
|
+
readOnly: false,
|
|
1075
|
+
serializedName: it.language.default.serializedName,
|
|
1076
|
+
}));
|
|
1052
1077
|
});
|
|
1078
|
+
this.trackSchemaUsage(optionBagSchema, { usage: [SchemaContext.Input] });
|
|
1079
|
+
if (op.convenienceApi) {
|
|
1080
|
+
this.trackSchemaUsage(optionBagSchema, {
|
|
1081
|
+
usage: [op.internalApi ? SchemaContext.Internal : SchemaContext.Public],
|
|
1082
|
+
});
|
|
1083
|
+
}
|
|
1084
|
+
// option bag parameter
|
|
1085
|
+
const optionBagParameter = new Parameter("options", optionBagSchema.language.default.description, optionBagSchema, {
|
|
1086
|
+
implementation: ImplementationLocation.Method,
|
|
1087
|
+
required: true,
|
|
1088
|
+
nullable: false,
|
|
1089
|
+
});
|
|
1090
|
+
request.signatureParameters = [optionBagParameter];
|
|
1091
|
+
request.parameters.forEach((it) => (it.groupedBy = optionBagParameter));
|
|
1092
|
+
request.parameters.push(optionBagParameter);
|
|
1053
1093
|
}
|
|
1054
|
-
// option bag parameter
|
|
1055
|
-
const optionBagParameter = new Parameter("options", optionBagSchema.language.default.description, optionBagSchema, {
|
|
1056
|
-
implementation: ImplementationLocation.Method,
|
|
1057
|
-
required: true,
|
|
1058
|
-
nullable: false,
|
|
1059
|
-
});
|
|
1060
|
-
request.signatureParameters = [optionBagParameter];
|
|
1061
|
-
request.parameters.forEach((it) => (it.groupedBy = optionBagParameter));
|
|
1062
|
-
request.parameters.push(optionBagParameter);
|
|
1063
1094
|
}
|
|
1064
1095
|
}
|
|
1065
1096
|
}
|
|
@@ -1071,7 +1102,11 @@ export class CodeModelBuilder {
|
|
|
1071
1102
|
if (opParameter.kind !== "property") {
|
|
1072
1103
|
// not body property
|
|
1073
1104
|
// header/query/path, same location and same serializedName
|
|
1074
|
-
existParameter = (_a = op.parameters) === null || _a === void 0 ? void 0 : _a.find((it) => {
|
|
1105
|
+
existParameter = (_a = op.parameters) === null || _a === void 0 ? void 0 : _a.find((it) => {
|
|
1106
|
+
var _a;
|
|
1107
|
+
return ((_a = it.protocol.http) === null || _a === void 0 ? void 0 : _a.in) === opParameter.kind &&
|
|
1108
|
+
it.language.default.serializedName === serializedName;
|
|
1109
|
+
});
|
|
1075
1110
|
}
|
|
1076
1111
|
request.parameters = (_b = request.parameters) !== null && _b !== void 0 ? _b : [];
|
|
1077
1112
|
if (existParameter) {
|
|
@@ -1085,7 +1120,9 @@ export class CodeModelBuilder {
|
|
|
1085
1120
|
else {
|
|
1086
1121
|
// property from anonymous model
|
|
1087
1122
|
const existBodyProperty = (_e = schema.properties) === null || _e === void 0 ? void 0 : _e.find((it) => it.serializedName === serializedName);
|
|
1088
|
-
if (existBodyProperty &&
|
|
1123
|
+
if (existBodyProperty &&
|
|
1124
|
+
!existBodyProperty.readOnly &&
|
|
1125
|
+
!(existBodyProperty.schema instanceof ConstantSchema)) {
|
|
1089
1126
|
request.parameters.push(new VirtualParameter(existBodyProperty.language.default.name, existBodyProperty.language.default.description, existBodyProperty.schema, {
|
|
1090
1127
|
originalParameter: originalParameter,
|
|
1091
1128
|
targetProperty: existBodyProperty,
|
|
@@ -1129,7 +1166,9 @@ export class CodeModelBuilder {
|
|
|
1129
1166
|
}
|
|
1130
1167
|
const bodyType = sdkResponse.type;
|
|
1131
1168
|
let trackConvenienceApi = Boolean(op.convenienceApi);
|
|
1132
|
-
const unknownResponseBody = sdkResponse.contentTypes &&
|
|
1169
|
+
const unknownResponseBody = sdkResponse.contentTypes &&
|
|
1170
|
+
sdkResponse.contentTypes.length > 0 &&
|
|
1171
|
+
!isKnownContentType(sdkResponse.contentTypes);
|
|
1133
1172
|
let response;
|
|
1134
1173
|
if (unknownResponseBody && bodyType && bodyType.kind === "bytes") {
|
|
1135
1174
|
// binary
|
|
@@ -1471,7 +1510,8 @@ export class CodeModelBuilder {
|
|
|
1471
1510
|
},
|
|
1472
1511
|
},
|
|
1473
1512
|
});
|
|
1474
|
-
objectSchema.crossLanguageDefinitionId =
|
|
1513
|
+
objectSchema.crossLanguageDefinitionId =
|
|
1514
|
+
type.crossLanguageDefinitionId;
|
|
1475
1515
|
this.codeModel.schemas.add(objectSchema);
|
|
1476
1516
|
// cache this now before we accidentally recurse on this type.
|
|
1477
1517
|
if (!this.schemaCache.has(type)) {
|
|
@@ -1583,6 +1623,11 @@ export class CodeModelBuilder {
|
|
|
1583
1623
|
if (prop.multipartOptions.isFilePart) {
|
|
1584
1624
|
schema = this.processMultipartFormDataFilePropertySchemaFromSdkType(prop);
|
|
1585
1625
|
}
|
|
1626
|
+
else if (prop.type.kind === "model" &&
|
|
1627
|
+
prop.type.properties.some((it) => it.kind === "body")) {
|
|
1628
|
+
// TODO: this is HttpPart of non-File. TCGC should help handle this.
|
|
1629
|
+
schema = this.processSchemaFromSdkType(prop.type.properties.find((it) => it.kind === "body").type, "");
|
|
1630
|
+
}
|
|
1586
1631
|
else {
|
|
1587
1632
|
schema = this.processSchemaFromSdkType(nonNullType, "");
|
|
1588
1633
|
}
|
|
@@ -1654,7 +1699,9 @@ export class CodeModelBuilder {
|
|
|
1654
1699
|
case "Scalar": {
|
|
1655
1700
|
const scalarName = type.name;
|
|
1656
1701
|
let name = type.name;
|
|
1657
|
-
if (scalarName.startsWith("int") ||
|
|
1702
|
+
if (scalarName.startsWith("int") ||
|
|
1703
|
+
scalarName.startsWith("uint") ||
|
|
1704
|
+
scalarName === "safeint") {
|
|
1658
1705
|
name = scalarName === "safeint" || scalarName.includes("int64") ? "Long" : "Integer";
|
|
1659
1706
|
}
|
|
1660
1707
|
else if (scalarName.startsWith("float")) {
|
|
@@ -1673,7 +1720,7 @@ export class CodeModelBuilder {
|
|
|
1673
1720
|
case "Model":
|
|
1674
1721
|
if (isArrayModelType(this.program, type)) {
|
|
1675
1722
|
++option.depth;
|
|
1676
|
-
if (option.depth
|
|
1723
|
+
if (option.depth === 1) {
|
|
1677
1724
|
return this.getUnionVariantName(type.indexer.value, option) + "List";
|
|
1678
1725
|
}
|
|
1679
1726
|
else {
|
|
@@ -1682,7 +1729,7 @@ export class CodeModelBuilder {
|
|
|
1682
1729
|
}
|
|
1683
1730
|
else if (isRecordModelType(this.program, type)) {
|
|
1684
1731
|
++option.depth;
|
|
1685
|
-
if (option.depth
|
|
1732
|
+
if (option.depth === 1) {
|
|
1686
1733
|
return this.getUnionVariantName(type.indexer.value, option) + "Map";
|
|
1687
1734
|
}
|
|
1688
1735
|
else {
|
|
@@ -1708,7 +1755,9 @@ export class CodeModelBuilder {
|
|
|
1708
1755
|
var _a, _b, _c, _d;
|
|
1709
1756
|
const processSchemaFunc = (type) => this.processSchemaFromSdkType(type, "");
|
|
1710
1757
|
if (property.type.kind === "bytes" || property.type.kind === "model") {
|
|
1711
|
-
const namespace = property.type.kind === "model"
|
|
1758
|
+
const namespace = property.type.kind === "model"
|
|
1759
|
+
? ((_a = getNamespace(property.type.__raw)) !== null && _a !== void 0 ? _a : this.namespace)
|
|
1760
|
+
: this.namespace;
|
|
1712
1761
|
return getFileDetailsSchema(property, (_b = getNamespace(property.type.__raw)) !== null && _b !== void 0 ? _b : this.namespace, namespace, this.codeModel.schemas, this.binarySchema, this.stringSchema, processSchemaFunc);
|
|
1713
1762
|
}
|
|
1714
1763
|
else if (property.type.kind === "array" &&
|
|
@@ -1745,25 +1794,6 @@ export class CodeModelBuilder {
|
|
|
1745
1794
|
return getWireName(this.sdkContext, target);
|
|
1746
1795
|
}
|
|
1747
1796
|
}
|
|
1748
|
-
getParameterLocation(target) {
|
|
1749
|
-
if (isHeader(this.program, target)) {
|
|
1750
|
-
return ParameterLocation.Header;
|
|
1751
|
-
}
|
|
1752
|
-
else if (isQueryParam(this.program, target)) {
|
|
1753
|
-
return ParameterLocation.Query;
|
|
1754
|
-
}
|
|
1755
|
-
else if (isPathParam(this.program, target)) {
|
|
1756
|
-
return ParameterLocation.Path;
|
|
1757
|
-
}
|
|
1758
|
-
else if (isBody(this.program, target) ||
|
|
1759
|
-
isBodyRoot(this.program, target) ||
|
|
1760
|
-
isMultipartBodyProperty(this.program, target)) {
|
|
1761
|
-
return ParameterLocation.Body;
|
|
1762
|
-
}
|
|
1763
|
-
else {
|
|
1764
|
-
return "BodyProperty";
|
|
1765
|
-
}
|
|
1766
|
-
}
|
|
1767
1797
|
isReadOnly(target) {
|
|
1768
1798
|
const segment = target.__raw ? getSegment(this.program, target.__raw) !== undefined : false;
|
|
1769
1799
|
if (segment) {
|
|
@@ -1830,7 +1860,8 @@ export class CodeModelBuilder {
|
|
|
1830
1860
|
if (!namespace) {
|
|
1831
1861
|
return undefined;
|
|
1832
1862
|
}
|
|
1833
|
-
else if (baseJavaNamespace &&
|
|
1863
|
+
else if (baseJavaNamespace &&
|
|
1864
|
+
(namespace === tspNamespace || namespace.startsWith(tspNamespace + "."))) {
|
|
1834
1865
|
return baseJavaNamespace + namespace.slice(tspNamespace.length).toLowerCase();
|
|
1835
1866
|
}
|
|
1836
1867
|
else {
|
|
@@ -1863,10 +1894,11 @@ export class CodeModelBuilder {
|
|
|
1863
1894
|
}
|
|
1864
1895
|
get anySchema() {
|
|
1865
1896
|
var _a;
|
|
1866
|
-
return (_a = this._anySchema) !== null && _a !== void 0 ? _a : (this._anySchema = this.codeModel.schemas.add(new AnySchema("Anything")));
|
|
1897
|
+
return ((_a = this._anySchema) !== null && _a !== void 0 ? _a : (this._anySchema = this.codeModel.schemas.add(new AnySchema("Anything"))));
|
|
1867
1898
|
}
|
|
1868
1899
|
get binarySchema() {
|
|
1869
|
-
return this._binarySchema ||
|
|
1900
|
+
return (this._binarySchema ||
|
|
1901
|
+
(this._binarySchema = this.codeModel.schemas.add(new BinarySchema("simple binary"))));
|
|
1870
1902
|
}
|
|
1871
1903
|
get pollResultSchema() {
|
|
1872
1904
|
var _a;
|
|
@@ -1921,7 +1953,7 @@ export class CodeModelBuilder {
|
|
|
1921
1953
|
return this._subscriptionParameter;
|
|
1922
1954
|
}
|
|
1923
1955
|
propagateSchemaUsage(schema) {
|
|
1924
|
-
var _a, _b;
|
|
1956
|
+
var _a, _b, _c, _d;
|
|
1925
1957
|
const processedSchemas = new Set();
|
|
1926
1958
|
const innerApplySchemaUsage = (schema, schemaUsage) => {
|
|
1927
1959
|
this.trackSchemaUsage(schema, schemaUsage);
|
|
@@ -1939,7 +1971,7 @@ export class CodeModelBuilder {
|
|
|
1939
1971
|
var _a;
|
|
1940
1972
|
if (p.readOnly && ((_a = schemaUsage.usage) === null || _a === void 0 ? void 0 : _a.includes(SchemaContext.Input))) {
|
|
1941
1973
|
const schemaUsageWithoutInput = {
|
|
1942
|
-
usage: schemaUsage.usage.filter((it) => it
|
|
1974
|
+
usage: schemaUsage.usage.filter((it) => it !== SchemaContext.Input),
|
|
1943
1975
|
serializationFormats: schemaUsage.serializationFormats,
|
|
1944
1976
|
};
|
|
1945
1977
|
innerApplySchemaUsage(p.schema, schemaUsageWithoutInput);
|
|
@@ -1977,9 +2009,18 @@ export class CodeModelBuilder {
|
|
|
1977
2009
|
}
|
|
1978
2010
|
};
|
|
1979
2011
|
// Exclude context that not to be propagated
|
|
2012
|
+
const updatedSchemaUsage = (_a = schema.usage) === null || _a === void 0 ? void 0 : _a.filter((it) => it !== SchemaContext.Paged && it !== SchemaContext.PublicSpread);
|
|
2013
|
+
const indexSpread = (_b = schema.usage) === null || _b === void 0 ? void 0 : _b.indexOf(SchemaContext.PublicSpread);
|
|
2014
|
+
if (updatedSchemaUsage &&
|
|
2015
|
+
indexSpread &&
|
|
2016
|
+
indexSpread >= 0 &&
|
|
2017
|
+
!((_c = schema.usage) === null || _c === void 0 ? void 0 : _c.includes(SchemaContext.Public))) {
|
|
2018
|
+
// Propagate Public, if schema is PublicSpread
|
|
2019
|
+
updatedSchemaUsage.push(SchemaContext.Public);
|
|
2020
|
+
}
|
|
1980
2021
|
const schemaUsage = {
|
|
1981
|
-
usage:
|
|
1982
|
-
serializationFormats: (
|
|
2022
|
+
usage: updatedSchemaUsage,
|
|
2023
|
+
serializationFormats: (_d = schema.serializationFormats) === null || _d === void 0 ? void 0 : _d.filter((it) => it !== KnownMediaType.Multipart),
|
|
1983
2024
|
};
|
|
1984
2025
|
// Propagate the usage of the initial schema itself
|
|
1985
2026
|
innerPropagateSchemaUsage(schema, schemaUsage);
|