@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.
Files changed (135) hide show
  1. package/.rush/temp/operation/build/all.log +1 -0
  2. package/.rush/temp/operation/build/state.json +3 -0
  3. package/.rush/temp/package-deps_build.json +104 -78
  4. package/.rush/temp/shrinkwrap-deps.json +488 -471
  5. package/CHANGELOG.md +7 -0
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +2 -1
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/modelUtils.d.ts +1 -1
  10. package/dist/src/modelUtils.d.ts.map +1 -1
  11. package/dist/src/modelUtils.js +79 -56
  12. package/dist/src/modelUtils.js.map +1 -1
  13. package/dist/src/operationUtil.d.ts.map +1 -1
  14. package/dist/src/operationUtil.js +7 -6
  15. package/dist/src/operationUtil.js.map +1 -1
  16. package/dist/src/transform/transform.d.ts.map +1 -1
  17. package/dist/src/transform/transform.js +3 -3
  18. package/dist/src/transform/transform.js.map +1 -1
  19. package/dist/src/transform/transformApiVersionInfo.d.ts.map +1 -1
  20. package/dist/src/transform/transformApiVersionInfo.js +3 -3
  21. package/dist/src/transform/transformApiVersionInfo.js.map +1 -1
  22. package/dist/src/transform/transformParameters.d.ts.map +1 -1
  23. package/dist/src/transform/transformParameters.js +23 -29
  24. package/dist/src/transform/transformParameters.js.map +1 -1
  25. package/dist/src/transform/transformPaths.d.ts.map +1 -1
  26. package/dist/src/transform/transformPaths.js +5 -5
  27. package/dist/src/transform/transformPaths.js.map +1 -1
  28. package/dist/src/transform/transformResponses.js +6 -6
  29. package/dist/src/transform/transformResponses.js.map +1 -1
  30. package/dist/src/transform/transformSchemas.js +1 -1
  31. package/dist/src/transform/transformSchemas.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +41 -39
  34. package/src/index.ts +2 -0
  35. package/src/modelUtils.ts +143 -47
  36. package/src/operationUtil.ts +4 -3
  37. package/src/transform/transform.ts +10 -2
  38. package/src/transform/transformApiVersionInfo.ts +18 -3
  39. package/src/transform/transformParameters.ts +51 -16
  40. package/src/transform/transformPaths.ts +10 -5
  41. package/src/transform/transformResponses.ts +6 -4
  42. package/src/transform/transformSchemas.ts +1 -1
  43. package/test/integration/azurecore.spec.ts +51 -11
  44. package/test/integration/generated/arrays/itemTypes/src/arrayItemTypesClient.ts +5 -1
  45. package/test/integration/generated/arrays/itemTypes/src/logger.ts +5 -0
  46. package/test/integration/generated/authentication/apiKey/package.json +1 -1
  47. package/test/integration/generated/authentication/apiKey/src/authApiKeyClient.ts +6 -2
  48. package/test/integration/generated/authentication/apiKey/src/logger.ts +5 -0
  49. package/test/integration/generated/authentication/oauth2/src/authOauth2Client.ts +6 -2
  50. package/test/integration/generated/authentication/oauth2/src/logger.ts +5 -0
  51. package/test/integration/generated/authentication/union/src/authUnionClient.ts +6 -2
  52. package/test/integration/generated/authentication/union/src/logger.ts +5 -0
  53. package/test/integration/generated/azure/core/package.json +1 -1
  54. package/test/integration/generated/azure/core/src/azureCoreClient.ts +5 -1
  55. package/test/integration/generated/azure/core/src/logger.ts +5 -0
  56. package/test/integration/generated/azure/core/src/outputModels.ts +7 -1
  57. package/test/integration/generated/azure/core-traits/package.json +1 -1
  58. package/test/integration/generated/azure/core-traits/src/azureCoreTraitsClient.ts +5 -1
  59. package/test/integration/generated/azure/core-traits/src/logger.ts +5 -0
  60. package/test/integration/generated/azure/core-traits/src/outputModels.ts +15 -0
  61. package/test/integration/generated/dictionary/package.json +1 -1
  62. package/test/integration/generated/dictionary/src/dictClient.ts +5 -1
  63. package/test/integration/generated/dictionary/src/logger.ts +5 -0
  64. package/test/integration/generated/enums/extensible/package.json +1 -1
  65. package/test/integration/generated/enums/extensible/src/logger.ts +5 -0
  66. package/test/integration/generated/enums/extensible/src/typeEnumExtensible.ts +5 -1
  67. package/test/integration/generated/enums/fixed/package.json +1 -1
  68. package/test/integration/generated/enums/fixed/src/logger.ts +5 -0
  69. package/test/integration/generated/enums/fixed/src/typeEnumFixed.ts +5 -1
  70. package/test/integration/generated/internal/src/clientDefinitions.ts +38 -12
  71. package/test/integration/generated/internal/src/index.ts +0 -1
  72. package/test/integration/generated/internal/src/internalClient.ts +5 -1
  73. package/test/integration/generated/internal/src/logger.ts +5 -0
  74. package/test/integration/generated/internal/src/outputModels.ts +9 -5
  75. package/test/integration/generated/internal/src/parameters.ts +32 -8
  76. package/test/integration/generated/internal/src/responses.ts +18 -5
  77. package/test/integration/generated/lro/lroCore/package.json +2 -2
  78. package/test/integration/generated/lro/lroCore/src/logger.ts +5 -0
  79. package/test/integration/generated/lro/lroCore/src/specsAzureCoreLroStandard.ts +5 -1
  80. package/test/integration/generated/lro/lroRPC/package.json +2 -2
  81. package/test/integration/generated/lro/lroRPC/src/logger.ts +5 -0
  82. package/test/integration/generated/lro/lroRPC/src/specsAzureCoreLroRpc.ts +5 -1
  83. package/test/integration/generated/models/inheritance/package.json +1 -1
  84. package/test/integration/generated/models/inheritance/src/logger.ts +5 -0
  85. package/test/integration/generated/models/inheritance/src/typeModelInheritance.ts +5 -1
  86. package/test/integration/generated/models/propertyNullable/package.json +1 -1
  87. package/test/integration/generated/models/propertyNullable/src/logger.ts +5 -0
  88. package/test/integration/generated/models/propertyNullable/src/typePropertyNullable.ts +5 -1
  89. package/test/integration/generated/models/propertyOptional/package.json +1 -1
  90. package/test/integration/generated/models/propertyOptional/src/logger.ts +5 -0
  91. package/test/integration/generated/models/propertyOptional/src/typePropertyOptional.ts +5 -1
  92. package/test/integration/generated/models/propertyTypes/package.json +1 -1
  93. package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +68 -0
  94. package/test/integration/generated/models/propertyTypes/src/logger.ts +5 -0
  95. package/test/integration/generated/models/propertyTypes/src/models.ts +24 -0
  96. package/test/integration/generated/models/propertyTypes/src/outputModels.ts +24 -0
  97. package/test/integration/generated/models/propertyTypes/src/parameters.ts +40 -0
  98. package/test/integration/generated/models/propertyTypes/src/responses.ts +48 -0
  99. package/test/integration/generated/models/propertyTypes/src/typePropertyValueTypes.ts +5 -1
  100. package/test/integration/generated/models/usage/package.json +1 -1
  101. package/test/integration/generated/models/usage/src/logger.ts +5 -0
  102. package/test/integration/generated/models/usage/src/typeModelUsage.ts +5 -1
  103. package/test/integration/generated/models/visibility/package.json +1 -1
  104. package/test/integration/generated/models/visibility/src/logger.ts +5 -0
  105. package/test/integration/generated/models/visibility/src/typeModelVisibility.ts +5 -1
  106. package/test/integration/generated/parameters/collection-format/src/collectionFormatClient.ts +5 -1
  107. package/test/integration/generated/parameters/collection-format/src/logger.ts +5 -0
  108. package/test/integration/generated/parameters/spread/src/logger.ts +5 -0
  109. package/test/integration/generated/parameters/spread/src/parametersSpread.ts +5 -1
  110. package/test/integration/generated/projection/src/logger.ts +5 -0
  111. package/test/integration/generated/projection/src/projectionClient.ts +5 -1
  112. package/test/integration/generated/resiliency/srvDriven1/package.json +1 -1
  113. package/test/integration/generated/resiliency/srvDriven1/src/logger.ts +5 -0
  114. package/test/integration/generated/resiliency/srvDriven1/src/serviceDrivenOldClient.ts +6 -2
  115. package/test/integration/generated/resiliency/srvDriven2/package.json +1 -1
  116. package/test/integration/generated/resiliency/srvDriven2/src/logger.ts +5 -0
  117. package/test/integration/generated/resiliency/srvDriven2/src/serviceDrivenNewClient.ts +6 -2
  118. package/test/integration/generated/server/path/multiple/src/logger.ts +5 -0
  119. package/test/integration/generated/server/path/multiple/src/multipleParamInServerPathClient.ts +6 -2
  120. package/test/integration/generated/server/path/single/src/logger.ts +5 -0
  121. package/test/integration/generated/server/path/single/src/singleParamInServerPathClient.ts +6 -2
  122. package/test/integration/generated/specialWords/src/logger.ts +5 -0
  123. package/test/integration/generated/specialWords/src/specialWordsClient.ts +5 -1
  124. package/test/integration/generated/unions/src/logger.ts +5 -0
  125. package/test/integration/generated/unions/src/unionsClient.ts +5 -1
  126. package/test/integration/internal.spec.ts +45 -12
  127. package/test/integration/modelPropertyType.spec.ts +16 -0
  128. package/test/integration/resiliencyDpgCustomization.spec.ts +85 -24
  129. package/test/unit/apiVersion.spec.ts +19 -7
  130. package/test/unit/clientFactoryGenerator.spec.ts +44 -16
  131. package/test/unit/modelsGenerator.spec.ts +212 -2
  132. package/test/unit/util/emitUtil.ts +13 -4
  133. package/test/unit/util/testUtil.ts +7 -2
  134. package/typespec-ts.build.log +0 -1
  135. 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(program, parameters);
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(program, parameter.param.type, [
115
- SchemaContext.Input,
116
- SchemaContext.Exception
117
- ]) as Schema;
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(program, bodyType, importedModels);
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(program, paramType.type, [
342
- SchemaContext.Input,
343
- SchemaContext.Exception
344
- ]) as any;
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(program, paramType.type, importedModels);
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, dpgContext, operationGroup);
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, dpgContext);
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
- dpgContext: SdkContext,
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(program, p.param.sourceProperty?.type).type
152
- : getSchemaForType(program, p.param.type).type,
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, buildMultiCollection
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.path("/azure/core/basic/users/{id}", 1).patch({
36
- contentType: "application/merge-patch+json",
37
- body: {
38
- name: "Madge"
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.path("/azure/core/basic/users/{id}", 1).delete();
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 type: ClientOptions, the parameter for all optional parameters
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;
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+
4
+ import { createClientLogger } from "@azure/logger";
5
+ export const logger = createClientLogger("array-itemtypes");
@@ -52,7 +52,7 @@
52
52
  "autoPublish": false,
53
53
  "dependencies": {
54
54
  "@azure/core-auth": "^1.3.0",
55
- "@azure-rest/core-client": "^1.1.2",
55
+ "@azure-rest/core-client": "^1.1.3",
56
56
  "@azure/core-rest-pipeline": "^1.8.0",
57
57
  "@azure/logger": "^1.0.0",
58
58
  "tslib": "^2.2.0"
@@ -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 type: KeyCredential, uniquely identify client credential
11
- * @param options type: ClientOptions, the parameter for all optional parameters
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;
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+
4
+ import { createClientLogger } from "@azure/logger";
5
+ export const logger = createClientLogger("auth-apikey");
@@ -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 type: TokenCredential, uniquely identify client credential
11
- * @param options type: ClientOptions, the parameter for all optional parameters
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;
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+
4
+ import { createClientLogger } from "@azure/logger";
5
+ export const logger = createClientLogger("auth-oauth2");
@@ -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 type: TokenCredential|KeyCredential, uniquely identify client credential
11
- * @param options type: ClientOptions, the parameter for all optional parameters
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;
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+
4
+ import { createClientLogger } from "@azure/logger";
5
+ export const logger = createClientLogger("auth-union");
@@ -52,7 +52,7 @@
52
52
  "autoPublish": false,
53
53
  "dependencies": {
54
54
  "@azure/core-auth": "^1.3.0",
55
- "@azure-rest/core-client": "^1.1.2",
55
+ "@azure-rest/core-client": "^1.1.3",
56
56
  "@azure/core-rest-pipeline": "^1.8.0",
57
57
  "@azure/logger": "^1.0.0",
58
58
  "tslib": "^2.2.0",
@@ -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 type: ClientOptions, the parameter for all optional parameters
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;
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+
4
+ import { createClientLogger } from "@azure/logger";
5
+ export const logger = createClientLogger("azurecore");
@@ -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>;
@@ -52,7 +52,7 @@
52
52
  "autoPublish": false,
53
53
  "dependencies": {
54
54
  "@azure/core-auth": "^1.3.0",
55
- "@azure-rest/core-client": "^1.1.2",
55
+ "@azure-rest/core-client": "^1.1.3",
56
56
  "@azure/core-rest-pipeline": "^1.8.0",
57
57
  "@azure/logger": "^1.0.0",
58
58
  "tslib": "^2.2.0"
@@ -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 type: ClientOptions, the parameter for all optional parameters
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;
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+
4
+ import { createClientLogger } from "@azure/logger";
5
+ export const logger = createClientLogger("azurecoretraits");
@@ -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. */