@azure-tools/typespec-ts 0.12.0-alpha.20230502.1 → 0.13.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/.rush/temp/operation/build/all.log +1 -0
- package/.rush/temp/operation/build/state.json +3 -0
- package/.rush/temp/package-deps_build.json +104 -78
- package/.rush/temp/shrinkwrap-deps.json +488 -471
- package/CHANGELOG.md +7 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/modelUtils.d.ts +1 -1
- package/dist/src/modelUtils.d.ts.map +1 -1
- package/dist/src/modelUtils.js +79 -56
- package/dist/src/modelUtils.js.map +1 -1
- package/dist/src/operationUtil.d.ts.map +1 -1
- package/dist/src/operationUtil.js +7 -6
- package/dist/src/operationUtil.js.map +1 -1
- package/dist/src/transform/transform.d.ts.map +1 -1
- package/dist/src/transform/transform.js +3 -3
- package/dist/src/transform/transform.js.map +1 -1
- package/dist/src/transform/transformApiVersionInfo.d.ts.map +1 -1
- package/dist/src/transform/transformApiVersionInfo.js +3 -3
- package/dist/src/transform/transformApiVersionInfo.js.map +1 -1
- package/dist/src/transform/transformParameters.d.ts.map +1 -1
- package/dist/src/transform/transformParameters.js +23 -29
- package/dist/src/transform/transformParameters.js.map +1 -1
- package/dist/src/transform/transformPaths.d.ts.map +1 -1
- package/dist/src/transform/transformPaths.js +5 -5
- package/dist/src/transform/transformPaths.js.map +1 -1
- package/dist/src/transform/transformResponses.js +6 -6
- package/dist/src/transform/transformResponses.js.map +1 -1
- package/dist/src/transform/transformSchemas.js +1 -1
- package/dist/src/transform/transformSchemas.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +41 -39
- package/src/index.ts +2 -0
- package/src/modelUtils.ts +143 -47
- package/src/operationUtil.ts +4 -3
- package/src/transform/transform.ts +10 -2
- package/src/transform/transformApiVersionInfo.ts +18 -3
- package/src/transform/transformParameters.ts +51 -16
- package/src/transform/transformPaths.ts +10 -5
- package/src/transform/transformResponses.ts +6 -4
- package/src/transform/transformSchemas.ts +1 -1
- package/test/integration/azurecore.spec.ts +51 -11
- package/test/integration/generated/arrays/itemTypes/src/arrayItemTypesClient.ts +5 -1
- package/test/integration/generated/arrays/itemTypes/src/logger.ts +5 -0
- package/test/integration/generated/authentication/apiKey/package.json +1 -1
- package/test/integration/generated/authentication/apiKey/src/authApiKeyClient.ts +6 -2
- package/test/integration/generated/authentication/apiKey/src/logger.ts +5 -0
- package/test/integration/generated/authentication/oauth2/src/authOauth2Client.ts +6 -2
- package/test/integration/generated/authentication/oauth2/src/logger.ts +5 -0
- package/test/integration/generated/authentication/union/src/authUnionClient.ts +6 -2
- package/test/integration/generated/authentication/union/src/logger.ts +5 -0
- package/test/integration/generated/azure/core/package.json +1 -1
- package/test/integration/generated/azure/core/src/azureCoreClient.ts +5 -1
- package/test/integration/generated/azure/core/src/logger.ts +5 -0
- package/test/integration/generated/azure/core/src/outputModels.ts +7 -1
- package/test/integration/generated/azure/core-traits/package.json +1 -1
- package/test/integration/generated/azure/core-traits/src/azureCoreTraitsClient.ts +5 -1
- package/test/integration/generated/azure/core-traits/src/logger.ts +5 -0
- package/test/integration/generated/azure/core-traits/src/outputModels.ts +15 -0
- package/test/integration/generated/dictionary/package.json +1 -1
- package/test/integration/generated/dictionary/src/dictClient.ts +5 -1
- package/test/integration/generated/dictionary/src/logger.ts +5 -0
- package/test/integration/generated/enums/extensible/package.json +1 -1
- package/test/integration/generated/enums/extensible/src/logger.ts +5 -0
- package/test/integration/generated/enums/extensible/src/typeEnumExtensible.ts +5 -1
- package/test/integration/generated/enums/fixed/package.json +1 -1
- package/test/integration/generated/enums/fixed/src/logger.ts +5 -0
- package/test/integration/generated/enums/fixed/src/typeEnumFixed.ts +5 -1
- package/test/integration/generated/internal/src/clientDefinitions.ts +38 -12
- package/test/integration/generated/internal/src/index.ts +0 -1
- package/test/integration/generated/internal/src/internalClient.ts +5 -1
- package/test/integration/generated/internal/src/logger.ts +5 -0
- package/test/integration/generated/internal/src/outputModels.ts +9 -5
- package/test/integration/generated/internal/src/parameters.ts +32 -8
- package/test/integration/generated/internal/src/responses.ts +18 -5
- package/test/integration/generated/lro/lroCore/package.json +2 -2
- package/test/integration/generated/lro/lroCore/src/logger.ts +5 -0
- package/test/integration/generated/lro/lroCore/src/specsAzureCoreLroStandard.ts +5 -1
- package/test/integration/generated/lro/lroRPC/package.json +2 -2
- package/test/integration/generated/lro/lroRPC/src/logger.ts +5 -0
- package/test/integration/generated/lro/lroRPC/src/specsAzureCoreLroRpc.ts +5 -1
- package/test/integration/generated/models/inheritance/package.json +1 -1
- package/test/integration/generated/models/inheritance/src/logger.ts +5 -0
- package/test/integration/generated/models/inheritance/src/typeModelInheritance.ts +5 -1
- package/test/integration/generated/models/propertyNullable/package.json +1 -1
- package/test/integration/generated/models/propertyNullable/src/logger.ts +5 -0
- package/test/integration/generated/models/propertyNullable/src/typePropertyNullable.ts +5 -1
- package/test/integration/generated/models/propertyOptional/package.json +1 -1
- package/test/integration/generated/models/propertyOptional/src/logger.ts +5 -0
- package/test/integration/generated/models/propertyOptional/src/typePropertyOptional.ts +5 -1
- package/test/integration/generated/models/propertyTypes/package.json +1 -1
- package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +68 -0
- package/test/integration/generated/models/propertyTypes/src/logger.ts +5 -0
- package/test/integration/generated/models/propertyTypes/src/models.ts +24 -0
- package/test/integration/generated/models/propertyTypes/src/outputModels.ts +24 -0
- package/test/integration/generated/models/propertyTypes/src/parameters.ts +40 -0
- package/test/integration/generated/models/propertyTypes/src/responses.ts +48 -0
- package/test/integration/generated/models/propertyTypes/src/typePropertyValueTypes.ts +5 -1
- package/test/integration/generated/models/usage/package.json +1 -1
- package/test/integration/generated/models/usage/src/logger.ts +5 -0
- package/test/integration/generated/models/usage/src/typeModelUsage.ts +5 -1
- package/test/integration/generated/models/visibility/package.json +1 -1
- package/test/integration/generated/models/visibility/src/logger.ts +5 -0
- package/test/integration/generated/models/visibility/src/typeModelVisibility.ts +5 -1
- package/test/integration/generated/parameters/collection-format/src/collectionFormatClient.ts +5 -1
- package/test/integration/generated/parameters/collection-format/src/logger.ts +5 -0
- package/test/integration/generated/parameters/spread/src/logger.ts +5 -0
- package/test/integration/generated/parameters/spread/src/parametersSpread.ts +5 -1
- package/test/integration/generated/projection/src/logger.ts +5 -0
- package/test/integration/generated/projection/src/projectionClient.ts +5 -1
- package/test/integration/generated/resiliency/srvDriven1/package.json +1 -1
- package/test/integration/generated/resiliency/srvDriven1/src/logger.ts +5 -0
- package/test/integration/generated/resiliency/srvDriven1/src/serviceDrivenOldClient.ts +6 -2
- package/test/integration/generated/resiliency/srvDriven2/package.json +1 -1
- package/test/integration/generated/resiliency/srvDriven2/src/logger.ts +5 -0
- package/test/integration/generated/resiliency/srvDriven2/src/serviceDrivenNewClient.ts +6 -2
- package/test/integration/generated/server/path/multiple/src/logger.ts +5 -0
- package/test/integration/generated/server/path/multiple/src/multipleParamInServerPathClient.ts +6 -2
- package/test/integration/generated/server/path/single/src/logger.ts +5 -0
- package/test/integration/generated/server/path/single/src/singleParamInServerPathClient.ts +6 -2
- package/test/integration/generated/specialWords/src/logger.ts +5 -0
- package/test/integration/generated/specialWords/src/specialWordsClient.ts +5 -1
- package/test/integration/generated/unions/src/logger.ts +5 -0
- package/test/integration/generated/unions/src/unionsClient.ts +5 -1
- package/test/integration/internal.spec.ts +45 -12
- package/test/integration/modelPropertyType.spec.ts +16 -0
- package/test/integration/resiliencyDpgCustomization.spec.ts +85 -24
- package/test/unit/apiVersion.spec.ts +19 -7
- package/test/unit/clientFactoryGenerator.spec.ts +44 -16
- package/test/unit/modelsGenerator.spec.ts +212 -2
- package/test/unit/util/emitUtil.ts +13 -4
- package/test/unit/util/testUtil.ts +7 -2
- package/typespec-ts.build.log +0 -1
- package/test/integration/generated/internal/src/models.ts +0 -8
|
@@ -84,13 +84,18 @@ export function transformToParameterTypes(
|
|
|
84
84
|
// transform path param
|
|
85
85
|
const pathParams = transformPathParameters();
|
|
86
86
|
// transform header param includeing content-type
|
|
87
|
-
const headerParams = transformHeaderParameters(
|
|
87
|
+
const headerParams = transformHeaderParameters(
|
|
88
|
+
program,
|
|
89
|
+
dpgContext,
|
|
90
|
+
parameters
|
|
91
|
+
);
|
|
88
92
|
// transform body
|
|
89
93
|
const bodyType = getBodyType(program, route);
|
|
90
94
|
let bodyParameter = undefined;
|
|
91
95
|
if (bodyType) {
|
|
92
96
|
bodyParameter = transformBodyParameters(
|
|
93
97
|
program,
|
|
98
|
+
dpgContext,
|
|
94
99
|
parameters,
|
|
95
100
|
headerParams,
|
|
96
101
|
outputImportedSet,
|
|
@@ -108,13 +113,18 @@ export function transformToParameterTypes(
|
|
|
108
113
|
|
|
109
114
|
function getParameterMetadata(
|
|
110
115
|
program: Program,
|
|
116
|
+
dpgContext: SdkContext,
|
|
111
117
|
paramType: "query" | "path" | "header",
|
|
112
118
|
parameter: HttpOperationParameter
|
|
113
119
|
): ParameterMetadata {
|
|
114
|
-
const schema = getSchemaForType(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
const schema = getSchemaForType(
|
|
121
|
+
program,
|
|
122
|
+
dpgContext,
|
|
123
|
+
parameter.param.type,
|
|
124
|
+
[SchemaContext.Exception, SchemaContext.Input],
|
|
125
|
+
false,
|
|
126
|
+
parameter.param
|
|
127
|
+
) as Schema;
|
|
118
128
|
let type = getTypeName(schema);
|
|
119
129
|
const name = getParameterName(parameter.name);
|
|
120
130
|
let description =
|
|
@@ -175,7 +185,7 @@ function transformQueryParameters(
|
|
|
175
185
|
return [];
|
|
176
186
|
}
|
|
177
187
|
return queryParameters.map((qp) =>
|
|
178
|
-
getParameterMetadata(program, "query", qp)
|
|
188
|
+
getParameterMetadata(program, dpgContext, "query", qp)
|
|
179
189
|
);
|
|
180
190
|
}
|
|
181
191
|
|
|
@@ -191,6 +201,7 @@ function transformPathParameters() {
|
|
|
191
201
|
|
|
192
202
|
function transformHeaderParameters(
|
|
193
203
|
program: Program,
|
|
204
|
+
dpgContext: SdkContext,
|
|
194
205
|
parameters: HttpOperationParameters
|
|
195
206
|
): ParameterMetadata[] {
|
|
196
207
|
const headerParameters = parameters.parameters.filter(
|
|
@@ -200,12 +211,13 @@ function transformHeaderParameters(
|
|
|
200
211
|
return [];
|
|
201
212
|
}
|
|
202
213
|
return headerParameters.map((qp) =>
|
|
203
|
-
getParameterMetadata(program, "header", qp)
|
|
214
|
+
getParameterMetadata(program, dpgContext, "header", qp)
|
|
204
215
|
);
|
|
205
216
|
}
|
|
206
217
|
|
|
207
218
|
function transformBodyParameters(
|
|
208
219
|
program: Program,
|
|
220
|
+
dpgContext: SdkContext,
|
|
209
221
|
parameters: HttpOperationParameters,
|
|
210
222
|
headers: ParameterMetadata[],
|
|
211
223
|
importedModels: Set<string>,
|
|
@@ -224,6 +236,7 @@ function transformBodyParameters(
|
|
|
224
236
|
// Case 1: Handle the normal case without binary or form data
|
|
225
237
|
return transformNormalBody(
|
|
226
238
|
program,
|
|
239
|
+
dpgContext,
|
|
227
240
|
bodyType,
|
|
228
241
|
parameters,
|
|
229
242
|
importedModels,
|
|
@@ -236,6 +249,7 @@ function transformBodyParameters(
|
|
|
236
249
|
// Case 3: Handle the form data
|
|
237
250
|
return transformMultiFormBody(
|
|
238
251
|
program,
|
|
252
|
+
dpgContext,
|
|
239
253
|
bodyType,
|
|
240
254
|
parameters,
|
|
241
255
|
importedModels
|
|
@@ -245,6 +259,7 @@ function transformBodyParameters(
|
|
|
245
259
|
|
|
246
260
|
function transformNormalBody(
|
|
247
261
|
program: Program,
|
|
262
|
+
dpgContext: SdkContext,
|
|
248
263
|
bodyType: Type,
|
|
249
264
|
parameters: HttpOperationParameters,
|
|
250
265
|
importedModels: Set<string>,
|
|
@@ -252,16 +267,18 @@ function transformNormalBody(
|
|
|
252
267
|
) {
|
|
253
268
|
const description = extractDescriptionsFromBody(
|
|
254
269
|
program,
|
|
270
|
+
dpgContext,
|
|
255
271
|
bodyType,
|
|
256
272
|
parameters
|
|
257
273
|
).join("\n\n");
|
|
258
274
|
const type = extractNameFromCadlType(
|
|
259
275
|
program,
|
|
276
|
+
dpgContext,
|
|
260
277
|
bodyType,
|
|
261
278
|
importedModels,
|
|
262
279
|
headers
|
|
263
280
|
);
|
|
264
|
-
const schema = getSchemaForType(program, bodyType);
|
|
281
|
+
const schema = getSchemaForType(program, dpgContext, bodyType);
|
|
265
282
|
return {
|
|
266
283
|
isPartialBody: false,
|
|
267
284
|
body: [
|
|
@@ -304,6 +321,7 @@ function transformBinaryBody(
|
|
|
304
321
|
|
|
305
322
|
function transformMultiFormBody(
|
|
306
323
|
program: Program,
|
|
324
|
+
dpgContext: SdkContext,
|
|
307
325
|
bodyType: Type,
|
|
308
326
|
parameters: HttpOperationParameters,
|
|
309
327
|
importedModels: Set<string>
|
|
@@ -311,9 +329,15 @@ function transformMultiFormBody(
|
|
|
311
329
|
const isModelBody = bodyType.kind === "Model";
|
|
312
330
|
|
|
313
331
|
if (!isModelBody) {
|
|
314
|
-
const type = extractNameFromCadlType(
|
|
332
|
+
const type = extractNameFromCadlType(
|
|
333
|
+
program,
|
|
334
|
+
dpgContext,
|
|
335
|
+
bodyType,
|
|
336
|
+
importedModels
|
|
337
|
+
);
|
|
315
338
|
const description = extractDescriptionsFromBody(
|
|
316
339
|
program,
|
|
340
|
+
dpgContext,
|
|
317
341
|
bodyType,
|
|
318
342
|
parameters
|
|
319
343
|
).join("\n\n");
|
|
@@ -338,10 +362,14 @@ function transformMultiFormBody(
|
|
|
338
362
|
|
|
339
363
|
for (const [paramName, paramType] of bodyType.properties) {
|
|
340
364
|
let type: string;
|
|
341
|
-
const bodySchema = getSchemaForType(
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
365
|
+
const bodySchema = getSchemaForType(
|
|
366
|
+
program,
|
|
367
|
+
dpgContext,
|
|
368
|
+
paramType.type,
|
|
369
|
+
[SchemaContext.Exception, SchemaContext.Input],
|
|
370
|
+
false,
|
|
371
|
+
paramType
|
|
372
|
+
) as any;
|
|
345
373
|
if (bodySchema?.format === "byte") {
|
|
346
374
|
type = getBinaryType([SchemaContext.Input, SchemaContext.Exception]);
|
|
347
375
|
} else if (bodySchema?.items?.format === "byte") {
|
|
@@ -350,7 +378,12 @@ function transformMultiFormBody(
|
|
|
350
378
|
SchemaContext.Exception
|
|
351
379
|
])}>`;
|
|
352
380
|
} else {
|
|
353
|
-
type = extractNameFromCadlType(
|
|
381
|
+
type = extractNameFromCadlType(
|
|
382
|
+
program,
|
|
383
|
+
dpgContext,
|
|
384
|
+
paramType.type,
|
|
385
|
+
importedModels
|
|
386
|
+
);
|
|
354
387
|
}
|
|
355
388
|
bodyParameters.body!.push({
|
|
356
389
|
name: paramName,
|
|
@@ -375,11 +408,12 @@ function getBodyDetail(bodyType: Type, headers: ParameterMetadata[]) {
|
|
|
375
408
|
|
|
376
409
|
function extractNameFromCadlType(
|
|
377
410
|
program: Program,
|
|
411
|
+
dpgContext: SdkContext,
|
|
378
412
|
cadlType: Type,
|
|
379
413
|
importedModels: Set<string>,
|
|
380
414
|
headers?: ParameterMetadata[]
|
|
381
415
|
) {
|
|
382
|
-
const bodySchema = getSchemaForType(program, cadlType, [
|
|
416
|
+
const bodySchema = getSchemaForType(program, dpgContext, cadlType, [
|
|
383
417
|
SchemaContext.Input,
|
|
384
418
|
SchemaContext.Exception
|
|
385
419
|
]) as Schema;
|
|
@@ -437,6 +471,7 @@ function generateAnomymousModelSigniture(
|
|
|
437
471
|
|
|
438
472
|
function extractDescriptionsFromBody(
|
|
439
473
|
program: Program,
|
|
474
|
+
dpgContext: SdkContext,
|
|
440
475
|
bodyType: Type,
|
|
441
476
|
parameters: HttpOperationParameters
|
|
442
477
|
) {
|
|
@@ -445,7 +480,7 @@ function extractDescriptionsFromBody(
|
|
|
445
480
|
getFormattedPropertyDoc(
|
|
446
481
|
program,
|
|
447
482
|
parameters.bodyParameter,
|
|
448
|
-
getSchemaForType(program, bodyType, [
|
|
483
|
+
getSchemaForType(program, dpgContext, bodyType, [
|
|
449
484
|
SchemaContext.Input,
|
|
450
485
|
SchemaContext.Exception
|
|
451
486
|
])
|
|
@@ -48,13 +48,13 @@ export function transformPaths(
|
|
|
48
48
|
);
|
|
49
49
|
for (const op of operations) {
|
|
50
50
|
const route = ignoreDiagnostics(getHttpOperation(program, op));
|
|
51
|
-
transformOperation(program, route, paths,
|
|
51
|
+
transformOperation(program, dpgContext, route, paths, operationGroup);
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
const clientOperations = listOperationsInOperationGroup(dpgContext, client);
|
|
55
55
|
for (const clientOp of clientOperations) {
|
|
56
56
|
const route = ignoreDiagnostics(getHttpOperation(program, clientOp));
|
|
57
|
-
transformOperation(program, route, paths
|
|
57
|
+
transformOperation(program, dpgContext, route, paths);
|
|
58
58
|
}
|
|
59
59
|
return paths;
|
|
60
60
|
}
|
|
@@ -97,9 +97,10 @@ function getResponseTypes(
|
|
|
97
97
|
|
|
98
98
|
function transformOperation(
|
|
99
99
|
program: Program,
|
|
100
|
+
dpgContext: SdkContext,
|
|
100
101
|
route: HttpOperation,
|
|
101
102
|
paths: Paths,
|
|
102
|
-
|
|
103
|
+
|
|
103
104
|
operationGroup?: SdkOperationGroup
|
|
104
105
|
) {
|
|
105
106
|
const respNames = [];
|
|
@@ -148,8 +149,12 @@ function transformOperation(
|
|
|
148
149
|
return {
|
|
149
150
|
name: p.name,
|
|
150
151
|
type: p.param.sourceProperty
|
|
151
|
-
? getSchemaForType(
|
|
152
|
-
|
|
152
|
+
? getSchemaForType(
|
|
153
|
+
program,
|
|
154
|
+
dpgContext,
|
|
155
|
+
p.param.sourceProperty?.type
|
|
156
|
+
).type
|
|
157
|
+
: getSchemaForType(program, dpgContext, p.param.type).type,
|
|
153
158
|
description: getDoc(program, p.param)
|
|
154
159
|
};
|
|
155
160
|
}),
|
|
@@ -79,9 +79,9 @@ export function transformToResponseTypes(
|
|
|
79
79
|
description: resp.description
|
|
80
80
|
};
|
|
81
81
|
// transform header
|
|
82
|
-
const headers = transformHeaders(program, resp);
|
|
82
|
+
const headers = transformHeaders(program, dpgContext, resp);
|
|
83
83
|
// transform body
|
|
84
|
-
const body = transformBody(program, resp, inputImportedSet);
|
|
84
|
+
const body = transformBody(program, dpgContext, resp, inputImportedSet);
|
|
85
85
|
rlcOperationUnit.responses.push({
|
|
86
86
|
...rlcResponseUnit,
|
|
87
87
|
headers,
|
|
@@ -110,6 +110,7 @@ export function transformToResponseTypes(
|
|
|
110
110
|
*/
|
|
111
111
|
function transformHeaders(
|
|
112
112
|
program: Program,
|
|
113
|
+
dpgContext: SdkContext,
|
|
113
114
|
response: HttpOperationResponse
|
|
114
115
|
): ResponseHeaderSchema[] | undefined {
|
|
115
116
|
if (!response.responses.length) {
|
|
@@ -131,7 +132,7 @@ function transformHeaders(
|
|
|
131
132
|
if (!value) {
|
|
132
133
|
continue;
|
|
133
134
|
}
|
|
134
|
-
const typeSchema = getSchemaForType(program, value!.type, [
|
|
135
|
+
const typeSchema = getSchemaForType(program, dpgContext, value!.type, [
|
|
135
136
|
SchemaContext.Output
|
|
136
137
|
]) as Schema;
|
|
137
138
|
const type = getTypeName(typeSchema);
|
|
@@ -150,6 +151,7 @@ function transformHeaders(
|
|
|
150
151
|
|
|
151
152
|
function transformBody(
|
|
152
153
|
program: Program,
|
|
154
|
+
dpgContext: SdkContext,
|
|
153
155
|
response: HttpOperationResponse,
|
|
154
156
|
importedModels: Set<string>
|
|
155
157
|
) {
|
|
@@ -174,7 +176,7 @@ function transformBody(
|
|
|
174
176
|
descriptions.add("Value may contain any sequence of octets");
|
|
175
177
|
continue;
|
|
176
178
|
}
|
|
177
|
-
const bodySchema = getSchemaForType(program, body!.type, [
|
|
179
|
+
const bodySchema = getSchemaForType(program, dpgContext, body!.type, [
|
|
178
180
|
SchemaContext.Output
|
|
179
181
|
]) as Schema;
|
|
180
182
|
if (bodySchema.fromCore) {
|
|
@@ -68,7 +68,7 @@ export function transformSchemas(
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
program.stateMap(modelKey).forEach((context, cadlModel) => {
|
|
71
|
-
const model = getSchemaForType(program, cadlModel, context);
|
|
71
|
+
const model = getSchemaForType(program, dpgContext, cadlModel, context);
|
|
72
72
|
if (model) {
|
|
73
73
|
model.usage = context;
|
|
74
74
|
}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { assert } from "chai";
|
|
2
2
|
import AzureCoreClientFactory, {
|
|
3
|
-
AzureCoreClient,
|
|
3
|
+
AzureCoreClient,
|
|
4
|
+
buildMultiCollection,
|
|
5
|
+
isUnexpected
|
|
4
6
|
} from "./generated/azure/core/src/index.js";
|
|
5
7
|
import AzureCoreTraitsClientFactory, {
|
|
6
8
|
AzureCoreTraitsClient
|
|
7
9
|
} from "./generated/azure/core-traits/src/index.js";
|
|
8
10
|
describe("Azure Core Rest Client", () => {
|
|
9
11
|
let client: AzureCoreClient;
|
|
12
|
+
const validUser = {
|
|
13
|
+
id: 1,
|
|
14
|
+
name: "Madge",
|
|
15
|
+
etag: "11bdc430-65e8-45ad-81d9-8ffa60d55b59"
|
|
16
|
+
};
|
|
10
17
|
|
|
11
18
|
beforeEach(() => {
|
|
12
19
|
client = AzureCoreClientFactory({
|
|
@@ -32,12 +39,14 @@ describe("Azure Core Rest Client", () => {
|
|
|
32
39
|
});
|
|
33
40
|
it("should patch user", async () => {
|
|
34
41
|
try {
|
|
35
|
-
const result = await client
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
const result = await client
|
|
43
|
+
.path("/azure/core/basic/users/{id}", 1)
|
|
44
|
+
.patch({
|
|
45
|
+
contentType: "application/merge-patch+json",
|
|
46
|
+
body: {
|
|
47
|
+
name: "Madge"
|
|
48
|
+
}
|
|
49
|
+
});
|
|
41
50
|
assert.strictEqual(result.status, "200");
|
|
42
51
|
} catch (err) {
|
|
43
52
|
assert.fail(err as string);
|
|
@@ -55,7 +64,9 @@ describe("Azure Core Rest Client", () => {
|
|
|
55
64
|
|
|
56
65
|
it("should delete user", async () => {
|
|
57
66
|
try {
|
|
58
|
-
const result = await client
|
|
67
|
+
const result = await client
|
|
68
|
+
.path("/azure/core/basic/users/{id}", 1)
|
|
69
|
+
.delete();
|
|
59
70
|
assert.strictEqual(result.status, "204");
|
|
60
71
|
} catch (err) {
|
|
61
72
|
assert.fail(err as string);
|
|
@@ -89,6 +100,35 @@ describe("Azure Core Rest Client", () => {
|
|
|
89
100
|
assert.fail(err as string);
|
|
90
101
|
}
|
|
91
102
|
});
|
|
103
|
+
|
|
104
|
+
it("should list with custom pages", async () => {
|
|
105
|
+
try {
|
|
106
|
+
const result = await client.path("/azure/core/basic/custom-page").get();
|
|
107
|
+
if (isUnexpected(result)) {
|
|
108
|
+
assert.fail("Unexpected status " + result.status);
|
|
109
|
+
}
|
|
110
|
+
assert.strictEqual(result.status, "200");
|
|
111
|
+
assert.isNotEmpty(result.body.items);
|
|
112
|
+
} catch (err) {
|
|
113
|
+
assert.fail(err as string);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it("should export a user", async () => {
|
|
118
|
+
try {
|
|
119
|
+
const result = await client
|
|
120
|
+
.path("/azure/core/basic/users/{id}:export", 1)
|
|
121
|
+
.post({
|
|
122
|
+
queryParameters: {
|
|
123
|
+
format: "json"
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
assert.strictEqual(result.status, "200");
|
|
127
|
+
assert.deepEqual(result.body, validUser);
|
|
128
|
+
} catch (err) {
|
|
129
|
+
assert.fail(err as string);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
92
132
|
});
|
|
93
133
|
|
|
94
134
|
describe("Azure Core Traits Rest Client", () => {
|
|
@@ -108,12 +148,12 @@ describe("Azure Core Traits Rest Client", () => {
|
|
|
108
148
|
const result = await client.path("/azure/core/traits/user/{id}", 1).get({
|
|
109
149
|
headers: {
|
|
110
150
|
foo: "123",
|
|
111
|
-
"If-Match": "valid",
|
|
112
|
-
"If-None-Match": "invalid",
|
|
151
|
+
"If-Match": '"valid"',
|
|
152
|
+
"If-None-Match": '"invalid"',
|
|
113
153
|
"If-Modified-Since": "Thu, 26 Aug 2021 14:38:00 GMT",
|
|
114
154
|
"If-Unmodified-Since": "Fri, 26 Aug 2022 14:38:00 GMT"
|
|
115
155
|
}
|
|
116
|
-
})
|
|
156
|
+
});
|
|
117
157
|
assert.strictEqual(result.status, "200");
|
|
118
158
|
} catch (err) {
|
|
119
159
|
assert.fail(err as string);
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
4
|
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
5
|
+
import { logger } from "./logger";
|
|
5
6
|
import { ArrayItemTypesClient } from "./clientDefinitions";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Initialize a new instance of `ArrayItemTypesClient`
|
|
9
|
-
* @param options
|
|
10
|
+
* @param options - the parameter for all optional parameters
|
|
10
11
|
*/
|
|
11
12
|
export default function createClient(
|
|
12
13
|
options: ClientOptions = {}
|
|
@@ -23,6 +24,9 @@ export default function createClient(
|
|
|
23
24
|
userAgentOptions: {
|
|
24
25
|
userAgentPrefix,
|
|
25
26
|
},
|
|
27
|
+
loggingOptions: {
|
|
28
|
+
logger: options.loggingOptions?.logger ?? logger.info,
|
|
29
|
+
},
|
|
26
30
|
};
|
|
27
31
|
|
|
28
32
|
const client = getClient(baseUrl, options) as ArrayItemTypesClient;
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
4
|
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
5
|
+
import { logger } from "./logger";
|
|
5
6
|
import { KeyCredential } from "@azure/core-auth";
|
|
6
7
|
import { AuthApiKeyClient } from "./clientDefinitions";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Initialize a new instance of `AuthApiKeyClient`
|
|
10
|
-
* @param credentials
|
|
11
|
-
* @param options
|
|
11
|
+
* @param credentials - uniquely identify client credential
|
|
12
|
+
* @param options - the parameter for all optional parameters
|
|
12
13
|
*/
|
|
13
14
|
export default function createClient(
|
|
14
15
|
credentials: KeyCredential,
|
|
@@ -33,6 +34,9 @@ export default function createClient(
|
|
|
33
34
|
userAgentOptions: {
|
|
34
35
|
userAgentPrefix,
|
|
35
36
|
},
|
|
37
|
+
loggingOptions: {
|
|
38
|
+
logger: options.loggingOptions?.logger ?? logger.info,
|
|
39
|
+
},
|
|
36
40
|
};
|
|
37
41
|
|
|
38
42
|
const client = getClient(baseUrl, credentials, options) as AuthApiKeyClient;
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
4
|
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
5
|
+
import { logger } from "./logger";
|
|
5
6
|
import { TokenCredential } from "@azure/core-auth";
|
|
6
7
|
import { AuthOauth2Client } from "./clientDefinitions";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Initialize a new instance of `AuthOauth2Client`
|
|
10
|
-
* @param credentials
|
|
11
|
-
* @param options
|
|
11
|
+
* @param credentials - uniquely identify client credential
|
|
12
|
+
* @param options - the parameter for all optional parameters
|
|
12
13
|
*/
|
|
13
14
|
export default function createClient(
|
|
14
15
|
credentials: TokenCredential,
|
|
@@ -33,6 +34,9 @@ export default function createClient(
|
|
|
33
34
|
userAgentOptions: {
|
|
34
35
|
userAgentPrefix,
|
|
35
36
|
},
|
|
37
|
+
loggingOptions: {
|
|
38
|
+
logger: options.loggingOptions?.logger ?? logger.info,
|
|
39
|
+
},
|
|
36
40
|
};
|
|
37
41
|
|
|
38
42
|
const client = getClient(baseUrl, credentials, options) as AuthOauth2Client;
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
4
|
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
5
|
+
import { logger } from "./logger";
|
|
5
6
|
import { TokenCredential, KeyCredential } from "@azure/core-auth";
|
|
6
7
|
import { AuthUnionClient } from "./clientDefinitions";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Initialize a new instance of `AuthUnionClient`
|
|
10
|
-
* @param credentials
|
|
11
|
-
* @param options
|
|
11
|
+
* @param credentials - uniquely identify client credential
|
|
12
|
+
* @param options - the parameter for all optional parameters
|
|
12
13
|
*/
|
|
13
14
|
export default function createClient(
|
|
14
15
|
credentials: TokenCredential | KeyCredential,
|
|
@@ -34,6 +35,9 @@ export default function createClient(
|
|
|
34
35
|
userAgentOptions: {
|
|
35
36
|
userAgentPrefix,
|
|
36
37
|
},
|
|
38
|
+
loggingOptions: {
|
|
39
|
+
logger: options.loggingOptions?.logger ?? logger.info,
|
|
40
|
+
},
|
|
37
41
|
};
|
|
38
42
|
|
|
39
43
|
const client = getClient(baseUrl, credentials, options) as AuthUnionClient;
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
4
|
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
5
|
+
import { logger } from "./logger";
|
|
5
6
|
import { AzureCoreClient } from "./clientDefinitions";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Initialize a new instance of `AzureCoreClient`
|
|
9
|
-
* @param options
|
|
10
|
+
* @param options - the parameter for all optional parameters
|
|
10
11
|
*/
|
|
11
12
|
export default function createClient(
|
|
12
13
|
options: ClientOptions = {}
|
|
@@ -23,6 +24,9 @@ export default function createClient(
|
|
|
23
24
|
userAgentOptions: {
|
|
24
25
|
userAgentPrefix,
|
|
25
26
|
},
|
|
27
|
+
loggingOptions: {
|
|
28
|
+
logger: options.loggingOptions?.logger ?? logger.info,
|
|
29
|
+
},
|
|
26
30
|
};
|
|
27
31
|
|
|
28
32
|
const client = getClient(baseUrl, options) as AzureCoreClient;
|
|
@@ -25,8 +25,14 @@ export interface UserOrderOutput {
|
|
|
25
25
|
detail: string;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
export interface UserListResultsOutput {
|
|
29
|
+
/** List of items. */
|
|
30
|
+
items: Array<UserOutput>;
|
|
31
|
+
/** Link to fetch more items. */
|
|
32
|
+
nextLink?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
28
35
|
/** Paged collection of User items */
|
|
29
36
|
export type UserListOutput = Paged<UserOutput>;
|
|
30
37
|
/** Paged collection of User items */
|
|
31
38
|
export type PagedUserOutput = Paged<UserOutput>;
|
|
32
|
-
export type UserListResultsOutput = Paged<UserOutput>;
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
4
|
import { getClient, ClientOptions } from "@azure-rest/core-client";
|
|
5
|
+
import { logger } from "./logger";
|
|
5
6
|
import { AzureCoreTraitsClient } from "./clientDefinitions";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Initialize a new instance of `AzureCoreTraitsClient`
|
|
9
|
-
* @param options
|
|
10
|
+
* @param options - the parameter for all optional parameters
|
|
10
11
|
*/
|
|
11
12
|
export default function createClient(
|
|
12
13
|
options: ClientOptions = {}
|
|
@@ -23,6 +24,9 @@ export default function createClient(
|
|
|
23
24
|
userAgentOptions: {
|
|
24
25
|
userAgentPrefix,
|
|
25
26
|
},
|
|
27
|
+
loggingOptions: {
|
|
28
|
+
logger: options.loggingOptions?.logger ?? logger.info,
|
|
29
|
+
},
|
|
26
30
|
};
|
|
27
31
|
|
|
28
32
|
const client = getClient(baseUrl, options) as AzureCoreTraitsClient;
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
+
/** Provides the 'Repeatability-*' headers to enable repeatable requests. */
|
|
5
|
+
export interface RepeatabilityRequestHeadersOutput {}
|
|
6
|
+
|
|
7
|
+
/** Provides the 'Repeatability-*' headers to enable repeatable requests. */
|
|
8
|
+
export interface RepeatabilityResponseHeadersOutput {}
|
|
9
|
+
|
|
10
|
+
/** Provides the 'If-*' headers to enable conditional (cached) responses */
|
|
11
|
+
export interface ConditionalRequestHeadersOutput {}
|
|
12
|
+
|
|
13
|
+
/** Provides the 'ETag' header to enable conditional (cached) requests */
|
|
14
|
+
export interface EtagResponseEnvelopeOutput {}
|
|
15
|
+
|
|
16
|
+
/** Provides the 'x-ms-client-request-id' header to enable request correlation in requests and responses. */
|
|
17
|
+
export interface ClientRequestIdHeaderOutput {}
|
|
18
|
+
|
|
4
19
|
/** Sample Model */
|
|
5
20
|
export interface UserOutput {
|
|
6
21
|
/** The user's id. */
|