@azure-tools/typespec-go 0.8.2 → 0.8.3

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 (85) hide show
  1. package/dist/codegen.go/src/clientFactory.d.ts.map +1 -1
  2. package/dist/codegen.go/src/clientFactory.js +4 -0
  3. package/dist/codegen.go/src/clientFactory.js.map +1 -1
  4. package/dist/codegen.go/src/cloudConfig.d.ts +10 -0
  5. package/dist/codegen.go/src/cloudConfig.d.ts.map +1 -0
  6. package/dist/codegen.go/src/cloudConfig.js +65 -0
  7. package/dist/codegen.go/src/cloudConfig.js.map +1 -0
  8. package/dist/codegen.go/src/example.d.ts.map +1 -1
  9. package/dist/codegen.go/src/example.js +98 -109
  10. package/dist/codegen.go/src/example.js.map +1 -1
  11. package/dist/codegen.go/src/fake/factory.d.ts.map +1 -1
  12. package/dist/codegen.go/src/fake/factory.js +11 -2
  13. package/dist/codegen.go/src/fake/factory.js.map +1 -1
  14. package/dist/codegen.go/src/fake/servers.d.ts.map +1 -1
  15. package/dist/codegen.go/src/fake/servers.js +58 -65
  16. package/dist/codegen.go/src/fake/servers.js.map +1 -1
  17. package/dist/codegen.go/src/helpers.d.ts +36 -3
  18. package/dist/codegen.go/src/helpers.d.ts.map +1 -1
  19. package/dist/codegen.go/src/helpers.js +72 -17
  20. package/dist/codegen.go/src/helpers.js.map +1 -1
  21. package/dist/codegen.go/src/imports.d.ts +1 -1
  22. package/dist/codegen.go/src/imports.d.ts.map +1 -1
  23. package/dist/codegen.go/src/imports.js +4 -6
  24. package/dist/codegen.go/src/imports.js.map +1 -1
  25. package/dist/codegen.go/src/models.d.ts +0 -1
  26. package/dist/codegen.go/src/models.d.ts.map +1 -1
  27. package/dist/codegen.go/src/models.js +1 -7
  28. package/dist/codegen.go/src/models.js.map +1 -1
  29. package/dist/codegen.go/src/operations.d.ts.map +1 -1
  30. package/dist/codegen.go/src/operations.js +349 -141
  31. package/dist/codegen.go/src/operations.js.map +1 -1
  32. package/dist/codegen.go/src/responses.d.ts.map +1 -1
  33. package/dist/codegen.go/src/responses.js +2 -3
  34. package/dist/codegen.go/src/responses.js.map +1 -1
  35. package/dist/codemodel.go/src/client.d.ts +99 -35
  36. package/dist/codemodel.go/src/client.d.ts.map +1 -1
  37. package/dist/codemodel.go/src/client.js +53 -13
  38. package/dist/codemodel.go/src/client.js.map +1 -1
  39. package/dist/codemodel.go/src/examples.d.ts +3 -11
  40. package/dist/codemodel.go/src/examples.d.ts.map +1 -1
  41. package/dist/codemodel.go/src/examples.js +0 -7
  42. package/dist/codemodel.go/src/examples.js.map +1 -1
  43. package/dist/codemodel.go/src/index.d.ts.map +1 -1
  44. package/dist/codemodel.go/src/index.js +1 -0
  45. package/dist/codemodel.go/src/index.js.map +1 -1
  46. package/dist/codemodel.go/src/method.d.ts +44 -0
  47. package/dist/codemodel.go/src/method.d.ts.map +1 -0
  48. package/dist/codemodel.go/src/method.js +30 -0
  49. package/dist/codemodel.go/src/method.js.map +1 -0
  50. package/dist/codemodel.go/src/package.d.ts +2 -0
  51. package/dist/codemodel.go/src/package.d.ts.map +1 -1
  52. package/dist/codemodel.go/src/package.js +8 -0
  53. package/dist/codemodel.go/src/package.js.map +1 -1
  54. package/dist/codemodel.go/src/param.d.ts +67 -40
  55. package/dist/codemodel.go/src/param.d.ts.map +1 -1
  56. package/dist/codemodel.go/src/param.js +46 -25
  57. package/dist/codemodel.go/src/param.js.map +1 -1
  58. package/dist/codemodel.go/src/result.d.ts +1 -1
  59. package/dist/codemodel.go/src/result.d.ts.map +1 -1
  60. package/dist/codemodel.go/src/result.js +1 -1
  61. package/dist/codemodel.go/src/result.js.map +1 -1
  62. package/dist/codemodel.go/src/type.d.ts +53 -15
  63. package/dist/codemodel.go/src/type.d.ts.map +1 -1
  64. package/dist/codemodel.go/src/type.js +52 -18
  65. package/dist/codemodel.go/src/type.js.map +1 -1
  66. package/dist/typespec-go/src/emitter.d.ts +9 -0
  67. package/dist/typespec-go/src/emitter.d.ts.map +1 -1
  68. package/dist/typespec-go/src/emitter.js +37 -1
  69. package/dist/typespec-go/src/emitter.js.map +1 -1
  70. package/dist/typespec-go/src/lib.d.ts +1 -0
  71. package/dist/typespec-go/src/lib.d.ts.map +1 -1
  72. package/dist/typespec-go/src/lib.js +5 -0
  73. package/dist/typespec-go/src/lib.js.map +1 -1
  74. package/dist/typespec-go/src/tcgcadapter/adapter.d.ts.map +1 -1
  75. package/dist/typespec-go/src/tcgcadapter/adapter.js +4 -1
  76. package/dist/typespec-go/src/tcgcadapter/adapter.js.map +1 -1
  77. package/dist/typespec-go/src/tcgcadapter/clients.d.ts +18 -2
  78. package/dist/typespec-go/src/tcgcadapter/clients.d.ts.map +1 -1
  79. package/dist/typespec-go/src/tcgcadapter/clients.js +233 -53
  80. package/dist/typespec-go/src/tcgcadapter/clients.js.map +1 -1
  81. package/dist/typespec-go/src/tcgcadapter/types.d.ts +7 -0
  82. package/dist/typespec-go/src/tcgcadapter/types.d.ts.map +1 -1
  83. package/dist/typespec-go/src/tcgcadapter/types.js +17 -10
  84. package/dist/typespec-go/src/tcgcadapter/types.js.map +1 -1
  85. package/package.json +21 -20
