@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.
- package/dist/src/code-model-builder.d.ts +31 -3
- package/dist/src/code-model-builder.d.ts.map +1 -1
- package/dist/src/code-model-builder.js +68 -25
- package/dist/src/code-model-builder.js.map +1 -1
- package/dist/src/emitter.d.ts +1 -1
- package/dist/src/emitter.d.ts.map +1 -1
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +18 -35
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +7 -35
- package/dist/src/lib.js.map +1 -1
- package/dist/src/options.d.ts +27 -0
- package/dist/src/options.d.ts.map +1 -0
- package/dist/src/options.js +62 -0
- package/dist/src/options.js.map +1 -0
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +56 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/generator/http-client-generator/target/emitter.jar +0 -0
- package/package.json +39 -30
- package/readme.md +1 -1
|
@@ -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
|
|
3
|
+
import { EmitContext, Program } from "@typespec/compiler";
|
|
4
4
|
import { CodeModel } from "./common/code-model.js";
|
|
5
|
-
import { EmitterOptions } from "./
|
|
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":"AAAA,OAAO,EACL,SAAS,EAIT,YAAY,EACZ,aAAa,EAeb,YAAY,EAEZ,YAAY,EAOZ,MAAM,EAMN,YAAY,EAKb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAwBL,OAAO,EAOR,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,WAAW,EAKX,OAAO,
|
|
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 {
|
|
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
|
|
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 (
|
|
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
|
|
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
|
-
//
|
|
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
|
|
1272
|
-
|
|
1273
|
-
|
|
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
|
-
|
|
1278
|
-
for (const parameter of op.parameters) {
|
|
1291
|
+
for (const parameter of requestParameters) {
|
|
1279
1292
|
// copy all parameters to request
|
|
1280
|
-
|
|
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 (
|
|
1295
|
+
if (requestSignatureParameters.includes(parameter) &&
|
|
1284
1296
|
!(parameter.language.default.serializedName &&
|
|
1285
1297
|
etagHeaders.includes(parameter.language.default.serializedName))) {
|
|
1286
|
-
request.signatureParameters.push(
|
|
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.
|