@@ -34,14 +34,11 @@ export function getServerName(client) {
34
34
  // for the fake server, we use the suffix Server instead of Client
35
35
  return capitalize(client.name.replace(/[C|c]lient$/, 'Server'));
36
36
  }
37
- function isMethodInternal(method) {
38
- return !!method.name.match(/^[a-z]{1}/);
39
- }
40
37
  export async function generateServers(codeModel) {
41
38
  const operations = new Array();
42
39
  const clientPkg = codeModel.packageName;
43
40
  for (const client of values(codeModel.clients)) {
44
- if (client.clientAccessors.length === 0 && values(client.methods).all(method => { return isMethodInternal(method); })) {
41
+ if (client.clientAccessors.length === 0 && values(client.methods).all(method => { return helpers.isMethodInternal(method); })) {
45
42
  // client has no client accessors and no exported methods, skip it
46
43
  continue;
47
44
  }
@@ -64,7 +61,7 @@ export async function generateServers(codeModel) {
64
61
  // we might remove some clients from the list
65
62
  const finalSubClients = new Array();
66
63
  for (const clientAccessor of client.clientAccessors) {
67
- if (values(clientAccessor.subClient.methods).all(method => { return isMethodInternal(method); })) {
64
+ if (values(clientAccessor.subClient.methods).all(method => { return helpers.isMethodInternal(method); })) {
68
65
  // client has no exported methods, skip it
69
66
  continue;
70
67
  }
@@ -74,7 +71,7 @@ export async function generateServers(codeModel) {
74
71
  finalSubClients.push(clientAccessor.subClient);
75
72
  }
76
73
  for (const method of values(client.methods)) {
77
- if (isMethodInternal(method)) {
74
+ if (helpers.isMethodInternal(method)) {
78
75
  // method isn't exported, don't create a fake for it
79
76
  continue;
80
77
  }
@@ -82,25 +79,25 @@ export async function generateServers(codeModel) {
82
79
  switch (method.kind) {
83
80
  case 'lroMethod':
84
81
  case 'lroPageableMethod':
85
- let respType = `${clientPkg}.${method.responseEnvelope.name}`;
82
+ let respType = `${clientPkg}.${method.returns.name}`;
86
83
  if (method.kind === 'lroPageableMethod') {
87
- respType = `azfake.PagerResponder[${clientPkg}.${method.responseEnvelope.name}]`;
84
+ respType = `azfake.PagerResponder[${clientPkg}.${method.returns.name}]`;
88
85
  }
89
86
  serverResponse = `resp azfake.PollerResponder[${respType}], errResp azfake.ErrorResponder`;
90
87
  break;
91
88
  case 'method':
92
- serverResponse = `resp azfake.Responder[${clientPkg}.${method.responseEnvelope.name}], errResp azfake.ErrorResponder`;
89
+ serverResponse = `resp azfake.Responder[${clientPkg}.${method.returns.name}], errResp azfake.ErrorResponder`;
93
90
  break;
94
91
  case 'pageableMethod':
95
- serverResponse = `resp azfake.PagerResponder[${clientPkg}.${method.responseEnvelope.name}]`;
92
+ serverResponse = `resp azfake.PagerResponder[${clientPkg}.${method.returns.name}]`;
96
93
  break;
97
94
  }
98
95
  const operationName = fixUpMethodName(method);
99
96
  content += `\t// ${operationName} is the fake for method ${client.name}.${operationName}\n`;
100
97
  const successCodes = new Array();
101
- if (method.responseEnvelope.result?.kind === 'anyResult') {
98
+ if (method.returns.result?.kind === 'anyResult') {
102
99
  for (const httpStatus of getMethodStatusCodes(method)) {
103
- const result = method.responseEnvelope.result.httpStatusCodeType[httpStatus];
100
+ const result = method.returns.result.httpStatusCodeType[httpStatus];
104
101
  if (!result) {
105
102
  // the operation contains a mix of schemas and non-schema responses
106
103
  successCodes.push(`${helpers.formatStatusCode(httpStatus)} (no return type)`);
@@ -144,12 +141,12 @@ export async function generateServers(codeModel) {
144
141
  else {
145
142
  content += `\treturn &${serverTransport}{\n\t\tsrv: srv,\n`;
146
143
  for (const method of values(finalMethods)) {
147
- let respType = `${clientPkg}.${method.responseEnvelope.name}`;
144
+ let respType = `${clientPkg}.${method.returns.name}`;
148
145
  switch (method.kind) {
149
146
  case 'lroMethod':
150
147
  case 'lroPageableMethod':
151
148
  if (method.kind === 'lroPageableMethod') {
152
- respType = `azfake.PagerResponder[${clientPkg}.${method.responseEnvelope.name}]`;
149
+ respType = `azfake.PagerResponder[${clientPkg}.${method.returns.name}]`;
153
150
  }
154
151
  requiredHelpers.tracker = true;
155
152
  content += `\t\t${uncapitalize(fixUpMethodName(method))}: newTracker[azfake.PollerResponder[${respType}]](),\n`;
@@ -178,19 +175,19 @@ export async function generateServers(codeModel) {
178
175
  }
179
176
  for (const method of values(finalMethods)) {
180
177
  // create state machines for any pager/poller operations
181
- let respType = `${clientPkg}.${method.responseEnvelope.name}`;
178
+ let respType = `${clientPkg}.${method.returns.name}`;
182
179
  switch (method.kind) {
183
180
  case 'lroMethod':
184
181
  case 'lroPageableMethod':
185
182
  if (method.kind === 'lroPageableMethod') {
186
- respType = `azfake.PagerResponder[${clientPkg}.${method.responseEnvelope.name}]`;
183
+ respType = `azfake.PagerResponder[${clientPkg}.${method.returns.name}]`;
187
184
  }
188
185
  requiredHelpers.tracker = true;
189
186
  content += `\t${uncapitalize(fixUpMethodName(method))} *tracker[azfake.PollerResponder[${respType}]]\n`;
190
187
  break;
191
188
  case 'pageableMethod':
192
189
  requiredHelpers.tracker = true;
193
- content += `\t${uncapitalize(fixUpMethodName(method))} *tracker[azfake.PagerResponder[${clientPkg}.${method.responseEnvelope.name}]]\n`;
190
+ content += `\t${uncapitalize(fixUpMethodName(method))} *tracker[azfake.PagerResponder[${clientPkg}.${method.returns.name}]]\n`;
194
191
  break;
195
192
  }
196
193
  }
@@ -322,24 +319,24 @@ function generateServerTransportMethods(codeModel, serverTransport, finalMethods
322
319
  const formattedStatusCodes = helpers.formatStatusCodes(method.httpStatusCodes);
323
320
  content += `\tif !contains([]int{${formattedStatusCodes}}, respContent.HTTPStatus) {\n`;
324
321
  content += `\t\treturn nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are ${formattedStatusCodes}", respContent.HTTPStatus)}\n\t}\n`;
325
- if (!method.responseEnvelope.result || method.responseEnvelope.result.kind === 'headAsBooleanResult') {
322
+ if (!method.returns.result || method.returns.result.kind === 'headAsBooleanResult') {
326
323
  content += '\tresp, err := server.NewResponse(respContent, req, nil)\n';
327
324
  }
328
- else if (method.responseEnvelope.result.kind === 'anyResult') {
329
- content += `\tresp, err := server.MarshalResponseAs${method.responseEnvelope.result.format}(respContent, server.GetResponse(respr).${getResultFieldName(method.responseEnvelope.result)}, req)\n`;
325
+ else if (method.returns.result.kind === 'anyResult') {
326
+ content += `\tresp, err := server.MarshalResponseAs${method.returns.result.format}(respContent, server.GetResponse(respr).${getResultFieldName(method.returns.result)}, req)\n`;
330
327
  }
331
- else if (method.responseEnvelope.result.kind === 'binaryResult') {
328
+ else if (method.returns.result.kind === 'binaryResult') {
332
329
  content += '\tresp, err := server.NewResponse(respContent, req, &server.ResponseOptions{\n';
333
- content += `\t\tBody: server.GetResponse(respr).${getResultFieldName(method.responseEnvelope.result)},\n`;
330
+ content += `\t\tBody: server.GetResponse(respr).${getResultFieldName(method.returns.result)},\n`;
334
331
  content += '\t\tContentType: req.Header.Get("Content-Type"),\n';
335
332
  content += '\t})\n';
336
333
  }
337
- else if (method.responseEnvelope.result.kind === 'monomorphicResult') {
338
- if (method.responseEnvelope.result.monomorphicType.kind === 'encodedBytes') {
339
- const encoding = method.responseEnvelope.result.monomorphicType.encoding;
340
- content += `\tresp, err := server.MarshalResponseAsByteArray(respContent, server.GetResponse(respr).${getResultFieldName(method.responseEnvelope.result)}, runtime.Base64${encoding}Format, req)\n`;
334
+ else if (method.returns.result.kind === 'monomorphicResult') {
335
+ if (method.returns.result.monomorphicType.kind === 'encodedBytes') {
336
+ const encoding = method.returns.result.monomorphicType.encoding;
337
+ content += `\tresp, err := server.MarshalResponseAsByteArray(respContent, server.GetResponse(respr).${getResultFieldName(method.returns.result)}, runtime.Base64${encoding}Format, req)\n`;
341
338
  }
342
- else if (method.responseEnvelope.result.monomorphicType.kind === 'rawJSON') {
339
+ else if (method.returns.result.monomorphicType.kind === 'rawJSON') {
343
340
  imports.add('bytes');
344
341
  imports.add('io');
345
342
  content += '\tresp, err := server.NewResponse(respContent, req, &server.ResponseOptions{\n';
@@ -347,26 +344,26 @@ function generateServerTransportMethods(codeModel, serverTransport, finalMethods
347
344
  content += '\t\tContentType: "application/json",\n\t})\n';
348
345
  }
349
346
  else {
350
- let respField = `.${getResultFieldName(method.responseEnvelope.result)}`;
351
- if (method.responseEnvelope.result.format === 'XML' && method.responseEnvelope.result.monomorphicType.kind === 'slice') {
347
+ let respField = `.${getResultFieldName(method.returns.result)}`;
348
+ if (method.returns.result.format === 'XML' && method.returns.result.monomorphicType.kind === 'slice') {
352
349
  // for XML array responses we use the response type directly as it has the necessary XML tag for proper marshalling
353
350
  respField = '';
354
351
  }
355
352
  let responseField = `server.GetResponse(respr)${respField}`;
356
- if (method.responseEnvelope.result.monomorphicType.kind === 'time') {
357
- responseField = `(*${method.responseEnvelope.result.monomorphicType.format})(${responseField})`;
353
+ if (method.returns.result.monomorphicType.kind === 'time') {
354
+ responseField = `(*${method.returns.result.monomorphicType.format})(${responseField})`;
358
355
  }
359
- content += `\tresp, err := server.MarshalResponseAs${method.responseEnvelope.result.format}(respContent, ${responseField}, req)\n`;
356
+ content += `\tresp, err := server.MarshalResponseAs${method.returns.result.format}(respContent, ${responseField}, req)\n`;
360
357
  }
361
358
  }
362
- else if (method.responseEnvelope.result.kind === 'modelResult' || method.responseEnvelope.result.kind === 'polymorphicResult') {
363
- const respField = `.${getResultFieldName(method.responseEnvelope.result)}`;
359
+ else if (method.returns.result.kind === 'modelResult' || method.returns.result.kind === 'polymorphicResult') {
360
+ const respField = `.${getResultFieldName(method.returns.result)}`;
364
361
  const responseField = `server.GetResponse(respr)${respField}`;
365
- content += `\tresp, err := server.MarshalResponseAs${method.responseEnvelope.result.format}(respContent, ${responseField}, req)\n`;
362
+ content += `\tresp, err := server.MarshalResponseAs${method.returns.result.format}(respContent, ${responseField}, req)\n`;
366
363
  }
367
364
  content += '\tif err != nil {\n\t\treturn nil, err\n\t}\n';
368
365
  // propagate any header response values into the *http.Response
369
- for (const header of values(method.responseEnvelope.headers)) {
366
+ for (const header of values(method.returns.headers)) {
370
367
  if (header.kind === 'headerMapResponse') {
371
368
  content += `\tfor k, v := range server.GetResponse(respr).${header.fieldName} {\n`;
372
369
  content += '\t\tif v != nil {\n';
@@ -394,7 +391,7 @@ function generateServerTransportMethods(codeModel, serverTransport, finalMethods
394
391
  }
395
392
  function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
396
393
  const methodParamGroups = helpers.getMethodParamGroups(method);
397
- const numPathParams = values(methodParamGroups.pathParams).where((each) => { return !go.isLiteralParameter(each); }).count();
394
+ const numPathParams = values(methodParamGroups.pathParams).where((each) => { return !go.isLiteralParameter(each.style); }).count();
398
395
  let content = '';
399
396
  if (numPathParams > 0) {
400
397
  imports.add('regexp');
@@ -407,7 +404,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
407
404
  content += '\t\treturn nil, fmt.Errorf("failed to parse path %s", req.URL.Path)\n\t}\n';
408
405
  }
409
406
  const allQueryParams = methodParamGroups.encodedQueryParams.concat(methodParamGroups.unencodedQueryParams);
410
- if (values(allQueryParams).where((each) => { return each.location === 'method' && !go.isLiteralParameter(each); }).any()) {
407
+ if (values(allQueryParams).where((each) => { return each.location === 'method' && !go.isLiteralParameter(each.style); }).any()) {
411
408
  content += '\tqp := req.URL.Query()\n';
412
409
  }
413
410
  // note that these are mutually exclusive
@@ -419,7 +416,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
419
416
  switch (bodyParam.bodyFormat) {
420
417
  case 'JSON':
421
418
  case 'XML':
422
- if (bodyParam && !go.isLiteralParameter(bodyParam)) {
419
+ if (bodyParam && !go.isLiteralParameter(bodyParam.style)) {
423
420
  imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/fake', 'azfake');
424
421
  switch (bodyParam.type.kind) {
425
422
  case 'encodedBytes':
@@ -451,7 +448,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
451
448
  }
452
449
  break;
453
450
  case 'Text':
454
- if (bodyParam && !go.isLiteralParameter(bodyParam)) {
451
+ if (bodyParam && !go.isLiteralParameter(bodyParam.style)) {
455
452
  imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/fake', 'azfake');
456
453
  content += '\tbody, err := server.UnmarshalRequestAsText(req)\n';
457
454
  content += '\tif err != nil {\n\t\treturn nil, err\n\t}\n';
@@ -520,10 +517,6 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
520
517
  parsingCode += `\t\t\tif ${parseErr} != nil {\n\t\t\t\treturn nil, ${parseErr}\n\t\t\t}\n`;
521
518
  return parsingCode;
522
519
  };
523
- const isMultipartContentType = function (type) {
524
- type = helpers.recursiveUnwrapMapSlice(type);
525
- return (type.kind === 'qualifiedType' && type.exportName === 'MultipartContent');
526
- };
527
520
  const isModelType = function (type) {
528
521
  return type.kind === 'model' || type.kind === 'polymorphicModel';
529
522
  };
@@ -536,7 +529,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
536
529
  imports.add('encoding/json');
537
530
  caseContent += `\t\t\tif err = json.Unmarshal(content, &${paramVar}); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n`;
538
531
  }
539
- else if (type.kind === 'qualifiedType' && type.exportName === 'ReadSeekCloser') {
532
+ else if (type.kind === 'readSeekCloser') {
540
533
  imports.add('bytes');
541
534
  imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming');
542
535
  assignedValue = 'streaming.NopCloser(bytes.NewReader(content))';
@@ -581,7 +574,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
581
574
  else if (type.kind === 'string') {
582
575
  assignedValue = 'string(content)';
583
576
  }
584
- else if (isMultipartContentType(type)) {
577
+ else if (helpers.recursiveUnwrapMapSlice(type).kind === 'multipartContent') {
585
578
  imports.add('bytes');
586
579
  imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming');
587
580
  const bodyContent = 'streaming.NopCloser(bytes.NewReader(content))';
@@ -601,7 +594,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
601
594
  }
602
595
  }
603
596
  else if (type.kind === 'slice') {
604
- if (type.elementType.kind === 'qualifiedType' && type.elementType.exportName === 'ReadSeekCloser') {
597
+ if (type.elementType.kind === 'readSeekCloser') {
605
598
  imports.add('bytes');
606
599
  imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming');
607
600
  assignedValue = `append(${paramVar}, streaming.NopCloser(bytes.NewReader(content)))`;
@@ -665,7 +658,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
665
658
  // construct the partial body params type and unmarshal it
666
659
  content += '\ttype partialBodyParams struct {\n';
667
660
  for (const partialBodyParam of partialBodyParams) {
668
- content += `\t\t${capitalize(partialBodyParam.name)} ${helpers.star(partialBodyParam)}${go.getTypeDeclaration(partialBodyParam.type)} \`json:"${partialBodyParam.serializedName}"\`\n`;
661
+ content += `\t\t${capitalize(partialBodyParam.name)} ${helpers.star(partialBodyParam.byValue)}${go.getTypeDeclaration(partialBodyParam.type)} \`json:"${partialBodyParam.serializedName}"\`\n`;
669
662
  }
670
663
  content += '\t}\n';
671
664
  content += `\tbody, err := server.UnmarshalRequestAs${partialBodyParams[0].format}[partialBodyParams](req)\n`;
@@ -675,7 +668,7 @@ function dispatchForOperationBody(clientPkg, receiverName, method, imports) {
675
668
  content += result.content;
676
669
  // translate each partial body param to its field within the unmarshalled body
677
670
  for (const partialBodyParam of partialBodyParams) {
678
- result.params.set(partialBodyParam.name, `${helpers.star(partialBodyParam)}body.${capitalize(partialBodyParam.name)}`);
671
+ result.params.set(partialBodyParam.name, `${helpers.star(partialBodyParam.byValue)}body.${capitalize(partialBodyParam.name)}`);
679
672
  }
680
673
  const apiCall = `:= ${receiverName}.srv.${fixUpMethodName(method)}(${populateApiParams(clientPkg, method, result.params, imports)})`;
681
674
  if (method.kind === 'pageableMethod') {
@@ -697,7 +690,7 @@ function getMethodStatusCodes(method) {
697
690
  // pollers always include 200 as an acceptible status code so we emulate that here
698
691
  statusCodes.unshift(200);
699
692
  }
700
- if (!method.responseEnvelope.result && !statusCodes.includes(204)) {
693
+ if (!method.returns.result && !statusCodes.includes(204)) {
701
694
  // also include 204 if the LRO doesn't return a body
702
695
  statusCodes.push(204);
703
696
  }
@@ -737,7 +730,7 @@ function dispatchForPagerBody(clientPkg, receiverName, method, imports) {
737
730
  content += `\t\t${operationStateMachine}.add(req, ${localVarName})\n`;
738
731
  if (method.nextLinkName) {
739
732
  imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/to');
740
- content += `\t\tserver.PagerResponderInjectNextLinks(${localVarName}, req, func(page *${clientPkg}.${method.responseEnvelope.name}, createLink func() string) {\n`;
733
+ content += `\t\tserver.PagerResponderInjectNextLinks(${localVarName}, req, func(page *${clientPkg}.${method.returns.name}, createLink func() string) {\n`;
741
734
  content += `\t\t\tpage.${method.nextLinkName} = to.Ptr(createLink())\n`;
742
735
  content += '\t\t})\n';
743
736
  }
@@ -804,7 +797,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
804
797
  // we track the params separately as it might be a subset of ParameterGroup.params
805
798
  const paramGroups = new Map();
806
799
  for (const param of values(consolidateHostParams(method.parameters))) {
807
- if (param.location === 'client' || go.isLiteralParameter(param)) {
800
+ if (param.location === 'client' || go.isLiteralParameter(param.style)) {
808
801
  // client params and parameter literals aren't passed to APIs
809
802
  continue;
810
803
  }
@@ -867,7 +860,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
867
860
  where = 'Query';
868
861
  }
869
862
  let paramVar = createLocalVariableName(param, 'Unescaped');
870
- if (go.isRequiredParameter(param) && param.type.kind === 'constant' && param.type.type === 'string') {
863
+ if (go.isRequiredParameter(param.style) && param.type.kind === 'constant' && param.type.type === 'string') {
871
864
  // for string-based enums, we perform the conversion as part of unescaping
872
865
  requiredHelpers.parseWithCast = true;
873
866
  paramVar = createLocalVariableName(param, 'Param');
@@ -877,7 +870,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
877
870
  content += `\t\treturn ${go.getTypeDeclaration(param.type, clientPkg)}(p), nil\n\t})\n`;
878
871
  }
879
872
  else {
880
- if (go.isRequiredParameter(param) &&
873
+ if (go.isRequiredParameter(param.style) &&
881
874
  (param.type.kind === 'string' || (param.type.kind === 'slice' && param.type.elementType.kind === 'string'))) {
882
875
  // by convention, if the value is in its "final form" (i.e. no parsing required)
883
876
  // then its var is to have the "Param" suffix. the only case is string, everything
@@ -969,7 +962,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
969
962
  // TODO: remove cast in some cases
970
963
  content += `\t\t${paramVar}[i] = ${toType}(${fromVar})\n\t}\n`;
971
964
  }
972
- else if (!go.isRequiredParameter(param) && param.collectionFormat !== 'multi') {
965
+ else if (!go.isRequiredParameter(param.style) && param.collectionFormat !== 'multi') {
973
966
  // for slices of strings that are required, the call to splitHelper(...) is inlined into
974
967
  // the invocation of the fake e.g. srv.FakeFunc(splitHelper...). but if it's optional, we
975
968
  // need to create a local first which will later be copied into the optional param group.
@@ -980,7 +973,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
980
973
  else if (param.type.kind === 'scalar' && param.type.type === 'bool') {
981
974
  imports.add('strconv');
982
975
  let from = `strconv.ParseBool(${paramValue})`;
983
- if (!go.isRequiredParameter(param)) {
976
+ if (!go.isRequiredParameter(param.style)) {
984
977
  requiredHelpers.parseOptional = true;
985
978
  from = `parseOptional(${paramValue}, strconv.ParseBool)`;
986
979
  }
@@ -1000,7 +993,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1000
993
  format = helpers.timeRFC3339Format;
1001
994
  }
1002
995
  let from = `time.Parse("${format}", ${paramValue})`;
1003
- if (!go.isRequiredParameter(param)) {
996
+ if (!go.isRequiredParameter(param.style)) {
1004
997
  requiredHelpers.parseOptional = true;
1005
998
  from = `parseOptional(${paramValue}, func(v string) (time.Time, error) { return time.Parse("${format}", v) })`;
1006
999
  }
@@ -1014,7 +1007,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1014
1007
  format = 'time.RFC1123';
1015
1008
  }
1016
1009
  let from = `time.Parse(${format}, ${paramValue})`;
1017
- if (!go.isRequiredParameter(param)) {
1010
+ if (!go.isRequiredParameter(param.style)) {
1018
1011
  requiredHelpers.parseOptional = true;
1019
1012
  from = `parseOptional(${paramValue}, func(v string) (time.Time, error) { return time.Parse(${format}, v) })`;
1020
1013
  }
@@ -1024,7 +1017,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1024
1017
  else {
1025
1018
  imports.add('strconv');
1026
1019
  let parser;
1027
- if (!go.isRequiredParameter(param)) {
1020
+ if (!go.isRequiredParameter(param.style)) {
1028
1021
  requiredHelpers.parseOptional = true;
1029
1022
  parser = 'parseOptional';
1030
1023
  }
@@ -1041,7 +1034,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1041
1034
  }
1042
1035
  else if (param.type.kind === 'scalar' && (param.type.type === 'float32' || param.type.type === 'float64' || param.type.type === 'int32' || param.type.type === 'int64')) {
1043
1036
  let parser;
1044
- if (!go.isRequiredParameter(param)) {
1037
+ if (!go.isRequiredParameter(param.style)) {
1045
1038
  requiredHelpers.parseOptional = true;
1046
1039
  parser = 'parseOptional';
1047
1040
  }
@@ -1049,7 +1042,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1049
1042
  requiredHelpers.parseWithCast = true;
1050
1043
  parser = 'parseWithCast';
1051
1044
  }
1052
- if ((param.type.type === 'float32' || param.type.type === 'int32') || !go.isRequiredParameter(param)) {
1045
+ if ((param.type.type === 'float32' || param.type.type === 'int32') || !go.isRequiredParameter(param.style)) {
1053
1046
  content += `\t${createLocalVariableName(param, 'Param')}, err := ${parser}(${paramValue}, func(v string) (${param.type.type}, error) {\n`;
1054
1047
  content += `\t\tp, parseErr := ${emitNumericConversion('v', param.type.type)}\n`;
1055
1048
  content += '\t\tif parseErr != nil {\n\t\t\treturn 0, parseErr\n\t\t}\n';
@@ -1079,7 +1072,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1079
1072
  }
1080
1073
  else if (param.type.kind === 'constant' && param.type.type !== 'string') {
1081
1074
  let parseHelper;
1082
- if (!go.isRequiredParameter(param)) {
1075
+ if (!go.isRequiredParameter(param.style)) {
1083
1076
  requiredHelpers.parseOptional = true;
1084
1077
  parseHelper = 'parseOptional';
1085
1078
  }
@@ -1106,7 +1099,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1106
1099
  content += `\t\treturn ${toConstType}(p), nil\n\t})\n`;
1107
1100
  content += '\tif err != nil {\n\t\treturn nil, err\n\t}\n';
1108
1101
  }
1109
- else if (!go.isRequiredParameter(param)) {
1102
+ else if (!go.isRequiredParameter(param.style)) {
1110
1103
  // we check this last as it's a superset of the previous conditions
1111
1104
  requiredHelpers.getOptional = true;
1112
1105
  if (param.type.kind === 'constant') {
@@ -1155,7 +1148,7 @@ function parseHeaderPathQueryParams(clientPkg, method, imports) {
1155
1148
  content += `\t\t${uncapitalize(paramGroup.name)} = &${clientPkg}.${paramGroup.groupName}{\n`;
1156
1149
  for (const param of values(params)) {
1157
1150
  let byRef = '&';
1158
- if (param.byValue || (!go.isRequiredParameter(param) && param.kind !== 'bodyParam' && !go.isFormBodyParameter(param) && param.kind !== 'multipartFormBodyParam')) {
1151
+ if (param.byValue || (!go.isRequiredParameter(param.style) && param.kind !== 'bodyParam' && !go.isFormBodyParameter(param) && param.kind !== 'multipartFormBodyParam')) {
1159
1152
  byRef = '';
1160
1153
  }
1161
1154
  content += `\t\t\t${capitalize(param.name)}: ${byRef}${getFinalParamValue(clientPkg, param, paramValues)},\n`;
@@ -1254,7 +1247,7 @@ function getFinalParamValue(clientPkg, param, paramValues) {
1254
1247
  // time types in the body have been unmarshalled into our time helpers thus require a cast to time.Time
1255
1248
  return `time.Time(${paramValue})`;
1256
1249
  }
1257
- else if (go.isRequiredParameter(param)) {
1250
+ else if (go.isRequiredParameter(param.style)) {
1258
1251
  // optional params are always in their "final" form
1259
1252
  if (param.kind === 'headerCollectionParam' || param.kind === 'pathCollectionParam' || param.kind === 'queryCollectionParam') {
1260
1253
  // for required params that are collections of strings, we split them inline.