@azure-tools/typespec-go 0.14.3 → 0.15.0-dev.4

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 (280) hide show
  1. package/CHANGELOG.md +669 -0
  2. package/README.md +6 -4
  3. package/dist/{codegen.go/src/core/clientFactory.d.ts → src/codegen/core/client-factory.d.ts} +2 -2
  4. package/dist/src/codegen/core/client-factory.d.ts.map +1 -0
  5. package/dist/{codegen.go/src/core/clientFactory.js → src/codegen/core/client-factory.js} +29 -24
  6. package/dist/src/codegen/core/client-factory.js.map +1 -0
  7. package/dist/{codegen.go/src/core/cloudConfig.d.ts → src/codegen/core/cloud-config.d.ts} +2 -2
  8. package/dist/src/codegen/core/cloud-config.d.ts.map +1 -0
  9. package/dist/{codegen.go/src/core/cloudConfig.js → src/codegen/core/cloud-config.js} +10 -9
  10. package/dist/src/codegen/core/cloud-config.js.map +1 -0
  11. package/dist/{codegen.go/src → src/codegen}/core/constants.d.ts +1 -1
  12. package/dist/src/codegen/core/constants.d.ts.map +1 -0
  13. package/dist/{codegen.go/src → src/codegen}/core/constants.js +9 -9
  14. package/dist/src/codegen/core/constants.js.map +1 -0
  15. package/dist/{codegen.go/src → src/codegen}/core/errors.d.ts +1 -1
  16. package/dist/src/codegen/core/errors.d.ts.map +1 -0
  17. package/dist/src/codegen/core/errors.js.map +1 -0
  18. package/dist/{codegen.go/src → src/codegen}/core/example.d.ts +1 -1
  19. package/dist/src/codegen/core/example.d.ts.map +1 -0
  20. package/dist/{codegen.go/src → src/codegen}/core/example.js +155 -140
  21. package/dist/src/codegen/core/example.js.map +1 -0
  22. package/dist/{codegen.go/src → src/codegen}/core/gomod.d.ts +1 -1
  23. package/dist/src/codegen/core/gomod.d.ts.map +1 -0
  24. package/dist/{codegen.go/src → src/codegen}/core/gomod.js +8 -8
  25. package/dist/src/codegen/core/gomod.js.map +1 -0
  26. package/dist/{codegen.go/src → src/codegen}/core/helpers.d.ts +5 -5
  27. package/dist/src/codegen/core/helpers.d.ts.map +1 -0
  28. package/dist/{codegen.go/src → src/codegen}/core/helpers.js +308 -284
  29. package/dist/src/codegen/core/helpers.js.map +1 -0
  30. package/dist/{codegen.go/src → src/codegen}/core/imports.d.ts +1 -1
  31. package/dist/src/codegen/core/imports.d.ts.map +1 -0
  32. package/dist/{codegen.go/src → src/codegen}/core/imports.js +19 -18
  33. package/dist/src/codegen/core/imports.js.map +1 -0
  34. package/dist/{codegen.go/src → src/codegen}/core/interfaces.d.ts +1 -1
  35. package/dist/src/codegen/core/interfaces.d.ts.map +1 -0
  36. package/dist/{codegen.go/src → src/codegen}/core/interfaces.js +5 -5
  37. package/dist/src/codegen/core/interfaces.js.map +1 -0
  38. package/dist/{codegen.go/src → src/codegen}/core/license.d.ts +1 -1
  39. package/dist/src/codegen/core/license.d.ts.map +1 -0
  40. package/dist/src/codegen/core/license.js.map +1 -0
  41. package/dist/src/codegen/core/metadata.d.ts +3 -0
  42. package/dist/src/codegen/core/metadata.d.ts.map +1 -0
  43. package/dist/{codegen.go/src → src/codegen}/core/metadata.js +1 -1
  44. package/dist/src/codegen/core/metadata.js.map +1 -0
  45. package/dist/{codegen.go/src → src/codegen}/core/models.d.ts +2 -2
  46. package/dist/src/codegen/core/models.d.ts.map +1 -0
  47. package/dist/{codegen.go/src → src/codegen}/core/models.js +212 -181
  48. package/dist/src/codegen/core/models.js.map +1 -0
  49. package/dist/{codegen.go/src → src/codegen}/core/operations.d.ts +1 -1
  50. package/dist/src/codegen/core/operations.d.ts.map +1 -0
  51. package/dist/{codegen.go/src → src/codegen}/core/operations.js +383 -360
  52. package/dist/src/codegen/core/operations.js.map +1 -0
  53. package/dist/{codegen.go/src → src/codegen}/core/options.d.ts +1 -1
  54. package/dist/src/codegen/core/options.d.ts.map +1 -0
  55. package/dist/{codegen.go/src → src/codegen}/core/options.js +11 -11
  56. package/dist/src/codegen/core/options.js.map +1 -0
  57. package/dist/{codegen.go/src → src/codegen}/core/polymorphics.d.ts +1 -1
  58. package/dist/src/codegen/core/polymorphics.d.ts.map +1 -0
  59. package/dist/{codegen.go/src → src/codegen}/core/polymorphics.js +30 -30
  60. package/dist/src/codegen/core/polymorphics.js.map +1 -0
  61. package/dist/{codegen.go/src → src/codegen}/core/responses.d.ts +1 -1
  62. package/dist/src/codegen/core/responses.d.ts.map +1 -0
  63. package/dist/{codegen.go/src → src/codegen}/core/responses.js +28 -28
  64. package/dist/src/codegen/core/responses.js.map +1 -0
  65. package/dist/{codegen.go/src → src/codegen}/core/version.d.ts +1 -1
  66. package/dist/src/codegen/core/version.d.ts.map +1 -0
  67. package/dist/{codegen.go/src → src/codegen}/core/version.js +4 -4
  68. package/dist/src/codegen/core/version.js.map +1 -0
  69. package/dist/{codegen.go/src/core/xmlAdditionalProps.d.ts → src/codegen/core/xml-additional-props.d.ts} +2 -2
  70. package/dist/src/codegen/core/xml-additional-props.d.ts.map +1 -0
  71. package/dist/{codegen.go/src/core/xmlAdditionalProps.js → src/codegen/core/xml-additional-props.js} +11 -11
  72. package/dist/src/codegen/core/xml-additional-props.js.map +1 -0
  73. package/dist/{codegen.go/src → src/codegen}/emitter.d.ts +2 -2
  74. package/dist/src/codegen/emitter.d.ts.map +1 -0
  75. package/dist/{codegen.go/src → src/codegen}/emitter.js +58 -54
  76. package/dist/src/codegen/emitter.js.map +1 -0
  77. package/dist/{codegen.go/src → src/codegen}/fake/factory.d.ts +1 -1
  78. package/dist/src/codegen/fake/factory.d.ts.map +1 -0
  79. package/dist/{codegen.go/src → src/codegen}/fake/factory.js +22 -21
  80. package/dist/src/codegen/fake/factory.js.map +1 -0
  81. package/dist/{codegen.go/src → src/codegen}/fake/internal.d.ts +1 -1
  82. package/dist/src/codegen/fake/internal.d.ts.map +1 -0
  83. package/dist/{codegen.go/src → src/codegen}/fake/internal.js +13 -13
  84. package/dist/src/codegen/fake/internal.js.map +1 -0
  85. package/dist/{codegen.go/src → src/codegen}/fake/servers.d.ts +1 -1
  86. package/dist/src/codegen/fake/servers.d.ts.map +1 -0
  87. package/dist/{codegen.go/src → src/codegen}/fake/servers.js +332 -300
  88. package/dist/src/codegen/fake/servers.js.map +1 -0
  89. package/dist/src/codegen/index.d.ts +4 -0
  90. package/dist/src/codegen/index.d.ts.map +1 -0
  91. package/dist/{codegen.go/src → src/codegen}/index.js +3 -3
  92. package/dist/src/codegen/index.js.map +1 -0
  93. package/dist/{codemodel.go/src → src/codemodel}/client.d.ts +25 -25
  94. package/dist/src/codemodel/client.d.ts.map +1 -0
  95. package/dist/{codemodel.go/src → src/codemodel}/client.js +32 -32
  96. package/dist/src/codemodel/client.js.map +1 -0
  97. package/dist/{codemodel.go/src/codeModel.d.ts → src/codemodel/code-model.d.ts} +3 -3
  98. package/dist/src/codemodel/code-model.d.ts.map +1 -0
  99. package/dist/{codemodel.go/src/codeModel.js → src/codemodel/code-model.js} +1 -1
  100. package/dist/src/codemodel/code-model.js.map +1 -0
  101. package/dist/{codemodel.go/src → src/codemodel}/errors.d.ts +5 -5
  102. package/dist/src/codemodel/errors.d.ts.map +1 -0
  103. package/dist/{codemodel.go/src → src/codemodel}/errors.js +1 -1
  104. package/dist/src/codemodel/errors.js.map +1 -0
  105. package/dist/{codemodel.go/src → src/codemodel}/examples.d.ts +13 -13
  106. package/dist/src/codemodel/examples.d.ts.map +1 -0
  107. package/dist/{codemodel.go/src → src/codemodel}/examples.js +10 -10
  108. package/dist/src/codemodel/examples.js.map +1 -0
  109. package/dist/src/codemodel/index.d.ts +9 -0
  110. package/dist/src/codemodel/index.d.ts.map +1 -0
  111. package/dist/{codemodel.go/src → src/codemodel}/index.js +8 -8
  112. package/dist/src/codemodel/index.js.map +1 -0
  113. package/dist/{codemodel.go/src → src/codemodel}/method.d.ts +1 -1
  114. package/dist/src/codemodel/method.d.ts.map +1 -0
  115. package/dist/src/codemodel/method.js.map +1 -0
  116. package/dist/{codemodel.go/src → src/codemodel}/module.d.ts +8 -8
  117. package/dist/src/codemodel/module.d.ts.map +1 -0
  118. package/dist/{codemodel.go/src → src/codemodel}/module.js +12 -11
  119. package/dist/src/codemodel/module.js.map +1 -0
  120. package/dist/{codemodel.go/src → src/codemodel}/param.d.ts +26 -26
  121. package/dist/src/codemodel/param.d.ts.map +1 -0
  122. package/dist/{codemodel.go/src → src/codemodel}/param.js +56 -53
  123. package/dist/src/codemodel/param.js.map +1 -0
  124. package/dist/{codemodel.go/src → src/codemodel}/result.d.ts +15 -15
  125. package/dist/src/codemodel/result.d.ts.map +1 -0
  126. package/dist/{codemodel.go/src → src/codemodel}/result.js +27 -27
  127. package/dist/src/codemodel/result.js.map +1 -0
  128. package/dist/{codemodel.go/src → src/codemodel}/type.d.ts +30 -30
  129. package/dist/src/codemodel/type.d.ts.map +1 -0
  130. package/dist/{codemodel.go/src → src/codemodel}/type.js +77 -76
  131. package/dist/src/codemodel/type.js.map +1 -0
  132. package/dist/{typespec-go/src → src}/emitter.d.ts +2 -3
  133. package/dist/src/emitter.d.ts.map +1 -0
  134. package/dist/{typespec-go/src → src}/emitter.js +56 -45
  135. package/dist/src/emitter.js.map +1 -0
  136. package/dist/src/index.d.ts +3 -0
  137. package/dist/src/index.d.ts.map +1 -0
  138. package/dist/{typespec-go/src → src}/index.js +2 -2
  139. package/dist/src/index.js.map +1 -0
  140. package/dist/{typespec-go/src → src}/lib.d.ts +16 -16
  141. package/dist/src/lib.d.ts.map +1 -0
  142. package/dist/{typespec-go/src → src}/lib.js +60 -61
  143. package/dist/src/lib.js.map +1 -0
  144. package/dist/src/naming/index.d.ts +3 -0
  145. package/dist/src/naming/index.d.ts.map +1 -0
  146. package/dist/{naming.go/src → src/naming}/index.js +2 -2
  147. package/dist/src/naming/index.js.map +1 -0
  148. package/dist/src/naming/mappings.d.ts.map +1 -0
  149. package/dist/src/naming/mappings.js +294 -0
  150. package/dist/src/naming/mappings.js.map +1 -0
  151. package/dist/src/naming/naming.d.ts.map +1 -0
  152. package/dist/{naming.go/src → src/naming}/naming.js +10 -10
  153. package/dist/src/naming/naming.js.map +1 -0
  154. package/dist/{typespec-go/src → src}/tcgcadapter/adapter.d.ts +3 -3
  155. package/dist/src/tcgcadapter/adapter.d.ts.map +1 -0
  156. package/dist/{typespec-go/src → src}/tcgcadapter/adapter.js +35 -31
  157. package/dist/src/tcgcadapter/adapter.js.map +1 -0
  158. package/dist/{typespec-go/src → src}/tcgcadapter/clients.d.ts +1 -1
  159. package/dist/src/tcgcadapter/clients.d.ts.map +1 -0
  160. package/dist/{typespec-go/src → src}/tcgcadapter/clients.js +360 -310
  161. package/dist/src/tcgcadapter/clients.js.map +1 -0
  162. package/dist/{typespec-go/src → src}/tcgcadapter/errors.d.ts +2 -2
  163. package/dist/src/tcgcadapter/errors.d.ts.map +1 -0
  164. package/dist/{typespec-go/src → src}/tcgcadapter/errors.js +1 -1
  165. package/dist/src/tcgcadapter/errors.js.map +1 -0
  166. package/dist/{typespec-go/src → src}/tcgcadapter/helpers.d.ts +3 -3
  167. package/dist/src/tcgcadapter/helpers.d.ts.map +1 -0
  168. package/dist/{typespec-go/src → src}/tcgcadapter/helpers.js +41 -30
  169. package/dist/src/tcgcadapter/helpers.js.map +1 -0
  170. package/dist/{typespec-go/src → src}/tcgcadapter/metadata.d.ts +2 -2
  171. package/dist/src/tcgcadapter/metadata.d.ts.map +1 -0
  172. package/dist/src/tcgcadapter/metadata.js +47 -0
  173. package/dist/src/tcgcadapter/metadata.js.map +1 -0
  174. package/dist/{typespec-go/src → src}/tcgcadapter/types.d.ts +2 -2
  175. package/dist/src/tcgcadapter/types.d.ts.map +1 -0
  176. package/dist/{typespec-go/src → src}/tcgcadapter/types.js +208 -191
  177. package/dist/src/tcgcadapter/types.js.map +1 -0
  178. package/package.json +77 -62
  179. package/dist/codegen.go/src/core/clientFactory.d.ts.map +0 -1
  180. package/dist/codegen.go/src/core/clientFactory.js.map +0 -1
  181. package/dist/codegen.go/src/core/cloudConfig.d.ts.map +0 -1
  182. package/dist/codegen.go/src/core/cloudConfig.js.map +0 -1
  183. package/dist/codegen.go/src/core/constants.d.ts.map +0 -1
  184. package/dist/codegen.go/src/core/constants.js.map +0 -1
  185. package/dist/codegen.go/src/core/errors.d.ts.map +0 -1
  186. package/dist/codegen.go/src/core/errors.js.map +0 -1
  187. package/dist/codegen.go/src/core/example.d.ts.map +0 -1
  188. package/dist/codegen.go/src/core/example.js.map +0 -1
  189. package/dist/codegen.go/src/core/gomod.d.ts.map +0 -1
  190. package/dist/codegen.go/src/core/gomod.js.map +0 -1
  191. package/dist/codegen.go/src/core/helpers.d.ts.map +0 -1
  192. package/dist/codegen.go/src/core/helpers.js.map +0 -1
  193. package/dist/codegen.go/src/core/imports.d.ts.map +0 -1
  194. package/dist/codegen.go/src/core/imports.js.map +0 -1
  195. package/dist/codegen.go/src/core/interfaces.d.ts.map +0 -1
  196. package/dist/codegen.go/src/core/interfaces.js.map +0 -1
  197. package/dist/codegen.go/src/core/license.d.ts.map +0 -1
  198. package/dist/codegen.go/src/core/license.js.map +0 -1
  199. package/dist/codegen.go/src/core/metadata.d.ts +0 -3
  200. package/dist/codegen.go/src/core/metadata.d.ts.map +0 -1
  201. package/dist/codegen.go/src/core/metadata.js.map +0 -1
  202. package/dist/codegen.go/src/core/models.d.ts.map +0 -1
  203. package/dist/codegen.go/src/core/models.js.map +0 -1
  204. package/dist/codegen.go/src/core/operations.d.ts.map +0 -1
  205. package/dist/codegen.go/src/core/operations.js.map +0 -1
  206. package/dist/codegen.go/src/core/options.d.ts.map +0 -1
  207. package/dist/codegen.go/src/core/options.js.map +0 -1
  208. package/dist/codegen.go/src/core/polymorphics.d.ts.map +0 -1
  209. package/dist/codegen.go/src/core/polymorphics.js.map +0 -1
  210. package/dist/codegen.go/src/core/responses.d.ts.map +0 -1
  211. package/dist/codegen.go/src/core/responses.js.map +0 -1
  212. package/dist/codegen.go/src/core/version.d.ts.map +0 -1
  213. package/dist/codegen.go/src/core/version.js.map +0 -1
  214. package/dist/codegen.go/src/core/xmlAdditionalProps.d.ts.map +0 -1
  215. package/dist/codegen.go/src/core/xmlAdditionalProps.js.map +0 -1
  216. package/dist/codegen.go/src/emitter.d.ts.map +0 -1
  217. package/dist/codegen.go/src/emitter.js.map +0 -1
  218. package/dist/codegen.go/src/fake/factory.d.ts.map +0 -1
  219. package/dist/codegen.go/src/fake/factory.js.map +0 -1
  220. package/dist/codegen.go/src/fake/internal.d.ts.map +0 -1
  221. package/dist/codegen.go/src/fake/internal.js.map +0 -1
  222. package/dist/codegen.go/src/fake/servers.d.ts.map +0 -1
  223. package/dist/codegen.go/src/fake/servers.js.map +0 -1
  224. package/dist/codegen.go/src/index.d.ts +0 -4
  225. package/dist/codegen.go/src/index.d.ts.map +0 -1
  226. package/dist/codegen.go/src/index.js.map +0 -1
  227. package/dist/codemodel.go/src/client.d.ts.map +0 -1
  228. package/dist/codemodel.go/src/client.js.map +0 -1
  229. package/dist/codemodel.go/src/codeModel.d.ts.map +0 -1
  230. package/dist/codemodel.go/src/codeModel.js.map +0 -1
  231. package/dist/codemodel.go/src/errors.d.ts.map +0 -1
  232. package/dist/codemodel.go/src/errors.js.map +0 -1
  233. package/dist/codemodel.go/src/examples.d.ts.map +0 -1
  234. package/dist/codemodel.go/src/examples.js.map +0 -1
  235. package/dist/codemodel.go/src/index.d.ts +0 -9
  236. package/dist/codemodel.go/src/index.d.ts.map +0 -1
  237. package/dist/codemodel.go/src/index.js.map +0 -1
  238. package/dist/codemodel.go/src/method.d.ts.map +0 -1
  239. package/dist/codemodel.go/src/method.js.map +0 -1
  240. package/dist/codemodel.go/src/module.d.ts.map +0 -1
  241. package/dist/codemodel.go/src/module.js.map +0 -1
  242. package/dist/codemodel.go/src/param.d.ts.map +0 -1
  243. package/dist/codemodel.go/src/param.js.map +0 -1
  244. package/dist/codemodel.go/src/result.d.ts.map +0 -1
  245. package/dist/codemodel.go/src/result.js.map +0 -1
  246. package/dist/codemodel.go/src/type.d.ts.map +0 -1
  247. package/dist/codemodel.go/src/type.js.map +0 -1
  248. package/dist/naming.go/src/index.d.ts +0 -3
  249. package/dist/naming.go/src/index.d.ts.map +0 -1
  250. package/dist/naming.go/src/index.js.map +0 -1
  251. package/dist/naming.go/src/mappings.d.ts.map +0 -1
  252. package/dist/naming.go/src/mappings.js +0 -294
  253. package/dist/naming.go/src/mappings.js.map +0 -1
  254. package/dist/naming.go/src/naming.d.ts.map +0 -1
  255. package/dist/naming.go/src/naming.js.map +0 -1
  256. package/dist/typespec-go/src/emitter.d.ts.map +0 -1
  257. package/dist/typespec-go/src/emitter.js.map +0 -1
  258. package/dist/typespec-go/src/index.d.ts +0 -3
  259. package/dist/typespec-go/src/index.d.ts.map +0 -1
  260. package/dist/typespec-go/src/index.js.map +0 -1
  261. package/dist/typespec-go/src/lib.d.ts.map +0 -1
  262. package/dist/typespec-go/src/lib.js.map +0 -1
  263. package/dist/typespec-go/src/tcgcadapter/adapter.d.ts.map +0 -1
  264. package/dist/typespec-go/src/tcgcadapter/adapter.js.map +0 -1
  265. package/dist/typespec-go/src/tcgcadapter/clients.d.ts.map +0 -1
  266. package/dist/typespec-go/src/tcgcadapter/clients.js.map +0 -1
  267. package/dist/typespec-go/src/tcgcadapter/errors.d.ts.map +0 -1
  268. package/dist/typespec-go/src/tcgcadapter/errors.js.map +0 -1
  269. package/dist/typespec-go/src/tcgcadapter/helpers.d.ts.map +0 -1
  270. package/dist/typespec-go/src/tcgcadapter/helpers.js.map +0 -1
  271. package/dist/typespec-go/src/tcgcadapter/metadata.d.ts.map +0 -1
  272. package/dist/typespec-go/src/tcgcadapter/metadata.js +0 -21
  273. package/dist/typespec-go/src/tcgcadapter/metadata.js.map +0 -1
  274. package/dist/typespec-go/src/tcgcadapter/types.d.ts.map +0 -1
  275. package/dist/typespec-go/src/tcgcadapter/types.js.map +0 -1
  276. /package/dist/{codegen.go/src → src/codegen}/core/errors.js +0 -0
  277. /package/dist/{codegen.go/src → src/codegen}/core/license.js +0 -0
  278. /package/dist/{codemodel.go/src → src/codemodel}/method.js +0 -0
  279. /package/dist/{naming.go/src → src/naming}/mappings.d.ts +0 -0
  280. /package/dist/{naming.go/src → src/naming}/naming.d.ts +0 -0
@@ -2,13 +2,13 @@
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
3
  * Licensed under the MIT License. See License.txt in the project root for license information.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import * as go from '../../../codemodel.go/src/index.js';
6
- import * as naming from '../../../naming.go/src/naming.js';
7
- import * as helpers from '../core/helpers.js';
8
- import { ImportManager } from '../core/imports.js';
9
- import { fixUpMethodName } from '../core/operations.js';
10
- import { generateServerInternal, RequiredHelpers } from './internal.js';
11
- import { CodegenError } from '../core/errors.js';
5
+ import * as go from "../../codemodel/index.js";
6
+ import * as naming from "../../naming/naming.js";
7
+ import { CodegenError } from "../core/errors.js";
8
+ import * as helpers from "../core/helpers.js";
9
+ import { ImportManager } from "../core/imports.js";
10
+ import { fixUpMethodName } from "../core/operations.js";
11
+ import { generateServerInternal, RequiredHelpers } from "./internal.js";
12
12
  // contains the generated content for all servers and the required helpers
13
13
  export class ServerContent {
14
14
  servers;
@@ -31,7 +31,7 @@ export class OperationGroupContent {
31
31
  const requiredHelpers = new RequiredHelpers();
32
32
  export function getServerName(client) {
33
33
  // for the fake server, we use the suffix Server instead of Client
34
- return naming.capitalize(client.name.replace(/[C|c]lient$/, 'Server'));
34
+ return naming.capitalize(client.name.replace(/[C|c]lient$/, "Server"));
35
35
  }
36
36
  /**
37
37
  * Generates the contents for the *_server.go files.
@@ -50,10 +50,10 @@ export function generateServers(pkg, target) {
50
50
  // the list of packages to import
51
51
  const imports = new ImportManager(pkg);
52
52
  // add standard imports
53
- imports.add('errors');
54
- imports.add('fmt');
55
- imports.add('net/http');
56
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
53
+ imports.add("errors");
54
+ imports.add("fmt");
55
+ imports.add("net/http");
56
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
57
57
  const serverName = getServerName(client);
58
58
  let content;
59
59
  content = `// ${serverName} is a fake server for instances of the ${go.getTypeDeclaration(client, pkg)} type.\n`;
@@ -83,25 +83,25 @@ export function generateServers(pkg, target) {
83
83
  }
84
84
  let serverResponse;
85
85
  switch (method.kind) {
86
- case 'lroMethod':
87
- case 'lroPageableMethod':
86
+ case "lroMethod":
87
+ case "lroPageableMethod":
88
88
  let respType = go.getTypeDeclaration(method.returns, pkg);
89
- if (method.kind === 'lroPageableMethod') {
89
+ if (method.kind === "lroPageableMethod") {
90
90
  respType = `azfake.PagerResponder[${respType}]`;
91
91
  }
92
92
  serverResponse = `resp azfake.PollerResponder[${respType}], errResp azfake.ErrorResponder`;
93
93
  break;
94
- case 'method':
94
+ case "method":
95
95
  serverResponse = `resp azfake.Responder[${go.getTypeDeclaration(method.returns, pkg)}], errResp azfake.ErrorResponder`;
96
96
  break;
97
- case 'pageableMethod':
97
+ case "pageableMethod":
98
98
  serverResponse = `resp azfake.PagerResponder[${go.getTypeDeclaration(method.returns, pkg)}]`;
99
99
  break;
100
100
  }
101
101
  const operationName = fixUpMethodName(method);
102
102
  content += `${indent.get()}// ${operationName} is the fake for method ${client.name}.${operationName}\n`;
103
103
  const successCodes = new Array();
104
- if (method.returns.result?.kind === 'anyResult') {
104
+ if (method.returns.result?.kind === "anyResult") {
105
105
  for (const httpStatus of getMethodStatusCodes(method)) {
106
106
  const result = method.returns.result.httpStatusCodeType[httpStatus];
107
107
  if (!result) {
@@ -120,26 +120,27 @@ export function generateServers(pkg, target) {
120
120
  for (const statusCode of getMethodStatusCodes(method)) {
121
121
  successCodes.push(`${helpers.formatStatusCode(statusCode)}`);
122
122
  }
123
- content += `${indent.get()}// HTTP status codes to indicate success: ${successCodes.join(', ')}\n`;
123
+ content += `${indent.get()}// HTTP status codes to indicate success: ${successCodes.join(", ")}\n`;
124
124
  }
125
125
  content += `${indent.get()}${operationName} func(${getAPIParametersSig(pkg, method, imports)}) (${serverResponse})\n\n`;
126
126
  finalMethods.push(method);
127
127
  switch (method.kind) {
128
- case 'lroMethod':
129
- case 'lroPageableMethod':
128
+ case "lroMethod":
129
+ case "lroPageableMethod":
130
130
  ++countLROs;
131
131
  break;
132
- case 'pageableMethod':
132
+ case "pageableMethod":
133
133
  ++countPagers;
134
134
  break;
135
135
  }
136
136
  }
137
- content += '}\n\n';
137
+ content += "}\n\n";
138
138
  ///////////////////////////////////////////////////////////////////////////
139
139
  const serverTransport = `${serverName}Transport`;
140
140
  content += `// New${serverTransport} creates a new instance of ${serverTransport} with the provided implementation.\n`;
141
141
  content += `// The returned ${serverTransport} instance is connected to an instance of ${go.getTypeDeclaration(client, pkg)} via the\n`;
142
- content += "// azcore.ClientOptions.Transporter field in the client's constructor parameters.\n";
142
+ content +=
143
+ "// azcore.ClientOptions.Transporter field in the client's constructor parameters.\n";
143
144
  content += `func New${serverTransport}(srv *${serverName}) *${serverTransport} {\n`;
144
145
  if (countLROs === 0 && countPagers === 0) {
145
146
  content += `${indent.get()}return &${serverTransport}{srv: srv}\n}\n\n`;
@@ -151,15 +152,15 @@ export function generateServers(pkg, target) {
151
152
  for (const method of finalMethods) {
152
153
  let respType = go.getTypeDeclaration(method.returns, pkg);
153
154
  switch (method.kind) {
154
- case 'lroMethod':
155
- case 'lroPageableMethod':
156
- if (method.kind === 'lroPageableMethod') {
155
+ case "lroMethod":
156
+ case "lroPageableMethod":
157
+ if (method.kind === "lroPageableMethod") {
157
158
  respType = `azfake.PagerResponder[${go.getTypeDeclaration(method.returns, pkg)}]`;
158
159
  }
159
160
  requiredHelpers.tracker = true;
160
161
  content += `${indent.get()}${naming.uncapitalize(fixUpMethodName(method))}: newTracker[azfake.PollerResponder[${respType}]](),\n`;
161
162
  break;
162
- case 'pageableMethod':
163
+ case "pageableMethod":
163
164
  requiredHelpers.tracker = true;
164
165
  content += `${indent.get()}${naming.uncapitalize(fixUpMethodName(method))}: newTracker[azfake.PagerResponder[${respType}]](),\n`;
165
166
  break;
@@ -175,7 +176,7 @@ export function generateServers(pkg, target) {
175
176
  // add server transports for client accessors
176
177
  if (finalSubClients.length > 0) {
177
178
  requiredHelpers.initServer = true;
178
- imports.add('sync');
179
+ imports.add("sync");
179
180
  content += `${indent.get()}trMu sync.Mutex\n`;
180
181
  for (const subClient of finalSubClients) {
181
182
  const serverName = getServerName(subClient);
@@ -186,21 +187,21 @@ export function generateServers(pkg, target) {
186
187
  // create state machines for any pager/poller operations
187
188
  let respType = go.getTypeDeclaration(method.returns, pkg);
188
189
  switch (method.kind) {
189
- case 'lroMethod':
190
- case 'lroPageableMethod':
191
- if (method.kind === 'lroPageableMethod') {
190
+ case "lroMethod":
191
+ case "lroPageableMethod":
192
+ if (method.kind === "lroPageableMethod") {
192
193
  respType = `azfake.PagerResponder[${go.getTypeDeclaration(method.returns, pkg)}]`;
193
194
  }
194
195
  requiredHelpers.tracker = true;
195
196
  content += `${indent.get()}${naming.uncapitalize(fixUpMethodName(method))} *tracker[azfake.PollerResponder[${respType}]]\n`;
196
197
  break;
197
- case 'pageableMethod':
198
+ case "pageableMethod":
198
199
  requiredHelpers.tracker = true;
199
200
  content += `${indent.get()}${naming.uncapitalize(fixUpMethodName(method))} *tracker[azfake.PagerResponder[${go.getTypeDeclaration(method.returns, pkg)}]]\n`;
200
201
  break;
201
202
  }
202
203
  }
203
- content += '}\n\n';
204
+ content += "}\n\n";
204
205
  content += generateServerTransportDo(serverTransport, client, finalSubClients, finalMethods, indent);
205
206
  content += generateServerTransportClientDispatch(serverTransport, finalSubClients, imports, indent);
206
207
  content += generateServerTransportMethodDispatch(serverTransport, client, finalMethods, indent);
@@ -216,7 +217,7 @@ export function generateServers(pkg, target) {
216
217
  text += content;
217
218
  operations.push(new OperationGroupContent(serverName, text));
218
219
  }
219
- if (target === 'azure-arm' && pkg.parent.clients.length > 0) {
220
+ if (target === "azure-arm" && pkg.parent.clients.length > 0) {
220
221
  // ARM server factory uses the initServer func
221
222
  requiredHelpers.initServer = true;
222
223
  }
@@ -226,8 +227,8 @@ function getTransportInterceptorVarName(client) {
226
227
  return `${helpers.camelCase(getServerName(client))}TransportInterceptor`;
227
228
  }
228
229
  // method names for fakes dispatching
229
- const dispatchMethodFake = 'dispatchToMethodFake';
230
- const dispatchToClientFake = 'dispatchToClientFake';
230
+ const dispatchMethodFake = "dispatchToMethodFake";
231
+ const dispatchToClientFake = "dispatchToClientFake";
231
232
  function generateServerTransportDo(serverTransport, client, finalSubClients, finalMethods, indent) {
232
233
  const receiverName = serverTransport[0].toLowerCase();
233
234
  let content = `// Do implements the policy.Transporter interface for ${serverTransport}.\n`;
@@ -252,12 +253,12 @@ function generateServerTransportDo(serverTransport, client, finalSubClients, fin
252
253
  else {
253
254
  content += `${indent.get()}return ${receiverName}.${dispatchMethodFake}(req, method)\n`;
254
255
  }
255
- content += '}\n\n'; // end Do
256
+ content += "}\n\n"; // end Do
256
257
  return content;
257
258
  }
258
259
  function generateServerTransportClientDispatch(serverTransport, subClients, imports, indent) {
259
260
  if (subClients.length === 0) {
260
- return '';
261
+ return "";
261
262
  }
262
263
  /** gathers all children, not just immediate children, in breadth first order */
263
264
  const getAllSubClientsForCase = function (client) {
@@ -290,7 +291,7 @@ function generateServerTransportClientDispatch(serverTransport, subClients, impo
290
291
  return result;
291
292
  };
292
293
  const receiverName = serverTransport[0].toLowerCase();
293
- imports.add('strings');
294
+ imports.add("strings");
294
295
  let content = `func (${receiverName} *${serverTransport}) ${dispatchToClientFake}(req *http.Request, client string) (*http.Response, error) {\n`;
295
296
  content += `${indent.get()}var resp *http.Response\n${indent.get()}var err error\n\n`;
296
297
  content += `${indent.get()}switch client {\n`;
@@ -299,7 +300,7 @@ function generateServerTransportClientDispatch(serverTransport, subClients, impo
299
300
  const subClientsForCase = getAllSubClientsForCase(subClient);
300
301
  const allClientNamesForCase = new Array(`"${subClient.name}"`);
301
302
  allClientNamesForCase.push(...subClientsForCase.map((each) => `"${each.name}"`));
302
- content += `${indent.get()}case ${allClientNamesForCase.join(', ')}:\n`;
303
+ content += `${indent.get()}case ${allClientNamesForCase.join(", ")}:\n`;
303
304
  const serverName = getServerName(subClient);
304
305
  indent.push();
305
306
  content += `${indent.get()}initServer(&${receiverName}.trMu, &${receiverName}.tr${serverName}, func() *${serverName}Transport {\n`;
@@ -316,7 +317,7 @@ function generateServerTransportClientDispatch(serverTransport, subClients, impo
316
317
  }
317
318
  function generateServerTransportMethodDispatch(serverTransport, client, finalMethods, indent) {
318
319
  if (finalMethods.length === 0) {
319
- return '';
320
+ return "";
320
321
  }
321
322
  const receiverName = serverTransport[0].toLowerCase();
322
323
  let content = `func (${receiverName} *${serverTransport}) ${dispatchMethodFake}(req *http.Request, method string) (*http.Response, error) {\n`;
@@ -363,66 +364,66 @@ function generateServerTransportMethodDispatch(serverTransport, client, finalMet
363
364
  */
364
365
  function generateServerTransportMethods(pkg, serverTransport, finalMethods, imports, indent) {
365
366
  if (finalMethods.length === 0) {
366
- return '';
367
+ return "";
367
368
  }
368
369
  imports.addForPkg(pkg.parent);
369
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/fake', 'azfake');
370
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server');
371
- imports.add('slices');
370
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/fake", "azfake");
371
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server");
372
+ imports.add("slices");
372
373
  const receiverName = serverTransport[0].toLowerCase();
373
- let content = '';
374
+ let content = "";
374
375
  for (const method of finalMethods) {
375
376
  content += `func (${receiverName} *${serverTransport}) dispatch${fixUpMethodName(method)}(req *http.Request) (*http.Response, error) {\n`;
376
377
  content += `${indent.get()}if ${receiverName}.srv.${fixUpMethodName(method)} == nil {\n`;
377
378
  content += `${indent.push().get()}return nil, &nonRetriableError{errors.New("fake for method ${fixUpMethodName(method)} not implemented")}\n`;
378
379
  content += `${indent.pop().get()}}\n`;
379
380
  switch (method.kind) {
380
- case 'lroMethod':
381
- case 'lroPageableMethod':
381
+ case "lroMethod":
382
+ case "lroPageableMethod":
382
383
  // must check LRO before pager as you can have paged LROs
383
384
  content += dispatchForLROBody(pkg, receiverName, method, imports, indent);
384
385
  break;
385
- case 'method': {
386
+ case "method": {
386
387
  content += dispatchForOperationBody(pkg, receiverName, method, imports, indent);
387
388
  content += `${indent.get()}respContent := server.GetResponseContent(respr)\n`;
388
389
  const formattedStatusCodes = helpers.formatStatusCodes(method.httpStatusCodes);
389
390
  content += `${indent.get()}if !slices.Contains([]int{${formattedStatusCodes}}, respContent.HTTPStatus) {\n`;
390
391
  content += `${indent.push().get()}return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are ${formattedStatusCodes}", respContent.HTTPStatus)}\n`;
391
392
  content += `${indent.pop().get()}}\n`;
392
- if (!method.returns.result || method.returns.result.kind === 'headAsBooleanResult') {
393
+ if (!method.returns.result || method.returns.result.kind === "headAsBooleanResult") {
393
394
  content += `${indent.get()}resp, err := server.NewResponse(respContent, req, nil)\n`;
394
395
  }
395
- else if (method.returns.result.kind === 'anyResult') {
396
+ else if (method.returns.result.kind === "anyResult") {
396
397
  content += `${indent.get()}resp, err := server.MarshalResponseAs${method.returns.result.format}(respContent, server.GetResponse(respr).${getResultFieldName(method.returns.result)}, req)\n`;
397
398
  }
398
- else if (method.returns.result.kind === 'binaryResult') {
399
+ else if (method.returns.result.kind === "binaryResult") {
399
400
  content += `${indent.get()}resp, err := server.NewResponse(respContent, req, &server.ResponseOptions{\n`;
400
401
  indent.push();
401
402
  content += `${indent.get()}Body: server.GetResponse(respr).${getResultFieldName(method.returns.result)},\n`;
402
403
  content += `${indent.get()}ContentType: req.Header.Get("Content-Type"),\n`;
403
404
  content += `${indent.pop().get()}})\n`;
404
405
  }
405
- else if (method.returns.result.kind === 'monomorphicResult') {
406
- if (method.returns.result.monomorphicType.kind === 'encodedBytes') {
406
+ else if (method.returns.result.kind === "monomorphicResult") {
407
+ if (method.returns.result.monomorphicType.kind === "encodedBytes") {
407
408
  const encoding = method.returns.result.monomorphicType.encoding;
408
409
  content += `${indent.get()}resp, err := server.MarshalResponseAsByteArray(respContent, server.GetResponse(respr).${getResultFieldName(method.returns.result)}, runtime.Base64${encoding}Format, req)\n`;
409
410
  }
410
- else if (method.returns.result.monomorphicType.kind === 'rawJSON') {
411
- imports.add('bytes');
412
- imports.add('io');
411
+ else if (method.returns.result.monomorphicType.kind === "rawJSON") {
412
+ imports.add("bytes");
413
+ imports.add("io");
413
414
  content += `${indent.get()}resp, err := server.NewResponse(respContent, req, &server.ResponseOptions{\n`;
414
415
  indent.push();
415
416
  content += `${indent.get()}Body: io.NopCloser(bytes.NewReader(server.GetResponse(respr).RawJSON)),\n`;
416
417
  content += `${indent.get()}ContentType: "application/json",\n`;
417
418
  content += `${indent.pop().get()}})\n`;
418
419
  }
419
- else if (method.returns.result.format === 'Text') {
420
+ else if (method.returns.result.format === "Text") {
420
421
  let contentToMarshal;
421
422
  const respField = getResultFieldName(method.returns.result);
422
423
  const getResponseField = `server.GetResponse(respr).${respField}`;
423
424
  switch (method.returns.result.monomorphicType.kind) {
424
- case 'scalar': {
425
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/to');
425
+ case "scalar": {
426
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
426
427
  // create a local var that will hold the string-formatted scalar
427
428
  contentToMarshal = `formatted${respField}`;
428
429
  content += `${indent.get()}var ${contentToMarshal} *string\n`;
@@ -435,28 +436,30 @@ function generateServerTransportMethods(pkg, serverTransport, finalMethods, impo
435
436
  })}\n`;
436
437
  break;
437
438
  }
438
- case 'string':
439
+ case "string":
439
440
  contentToMarshal = getResponseField;
440
441
  break;
441
442
  default:
442
- throw new CodegenError('UnsupportedTsp', `unsupported text return kind ${method.returns.result.monomorphicType.kind} for method ${method.receiver.type.name}.${method.name}`);
443
+ throw new CodegenError("UnsupportedTsp", `unsupported text return kind ${method.returns.result.monomorphicType.kind} for method ${method.receiver.type.name}.${method.name}`);
443
444
  }
444
445
  content += `${indent.get()}resp, err := server.MarshalResponseAsText(respContent, ${contentToMarshal}, req)\n`;
445
446
  }
446
447
  else {
447
448
  let respField = `.${getResultFieldName(method.returns.result)}`;
448
- if (method.returns.result.format === 'XML' && method.returns.result.monomorphicType.kind === 'slice') {
449
- respField = '';
449
+ if (method.returns.result.format === "XML" &&
450
+ method.returns.result.monomorphicType.kind === "slice") {
451
+ respField = "";
450
452
  }
451
453
  let responseField = `server.GetResponse(respr)${respField}`;
452
- if (method.returns.result.monomorphicType.kind === 'time') {
453
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime');
454
+ if (method.returns.result.monomorphicType.kind === "time") {
455
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
454
456
  responseField = `(*datetime.${method.returns.result.monomorphicType.format})(${responseField})`;
455
457
  }
456
458
  content += `${indent.get()}resp, err := server.MarshalResponseAs${method.returns.result.format}(respContent, ${responseField}, req)\n`;
457
459
  }
458
460
  }
459
- else if (method.returns.result.kind === 'modelResult' || method.returns.result.kind === 'polymorphicResult') {
461
+ else if (method.returns.result.kind === "modelResult" ||
462
+ method.returns.result.kind === "polymorphicResult") {
460
463
  const respField = `.${getResultFieldName(method.returns.result)}`;
461
464
  const responseField = `server.GetResponse(respr)${respField}`;
462
465
  content += `${indent.get()}resp, err := server.MarshalResponseAs${method.returns.result.format}(respContent, ${responseField}, req)\n`;
@@ -466,7 +469,7 @@ function generateServerTransportMethods(pkg, serverTransport, finalMethods, impo
466
469
  content += `${indent.pop().get()}}\n`;
467
470
  // propagate any header response values into the *http.Response
468
471
  for (const header of method.returns.headers) {
469
- if (header.kind === 'headerMapResponse') {
472
+ if (header.kind === "headerMapResponse") {
470
473
  content += `${indent.get()}for k, v := range server.GetResponse(respr).${header.fieldName} {\n`;
471
474
  content += `${indent.push().get()}if v != nil {\n`;
472
475
  content += `${indent.push().get()}resp.Header.Set("${header.headerName}"+k, *v)\n`;
@@ -475,20 +478,20 @@ function generateServerTransportMethods(pkg, serverTransport, finalMethods, impo
475
478
  }
476
479
  else {
477
480
  content += `${indent.get()}if val := server.GetResponse(respr).${header.fieldName}; val != nil {\n`;
478
- content += `${indent.push().get()}resp.Header.Set("${header.headerName}", ${helpers.formatValue('val', header.type, imports, true)})\n`;
481
+ content += `${indent.push().get()}resp.Header.Set("${header.headerName}", ${helpers.formatValue("val", header.type, imports, true)})\n`;
479
482
  content += `${indent.pop().get()}}\n`;
480
483
  }
481
484
  }
482
485
  content += `${indent.get()}return resp, nil\n`;
483
486
  break;
484
487
  }
485
- case 'pageableMethod':
488
+ case "pageableMethod":
486
489
  content += dispatchForPagerBody(pkg, receiverName, method, imports, indent);
487
490
  break;
488
491
  default:
489
492
  method;
490
493
  }
491
- content += '}\n\n';
494
+ content += "}\n\n";
492
495
  }
493
496
  return content;
494
497
  }
@@ -506,9 +509,9 @@ function generateServerTransportMethods(pkg, serverTransport, finalMethods, impo
506
509
  function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
507
510
  const methodParamGroups = helpers.getMethodParamGroups(method);
508
511
  const numPathParams = methodParamGroups.pathParams.filter((each) => !go.isLiteralParameter(each.style)).length;
509
- let content = '';
512
+ let content = "";
510
513
  if (numPathParams > 0) {
511
- imports.add('regexp');
514
+ imports.add("regexp");
512
515
  content += `${indent.get()}const regexStr = \`${createPathParamsRegex(method, methodParamGroups.pathParams)}\`\n`;
513
516
  content += `${indent.get()}regex := regexp.MustCompile(regexStr)\n`;
514
517
  content += `${indent.get()}matches := regex.FindStringSubmatch(req.URL.EscapedPath())\n`;
@@ -518,7 +521,7 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
518
521
  content += `${indent.push().get()}return nil, fmt.Errorf("failed to parse path %s", req.URL.Path)\n${indent.pop().get()}}\n`;
519
522
  }
520
523
  const allQueryParams = methodParamGroups.encodedQueryParams.concat(methodParamGroups.unencodedQueryParams);
521
- if (allQueryParams.find((each) => each.location === 'method' && !go.isLiteralParameter(each.style))) {
524
+ if (allQueryParams.find((each) => each.location === "method" && !go.isLiteralParameter(each.style))) {
522
525
  content += `${indent.get()}qp := req.URL.Query()\n`;
523
526
  }
524
527
  // note that these are mutually exclusive
@@ -528,32 +531,32 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
528
531
  const partialBodyParams = methodParamGroups.partialBodyParams;
529
532
  if (bodyParam) {
530
533
  switch (bodyParam.bodyFormat) {
531
- case 'JSON':
532
- case 'XML':
534
+ case "JSON":
535
+ case "XML":
533
536
  if (bodyParam && !go.isLiteralParameter(bodyParam.style)) {
534
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/fake', 'azfake');
537
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/fake", "azfake");
535
538
  switch (bodyParam.type.kind) {
536
- case 'encodedBytes':
539
+ case "encodedBytes":
537
540
  content += `${indent.get()}body, err := server.UnmarshalRequestAsByteArray(req, runtime.Base64${bodyParam.type.encoding}Format)\n`;
538
541
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
539
542
  break;
540
- case 'interface':
543
+ case "interface":
541
544
  requiredHelpers.readRequestBody = true;
542
545
  content += `${indent.get()}raw, err := readRequestBody(req)\n`;
543
546
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
544
547
  content += `${indent.get()}body, err := unmarshal${bodyParam.type.name}(raw)\n`;
545
548
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
546
549
  break;
547
- case 'rawJSON':
548
- imports.add('io');
550
+ case "rawJSON":
551
+ imports.add("io");
549
552
  content += `${indent.get()}body, err := io.ReadAll(req.Body)\n`;
550
553
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
551
554
  content += `${indent.get()}req.Body.Close()\n`;
552
555
  break;
553
556
  default: {
554
557
  let bodyTypeName = go.getTypeDeclaration(bodyParam.type, pkg);
555
- if (bodyParam.type.kind === 'time') {
556
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime');
558
+ if (bodyParam.type.kind === "time") {
559
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
557
560
  bodyTypeName = `datetime.${bodyParam.type.format}`;
558
561
  }
559
562
  content += `${indent.get()}body, err := server.UnmarshalRequestAs${bodyParam.bodyFormat}[${bodyTypeName}](req)\n`;
@@ -562,9 +565,9 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
562
565
  }
563
566
  }
564
567
  break;
565
- case 'Text':
568
+ case "Text":
566
569
  if (bodyParam && !go.isLiteralParameter(bodyParam.style)) {
567
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/fake', 'azfake');
570
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/fake", "azfake");
568
571
  content += `${indent.get()}body, err := server.UnmarshalRequestAsText(req)\n`;
569
572
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
570
573
  }
@@ -573,9 +576,9 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
573
576
  // nothing to do for binary media type
574
577
  }
575
578
  else if (multipartBodyParams.length > 0) {
576
- imports.add('io');
577
- imports.add('mime');
578
- imports.add('mime/multipart');
579
+ imports.add("io");
580
+ imports.add("mime");
581
+ imports.add("mime/multipart");
579
582
  content += `${indent.get()}_, params, err := mime.ParseMediaType(req.Header.Get("Content-Type"))\n`;
580
583
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
581
584
  content += `${indent.get()}reader := multipart.NewReader(req.Body, params["boundary"])\n`;
@@ -594,39 +597,39 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
594
597
  // i.e. the result from the parsing doesn't require further conversion (e.g. casting)
595
598
  // otherwise the parsed value is in a local var named parsed.
596
599
  const parsePrimitiveType = function (typeName, boolTarget) {
597
- let parseErr = 'parseErr';
600
+ let parseErr = "parseErr";
598
601
  const parseResults = `parsed, ${parseErr}`;
599
- let parsingCode = '';
600
- imports.add('strconv');
602
+ let parsingCode;
603
+ imports.add("strconv");
601
604
  switch (typeName) {
602
- case 'bool':
605
+ case "bool":
603
606
  if (boolTarget) {
604
607
  // we reuse the err var declared earlier when calling reader.NextPart()
605
608
  parsingCode = `${indent.get()}${boolTarget}, err = strconv.ParseBool(string(content))\n`;
606
- parseErr = 'err';
609
+ parseErr = "err";
607
610
  }
608
611
  else {
609
612
  parsingCode = `${indent.get()}${parseResults} := strconv.ParseBool(string(content))\n`;
610
613
  }
611
614
  break;
612
- case 'float32':
613
- case 'float64':
615
+ case "float32":
616
+ case "float64":
614
617
  parsingCode = `${indent.get()}${parseResults} := strconv.ParseFloat(string(content), ${helpers.getBitSizeForNumber(typeName)})\n`;
615
618
  break;
616
- case 'int8':
617
- case 'int16':
618
- case 'int32':
619
- case 'int64':
619
+ case "int8":
620
+ case "int16":
621
+ case "int32":
622
+ case "int64":
620
623
  parsingCode = `${indent.get()}${parseResults} := strconv.ParseInt(string(content), 10, ${helpers.getBitSizeForNumber(typeName)})\n`;
621
624
  break;
622
625
  default:
623
- throw new CodegenError('InternalError', `unhandled multipart parameter primitive type ${typeName}`);
626
+ throw new CodegenError("InternalError", `unhandled multipart parameter primitive type ${typeName}`);
624
627
  }
625
628
  parsingCode += `${indent.get()}if ${parseErr} != nil {\n${indent.push().get()}return nil, ${parseErr}\n${indent.pop().get()}}\n`;
626
629
  return parsingCode;
627
630
  };
628
631
  const isModelType = function (type) {
629
- return type.kind === 'model' || type.kind === 'polymorphicModel';
632
+ return type.kind === "model" || type.kind === "polymorphicModel";
630
633
  };
631
634
  const emitCase = function (caseValue, paramVar, type, destIsByValue) {
632
635
  let caseContent = `${indent.get()}case "${caseValue}":\n`;
@@ -635,61 +638,61 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
635
638
  caseContent += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
636
639
  let assignedValue;
637
640
  if (isModelType(helpers.recursiveUnwrapMapSlice(type))) {
638
- imports.add('encoding/json');
641
+ imports.add("encoding/json");
639
642
  caseContent += `${indent.get()}if err = json.Unmarshal(content, &${paramVar}); err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
640
643
  }
641
- else if (type.kind === 'readSeekCloser') {
642
- imports.add('bytes');
643
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming');
644
- assignedValue = 'streaming.NopCloser(bytes.NewReader(content))';
644
+ else if (type.kind === "readSeekCloser") {
645
+ imports.add("bytes");
646
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming");
647
+ assignedValue = "streaming.NopCloser(bytes.NewReader(content))";
645
648
  }
646
- else if (type.kind === 'constant') {
649
+ else if (type.kind === "constant") {
647
650
  let from;
648
651
  switch (type.type) {
649
- case 'bool':
650
- case 'float32':
651
- case 'float64':
652
- case 'int32':
653
- case 'int64':
652
+ case "bool":
653
+ case "float32":
654
+ case "float64":
655
+ case "int32":
656
+ case "int64":
654
657
  caseContent += parsePrimitiveType(type.type);
655
- from = 'parsed';
658
+ from = "parsed";
656
659
  break;
657
- case 'string':
658
- from = 'content';
660
+ case "string":
661
+ from = "content";
659
662
  break;
660
663
  }
661
664
  assignedValue = `${go.getTypeDeclaration(type, pkg)}(${from})`;
662
665
  }
663
- else if (type.kind === 'scalar') {
666
+ else if (type.kind === "scalar") {
664
667
  switch (type.type) {
665
- case 'bool':
666
- imports.add('strconv');
668
+ case "bool":
669
+ imports.add("strconv");
667
670
  // ParseBool happens in place, so no need to set assignedValue
668
671
  caseContent += parsePrimitiveType(type.type, paramVar);
669
672
  break;
670
- case 'float32':
671
- case 'float64':
672
- case 'int8':
673
- case 'int16':
674
- case 'int32':
675
- case 'int64':
673
+ case "float32":
674
+ case "float64":
675
+ case "int8":
676
+ case "int16":
677
+ case "int32":
678
+ case "int64":
676
679
  caseContent += parsePrimitiveType(type.type);
677
680
  assignedValue = `${type.type}(parsed)`;
678
681
  break;
679
682
  default:
680
- throw new CodegenError('InternalError', `unhandled multipart parameter primitive type ${type.type}`);
683
+ throw new CodegenError("InternalError", `unhandled multipart parameter primitive type ${type.type}`);
681
684
  }
682
685
  }
683
- else if (type.kind === 'string') {
684
- assignedValue = 'string(content)';
686
+ else if (type.kind === "string") {
687
+ assignedValue = "string(content)";
685
688
  }
686
- else if (helpers.recursiveUnwrapMapSlice(type).kind === 'multipartContent') {
687
- imports.add('bytes');
688
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming');
689
- const bodyContent = 'streaming.NopCloser(bytes.NewReader(content))';
689
+ else if (helpers.recursiveUnwrapMapSlice(type).kind === "multipartContent") {
690
+ imports.add("bytes");
691
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming");
692
+ const bodyContent = "streaming.NopCloser(bytes.NewReader(content))";
690
693
  const contentType = 'part.Header.Get("Content-Type")';
691
- const filename = 'part.FileName()';
692
- if (type.kind === 'slice') {
694
+ const filename = "part.FileName()";
695
+ if (type.kind === "slice") {
693
696
  caseContent += `${indent.get()}${paramVar} = append(${paramVar}, streaming.MultipartContent{\n`;
694
697
  indent.push();
695
698
  caseContent += `${indent.get()}Body: ${bodyContent},\n`;
@@ -703,27 +706,27 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
703
706
  caseContent += `${indent.get()}${paramVar}.Filename = ${filename}\n`;
704
707
  }
705
708
  }
706
- else if (type.kind === 'slice') {
707
- if (type.elementType.kind === 'readSeekCloser') {
708
- imports.add('bytes');
709
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming');
709
+ else if (type.kind === "slice") {
710
+ if (type.elementType.kind === "readSeekCloser") {
711
+ imports.add("bytes");
712
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/streaming");
710
713
  assignedValue = `append(${paramVar}, streaming.NopCloser(bytes.NewReader(content)))`;
711
714
  }
712
715
  else {
713
- throw new CodegenError('InternalError', `uhandled multipart parameter array element kind ${type.elementType.kind}`);
716
+ throw new CodegenError("InternalError", `unhandled multipart parameter array element kind ${type.elementType.kind}`);
714
717
  }
715
718
  }
716
- else if (type.kind === 'encodedBytes') {
717
- imports.add('encoding/base64');
719
+ else if (type.kind === "encodedBytes") {
720
+ imports.add("encoding/base64");
718
721
  caseContent += `${indent.get()}${paramVar}, err = base64.${type.encoding}Encoding.DecodeString(string(content))\n`;
719
722
  caseContent += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
720
723
  }
721
724
  else {
722
- throw new CodegenError('InternalError', `uhandled multipart parameter kind ${type.kind}`);
725
+ throw new CodegenError("InternalError", `unhandled multipart parameter kind ${type.kind}`);
723
726
  }
724
727
  if (assignedValue) {
725
728
  if (!destIsByValue) {
726
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/to');
729
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
727
730
  assignedValue = `to.Ptr(${assignedValue})`;
728
731
  }
729
732
  caseContent += `${indent.get()}${paramVar} = ${assignedValue}\n`;
@@ -759,14 +762,14 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
759
762
  content += `${indent.get()}case "${param.formDataName}":\n`;
760
763
  let assignedValue;
761
764
  switch (param.type.kind) {
762
- case 'constant':
765
+ case "constant":
763
766
  assignedValue = `${go.getTypeDeclaration(param.type, pkg)}(req.FormValue(key))`;
764
767
  break;
765
- case 'string':
766
- assignedValue = 'req.FormValue(key)';
768
+ case "string":
769
+ assignedValue = "req.FormValue(key)";
767
770
  break;
768
771
  default:
769
- throw new CodegenError('InternalError', `uhandled form parameter kind ${param.type.kind}`);
772
+ throw new CodegenError("InternalError", `unhandled form parameter kind ${param.type.kind}`);
770
773
  }
771
774
  content += `${indent.push().get()}${param.name} = ${assignedValue}\n`;
772
775
  indent.pop();
@@ -792,7 +795,7 @@ function dispatchForOperationBody(pkg, receiverName, method, imports, indent) {
792
795
  result.params.set(partialBodyParam.name, `${helpers.star(partialBodyParam.byValue)}body.${naming.capitalize(partialBodyParam.name)}`);
793
796
  }
794
797
  const apiCall = `:= ${receiverName}.srv.${fixUpMethodName(method)}(${populateApiParams(pkg, method, result.params, imports)})`;
795
- if (method.kind === 'pageableMethod') {
798
+ if (method.kind === "pageableMethod") {
796
799
  content += `resp ${apiCall}\n`;
797
800
  return content;
798
801
  }
@@ -805,10 +808,10 @@ function getMethodStatusCodes(method) {
805
808
  // NOTE: don't modify the original array!
806
809
  const statusCodes = Array.from(method.httpStatusCodes);
807
810
  switch (method.kind) {
808
- case 'lroMethod':
809
- case 'lroPageableMethod':
811
+ case "lroMethod":
812
+ case "lroPageableMethod":
810
813
  if (!statusCodes.includes(200)) {
811
- // pollers always include 200 as an acceptible status code so we emulate that here
814
+ // pollers always include 200 as an acceptable status code so we emulate that here
812
815
  statusCodes.unshift(200);
813
816
  }
814
817
  if (!method.returns.result && !statusCodes.includes(204)) {
@@ -876,8 +879,8 @@ function dispatchForPagerBody(pkg, receiverName, method, imports, indent) {
876
879
  indent.push();
877
880
  content += `${indent.get()}${localVarName} = &resp\n`;
878
881
  content += `${indent.get()}${operationStateMachine}.add(req, ${localVarName})\n`;
879
- if (method.strategy?.kind === 'nextLink') {
880
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/to');
882
+ if (method.strategy?.kind === "nextLink") {
883
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
881
884
  content += `${indent.get()}server.PagerResponderInjectNextLinks(${localVarName}, req, func(page *${go.getTypeDeclaration(method.returns, pkg)}, createLink func() string) {\n`;
882
885
  content += `${indent.push().get()}page.${helpers.buildNextLinkPath(method.strategy)} = to.Ptr(createLink())\n`;
883
886
  content += `${indent.pop().get()}})\n`;
@@ -902,7 +905,7 @@ function dispatchForPagerBody(pkg, receiverName, method, imports, indent) {
902
905
  }
903
906
  function sanitizeRegexpCaptureGroupName(name) {
904
907
  // dash '-' characters are not allowed so replace them with '_'
905
- return name.replace('-', '_');
908
+ return name.replace("-", "_");
906
909
  }
907
910
  function createPathParamsRegex(method, pathParams) {
908
911
  // "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}"
@@ -912,12 +915,12 @@ function createPathParamsRegex(method, pathParams) {
912
915
  // escape any characters in the path that could be interpreted as regex tokens
913
916
  // per RFC3986, these are the pchars that also double as regex tokens
914
917
  // . $ * + ()
915
- urlPath = urlPath.replace(/([.$*+()])/g, '\\$1');
918
+ urlPath = urlPath.replace(/([.$*+()])/g, "\\$1");
916
919
  for (const param of pathParams) {
917
920
  const toReplace = `{${param.pathSegment}}`;
918
921
  let replaceWith = `(?P<${sanitizeRegexpCaptureGroupName(param.pathSegment)}>[!#&$-;=?-\\[\\]_a-zA-Z0-9~%@]+)`;
919
- if (param.style === 'optional' || param.style === 'flag') {
920
- replaceWith += '?';
922
+ if (param.style === "optional" || param.style === "flag") {
923
+ replaceWith += "?";
921
924
  }
922
925
  urlPath = urlPath.replace(toReplace, replaceWith);
923
926
  }
@@ -933,7 +936,7 @@ function createPathParamsRegex(method, pathParams) {
933
936
  * @returns the parsing code and the params that contain the parsed values
934
937
  */
935
938
  function parseHeaderPathQueryParams(pkg, method, imports, indent) {
936
- let content = '';
939
+ let content = "";
937
940
  const paramValues = new Map();
938
941
  const createLocalVariableName = function (param, suffix) {
939
942
  const paramName = `${naming.uncapitalize(param.name)}${suffix}`;
@@ -941,16 +944,16 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
941
944
  return paramName;
942
945
  };
943
946
  const emitNumericConversion = function (src, type) {
944
- imports.add('strconv');
945
- let precision = '32';
946
- if (type === 'float64' || type === 'int64') {
947
- precision = '64';
947
+ imports.add("strconv");
948
+ let precision = "32";
949
+ if (type === "float64" || type === "int64") {
950
+ precision = "64";
948
951
  }
949
- let parseType = 'Int';
950
- let base = '10, ';
951
- if (type === 'float32' || type === 'float64') {
952
- parseType = 'Float';
953
- base = '';
952
+ let parseType = "Int";
953
+ let base = "10, ";
954
+ if (type === "float32" || type === "float64") {
955
+ parseType = "Float";
956
+ base = "";
954
957
  }
955
958
  return `strconv.Parse${parseType}(${src}, ${base}${precision})`;
956
959
  };
@@ -958,11 +961,11 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
958
961
  // we track the params separately as it might be a subset of ParameterGroup.params
959
962
  const paramGroups = new Map();
960
963
  for (const param of consolidateHostParams(method.parameters)) {
961
- if (param.location === 'client' || go.isLiteralParameter(param.style)) {
964
+ if (param.location === "client" || go.isLiteralParameter(param.style)) {
962
965
  // client params and parameter literals aren't passed to APIs
963
966
  continue;
964
967
  }
965
- if (param.kind === 'resumeTokenParam') {
968
+ if (param.kind === "resumeTokenParam") {
966
969
  // skip the ResumeToken param as we don't send that back to the caller
967
970
  continue;
968
971
  }
@@ -977,11 +980,11 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
977
980
  params.push(param);
978
981
  }
979
982
  switch (param.kind) {
980
- case 'bodyParam':
981
- case 'formBodyCollectionParam':
982
- case 'formBodyScalarParam':
983
- case 'multipartFormBodyParam':
984
- case 'partialBodyParam':
983
+ case "bodyParam":
984
+ case "formBodyCollectionParam":
985
+ case "formBodyScalarParam":
986
+ case "multipartFormBodyParam":
987
+ case "partialBodyParam":
985
988
  // body params will be unmarshalled, no need for parsing.
986
989
  continue;
987
990
  }
@@ -993,23 +996,27 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
993
996
  let paramValue = getRawParamValue(param);
994
997
  // path params are escaped, so we need to unescape them first.
995
998
  if (go.isPathParameter(param)) {
996
- imports.add('net/url');
997
- let paramVar = createLocalVariableName(param, 'Unescaped');
998
- if (go.isRequiredParameter(param.style) && param.type.kind === 'constant' && param.type.type === 'string') {
999
+ imports.add("net/url");
1000
+ let paramVar = createLocalVariableName(param, "Unescaped");
1001
+ if (go.isRequiredParameter(param.style) &&
1002
+ param.type.kind === "constant" &&
1003
+ param.type.type === "string") {
999
1004
  // for string-based enums, we perform the conversion as part of unescaping
1000
1005
  requiredHelpers.parseWithCast = true;
1001
- paramVar = createLocalVariableName(param, 'Param');
1006
+ paramVar = createLocalVariableName(param, "Param");
1002
1007
  content += `${indent.get()}${paramVar}, err := parseWithCast(${paramValue}, func (v string) (${go.getTypeDeclaration(param.type, pkg)}, error) {\n`;
1003
1008
  content += `${indent.push().get()}p, unescapeErr := url.PathUnescape(v)\n`;
1004
1009
  content += `${indent.get()}if unescapeErr != nil {\n${indent.push().get()}return "", unescapeErr\n${indent.pop().get()}}\n`;
1005
1010
  content += `${indent.get()}return ${go.getTypeDeclaration(param.type, pkg)}(p), nil\n${indent.pop().get()}})\n`;
1006
1011
  }
1007
1012
  else {
1008
- if (go.isRequiredParameter(param.style) && (param.type.kind === 'string' || (param.type.kind === 'slice' && param.type.elementType.kind === 'string'))) {
1013
+ if (go.isRequiredParameter(param.style) &&
1014
+ (param.type.kind === "string" ||
1015
+ (param.type.kind === "slice" && param.type.elementType.kind === "string"))) {
1009
1016
  // by convention, if the value is in its "final form" (i.e. no parsing required)
1010
1017
  // then its var is to have the "Param" suffix. the only case is string, everything
1011
1018
  // else requires some amount of parsing/conversion.
1012
- paramVar = createLocalVariableName(param, 'Param');
1019
+ paramVar = createLocalVariableName(param, "Param");
1013
1020
  }
1014
1021
  content += `${indent.get()}${paramVar}, err := url.PathUnescape(${paramValue})\n`;
1015
1022
  }
@@ -1017,30 +1024,32 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1017
1024
  paramValue = paramVar;
1018
1025
  }
1019
1026
  // parse params as required
1020
- if (param.kind === 'headerCollectionParam' || param.kind === 'pathCollectionParam' || param.kind === 'queryCollectionParam') {
1027
+ if (param.kind === "headerCollectionParam" ||
1028
+ param.kind === "pathCollectionParam" ||
1029
+ param.kind === "queryCollectionParam") {
1021
1030
  // any element type other than string will require some form of conversion/parsing
1022
- if (param.type.elementType.kind !== 'string') {
1023
- if (param.collectionFormat !== 'multi') {
1031
+ if (param.type.elementType.kind !== "string") {
1032
+ if (param.collectionFormat !== "multi") {
1024
1033
  requiredHelpers.splitHelper = true;
1025
- const elementsParam = createLocalVariableName(param, 'Elements');
1034
+ const elementsParam = createLocalVariableName(param, "Elements");
1026
1035
  content += `${indent.get()}${elementsParam} := splitHelper(${paramValue}, "${helpers.getDelimiterForCollectionFormat(param.collectionFormat)}")\n`;
1027
1036
  paramValue = elementsParam;
1028
1037
  }
1029
- const paramVar = createLocalVariableName(param, 'Param');
1038
+ const paramVar = createLocalVariableName(param, "Param");
1030
1039
  let elementFormat;
1031
1040
  switch (param.type.elementType.kind) {
1032
- case 'constant':
1033
- case 'scalar':
1041
+ case "constant":
1042
+ case "scalar":
1034
1043
  elementFormat = param.type.elementType.type;
1035
1044
  break;
1036
- case 'encodedBytes':
1045
+ case "encodedBytes":
1037
1046
  elementFormat = param.type.elementType.encoding;
1038
1047
  break;
1039
- case 'time':
1048
+ case "time":
1040
1049
  elementFormat = param.type.elementType.format;
1041
1050
  break;
1042
1051
  default:
1043
- throw new CodegenError('InternalError', `unhandled element kind ${param.type.elementType.kind}`);
1052
+ throw new CodegenError("InternalError", `unhandled element kind ${param.type.elementType.kind}`);
1044
1053
  }
1045
1054
  const toType = go.getTypeDeclaration(param.type.elementType, pkg);
1046
1055
  content += `${indent.get()}${paramVar} := make([]${toType}, len(${paramValue}))\n`;
@@ -1048,76 +1057,82 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1048
1057
  indent.push();
1049
1058
  let fromVar;
1050
1059
  // TODO: consolidate with non-collection parsing code
1051
- if (elementFormat === 'bool') {
1052
- imports.add('strconv');
1053
- fromVar = 'parsedBool';
1060
+ if (elementFormat === "bool") {
1061
+ imports.add("strconv");
1062
+ fromVar = "parsedBool";
1054
1063
  content += `${indent.get()}${fromVar}, parseErr := strconv.ParseBool(${paramValue}[i])\n`;
1055
1064
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return nil, parseErr\n${indent.pop().get()}}\n`;
1056
1065
  }
1057
- else if (elementFormat === 'float32' || elementFormat === 'float64' || elementFormat === 'int32' || elementFormat === 'int64') {
1066
+ else if (elementFormat === "float32" ||
1067
+ elementFormat === "float64" ||
1068
+ elementFormat === "int32" ||
1069
+ elementFormat === "int64") {
1058
1070
  fromVar = `parsed${naming.capitalize(elementFormat)}`;
1059
1071
  content += `${indent.get()}${fromVar}, parseErr := ${emitNumericConversion(`${paramValue}[i]`, elementFormat)}\n`;
1060
1072
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return nil, parseErr\n${indent.pop().get()}}\n`;
1061
1073
  }
1062
- else if (elementFormat === 'string') {
1074
+ else if (elementFormat === "string") {
1063
1075
  // we're casting an enum string value to its const type
1064
1076
  // TODO: what about enums that aren't strings?
1065
1077
  fromVar = `${paramValue}[i]`;
1066
1078
  }
1067
- else if (elementFormat === 'Std' || elementFormat === 'URL') {
1068
- imports.add('encoding/base64');
1079
+ else if (elementFormat === "Std" || elementFormat === "URL") {
1080
+ imports.add("encoding/base64");
1069
1081
  fromVar = `parsed${naming.capitalize(elementFormat)}`;
1070
1082
  content += `${indent.get()}${fromVar}, parseErr := base64.${elementFormat}Encoding.DecodeString(${paramValue}[i])\n`;
1071
1083
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return nil, parseErr\n${indent.pop().get()}}\n`;
1072
1084
  }
1073
- else if (elementFormat === 'RFC1123' || elementFormat === 'RFC3339' || elementFormat === 'RFC7231' || elementFormat === 'Unix') {
1074
- imports.add('time');
1085
+ else if (elementFormat === "RFC1123" ||
1086
+ elementFormat === "RFC3339" ||
1087
+ elementFormat === "RFC7231" ||
1088
+ elementFormat === "Unix") {
1089
+ imports.add("time");
1075
1090
  fromVar = `parsed${naming.capitalize(elementFormat)}`;
1076
- if (elementFormat === 'Unix') {
1077
- imports.add('strconv');
1091
+ if (elementFormat === "Unix") {
1092
+ imports.add("strconv");
1078
1093
  content += `${indent.get()}p, parseErr := strconv.ParseInt(${paramValue}[i], 10, 64)\n`;
1079
1094
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return nil, parseErr\n${indent.pop().get()}}\n`;
1080
1095
  content += `${indent.get()}${fromVar} := time.Unix(p, 0).UTC()\n`;
1081
1096
  }
1082
1097
  else {
1083
- let format = 'time.RFC3339Nano';
1084
- if (elementFormat === 'RFC1123' || elementFormat === 'RFC7231') {
1085
- format = 'time.RFC1123';
1098
+ let format = "time.RFC3339Nano";
1099
+ if (elementFormat === "RFC1123" || elementFormat === "RFC7231") {
1100
+ format = "time.RFC1123";
1086
1101
  }
1087
1102
  content += `${indent.get()}${fromVar}, parseErr := time.Parse(${format}, ${paramValue}[i])\n`;
1088
1103
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return nil, parseErr\n${indent.pop().get()}}\n`;
1089
1104
  }
1090
1105
  }
1091
1106
  else {
1092
- throw new CodegenError('InternalError', `unhandled element format ${elementFormat}`);
1107
+ throw new CodegenError("InternalError", `unhandled element format ${elementFormat}`);
1093
1108
  }
1094
1109
  // TODO: remove cast in some cases
1095
1110
  content += `${indent.get()}${paramVar}[i] = ${toType}(${fromVar})\n${indent.pop().get()}}\n`;
1096
1111
  }
1097
- else if (!go.isRequiredParameter(param.style) && param.collectionFormat !== 'multi') {
1112
+ else if (!go.isRequiredParameter(param.style) && param.collectionFormat !== "multi") {
1098
1113
  // for slices of strings that are required, the call to splitHelper(...) is inlined into
1099
1114
  // the invocation of the fake e.g. srv.FakeFunc(splitHelper...). but if it's optional, we
1100
1115
  // need to create a local first which will later be copied into the optional param group.
1101
1116
  requiredHelpers.splitHelper = true;
1102
- content += `${indent.get()}${createLocalVariableName(param, 'Param')} := splitHelper(${paramValue}, "${helpers.getDelimiterForCollectionFormat(param.collectionFormat)}")\n`;
1117
+ content += `${indent.get()}${createLocalVariableName(param, "Param")} := splitHelper(${paramValue}, "${helpers.getDelimiterForCollectionFormat(param.collectionFormat)}")\n`;
1103
1118
  }
1104
1119
  }
1105
- else if (param.type.kind === 'scalar' && param.type.type === 'bool') {
1106
- imports.add('strconv');
1120
+ else if (param.type.kind === "scalar" && param.type.type === "bool") {
1121
+ imports.add("strconv");
1107
1122
  let from = `strconv.ParseBool(${paramValue})`;
1108
1123
  if (!go.isRequiredParameter(param.style)) {
1109
1124
  requiredHelpers.parseOptional = true;
1110
1125
  from = `parseOptional(${paramValue}, strconv.ParseBool)`;
1111
1126
  }
1112
- content += `${indent.get()}${createLocalVariableName(param, 'Param')}, err := ${from}\n`;
1127
+ content += `${indent.get()}${createLocalVariableName(param, "Param")}, err := ${from}\n`;
1113
1128
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
1114
1129
  }
1115
- else if (param.type.kind === 'encodedBytes') {
1116
- imports.add('encoding/base64');
1117
- content += `${indent.get()}${createLocalVariableName(param, 'Param')}, err := base64.${param.type.encoding}Encoding.DecodeString(${paramValue})\n`;
1130
+ else if (param.type.kind === "encodedBytes") {
1131
+ imports.add("encoding/base64");
1132
+ content += `${indent.get()}${createLocalVariableName(param, "Param")}, err := base64.${param.type.encoding}Encoding.DecodeString(${paramValue})\n`;
1118
1133
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
1119
1134
  }
1120
- else if (param.type.kind === 'time') {
1135
+ else if (param.type.kind === "time") {
1121
1136
  const formatMap = {
1122
1137
  PlainDate: helpers.plainDateFormat,
1123
1138
  PlainTime: helpers.plainTimeFormat,
@@ -1125,7 +1140,7 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1125
1140
  RFC3339: helpers.RFC3339Format,
1126
1141
  RFC7231: helpers.RFC1123Format,
1127
1142
  };
1128
- imports.add('time');
1143
+ imports.add("time");
1129
1144
  if (param.type.format in formatMap) {
1130
1145
  const format = formatMap[param.type.format];
1131
1146
  let from = `time.Parse(${format}, ${paramValue})`;
@@ -1133,56 +1148,62 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1133
1148
  requiredHelpers.parseOptional = true;
1134
1149
  from = `parseOptional(${paramValue}, func(v string) (time.Time, error) { return time.Parse(${format}, v) })`;
1135
1150
  }
1136
- content += `${indent.get()}${createLocalVariableName(param, 'Param')}, err := ${from}\n`;
1151
+ content += `${indent.get()}${createLocalVariableName(param, "Param")}, err := ${from}\n`;
1137
1152
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
1138
1153
  }
1139
1154
  else {
1140
- imports.add('strconv');
1155
+ imports.add("strconv");
1141
1156
  let parser;
1142
1157
  if (!go.isRequiredParameter(param.style)) {
1143
1158
  requiredHelpers.parseOptional = true;
1144
- parser = 'parseOptional';
1159
+ parser = "parseOptional";
1145
1160
  }
1146
1161
  else {
1147
1162
  requiredHelpers.parseWithCast = true;
1148
- parser = 'parseWithCast';
1163
+ parser = "parseWithCast";
1149
1164
  }
1150
- content += `${indent.get()}${createLocalVariableName(param, 'Param')}, err := ${parser}(${paramValue}, func (v string) (time.Time, error) {\n`;
1165
+ content += `${indent.get()}${createLocalVariableName(param, "Param")}, err := ${parser}(${paramValue}, func (v string) (time.Time, error) {\n`;
1151
1166
  content += `${indent.push().get()}p, parseErr := strconv.ParseInt(v, 10, 64)\n`;
1152
1167
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return time.Time{}, parseErr\n${indent.pop().get()}}\n`;
1153
1168
  content += `${indent.get()}return time.Unix(p, 0).UTC(), nil\n${indent.pop().get()}})\n`;
1154
1169
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
1155
1170
  }
1156
1171
  }
1157
- else if (param.type.kind === 'scalar' && (param.type.type === 'float32' || param.type.type === 'float64' || param.type.type === 'int32' || param.type.type === 'int64')) {
1172
+ else if (param.type.kind === "scalar" &&
1173
+ (param.type.type === "float32" ||
1174
+ param.type.type === "float64" ||
1175
+ param.type.type === "int32" ||
1176
+ param.type.type === "int64")) {
1158
1177
  let parser;
1159
1178
  if (!go.isRequiredParameter(param.style)) {
1160
1179
  requiredHelpers.parseOptional = true;
1161
- parser = 'parseOptional';
1180
+ parser = "parseOptional";
1162
1181
  }
1163
1182
  else {
1164
1183
  requiredHelpers.parseWithCast = true;
1165
- parser = 'parseWithCast';
1184
+ parser = "parseWithCast";
1166
1185
  }
1167
- if (param.type.type === 'float32' || param.type.type === 'int32' || !go.isRequiredParameter(param.style)) {
1168
- content += `${indent.get()}${createLocalVariableName(param, 'Param')}, err := ${parser}(${paramValue}, func(v string) (${param.type.type}, error) {\n`;
1169
- content += `${indent.push().get()}p, parseErr := ${emitNumericConversion('v', param.type.type)}\n`;
1186
+ if (param.type.type === "float32" ||
1187
+ param.type.type === "int32" ||
1188
+ !go.isRequiredParameter(param.style)) {
1189
+ content += `${indent.get()}${createLocalVariableName(param, "Param")}, err := ${parser}(${paramValue}, func(v string) (${param.type.type}, error) {\n`;
1190
+ content += `${indent.push().get()}p, parseErr := ${emitNumericConversion("v", param.type.type)}\n`;
1170
1191
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return 0, parseErr\n${indent.pop().get()}}\n`;
1171
- let result = 'p';
1172
- if (param.type.type === 'float32' || param.type.type === 'int32') {
1192
+ let result = "p";
1193
+ if (param.type.type === "float32" || param.type.type === "int32") {
1173
1194
  result = `${param.type.type}(${result})`;
1174
1195
  }
1175
1196
  content += `${indent.get()}return ${result}, nil\n${indent.pop().get()}})\n`;
1176
1197
  }
1177
1198
  else {
1178
- content += `${indent.get()}${createLocalVariableName(param, 'Param')}, err := ${emitNumericConversion(paramValue, param.type.type)}\n`;
1199
+ content += `${indent.get()}${createLocalVariableName(param, "Param")}, err := ${emitNumericConversion(paramValue, param.type.type)}\n`;
1179
1200
  }
1180
1201
  content += `${indent.get()}if err != nil {\n${indent.push().get()}return nil, err\n${indent.pop().get()}}\n`;
1181
1202
  }
1182
- else if (param.kind === 'headerMapParam') {
1183
- imports.add('strings');
1184
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/to');
1185
- const localVar = createLocalVariableName(param, 'Param');
1203
+ else if (param.kind === "headerMapParam") {
1204
+ imports.add("strings");
1205
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
1206
+ const localVar = createLocalVariableName(param, "Param");
1186
1207
  content += `${indent.get()}var ${localVar} map[string]*string\n`;
1187
1208
  content += `${indent.get()}for hh := range ${paramValue} {\n`;
1188
1209
  const headerPrefix = param.headerName;
@@ -1192,30 +1213,30 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1192
1213
  content += `${indent.get()}${localVar}[hh[len("${headerPrefix}"):]] = to.Ptr(getHeaderValue(req.Header, hh))\n`;
1193
1214
  content += `${indent.pop().get()}}\n${indent.pop().get()}}\n`;
1194
1215
  }
1195
- else if (param.type.kind === 'constant' && param.type.type !== 'string') {
1216
+ else if (param.type.kind === "constant" && param.type.type !== "string") {
1196
1217
  let parseHelper;
1197
1218
  if (!go.isRequiredParameter(param.style)) {
1198
1219
  requiredHelpers.parseOptional = true;
1199
- parseHelper = 'parseOptional';
1220
+ parseHelper = "parseOptional";
1200
1221
  }
1201
1222
  else {
1202
1223
  requiredHelpers.parseWithCast = true;
1203
- parseHelper = 'parseWithCast';
1224
+ parseHelper = "parseWithCast";
1204
1225
  }
1205
1226
  let parse;
1206
1227
  let zeroValue;
1207
- if (param.type.type === 'bool') {
1208
- imports.add('strconv');
1209
- parse = 'strconv.ParseBool(v)';
1210
- zeroValue = 'false';
1228
+ if (param.type.type === "bool") {
1229
+ imports.add("strconv");
1230
+ parse = "strconv.ParseBool(v)";
1231
+ zeroValue = "false";
1211
1232
  }
1212
1233
  else {
1213
1234
  // emitNumericConversion adds the necessary import of strconv
1214
- parse = emitNumericConversion('v', param.type.type);
1215
- zeroValue = '0';
1235
+ parse = emitNumericConversion("v", param.type.type);
1236
+ zeroValue = "0";
1216
1237
  }
1217
1238
  const toConstType = go.getTypeDeclaration(param.type, pkg);
1218
- content += `${indent.get()}${createLocalVariableName(param, 'Param')}, err := ${parseHelper}(${paramValue}, func(v string) (${toConstType}, error) {\n`;
1239
+ content += `${indent.get()}${createLocalVariableName(param, "Param")}, err := ${parseHelper}(${paramValue}, func(v string) (${toConstType}, error) {\n`;
1219
1240
  content += `${indent.push().get()}p, parseErr := ${parse}\n`;
1220
1241
  content += `${indent.get()}if parseErr != nil {\n${indent.push().get()}return ${zeroValue}, parseErr\n${indent.pop().get()}}\n`;
1221
1242
  content += `${indent.get()}return ${toConstType}(p), nil\n${indent.pop().get()}})\n`;
@@ -1224,11 +1245,11 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1224
1245
  else if (!go.isRequiredParameter(param.style)) {
1225
1246
  // we check this last as it's a superset of the previous conditions
1226
1247
  requiredHelpers.getOptional = true;
1227
- if (param.type.kind === 'constant' || param.type.kind === 'etag') {
1248
+ if (param.type.kind === "constant" || param.type.kind === "etag") {
1228
1249
  imports.addForType(param.type);
1229
1250
  paramValue = `${go.getTypeDeclaration(param.type, pkg)}(${paramValue})`;
1230
1251
  }
1231
- content += `${indent.get()}${createLocalVariableName(param, 'Param')} := getOptional(${paramValue})\n`;
1252
+ content += `${indent.get()}${createLocalVariableName(param, "Param")} := getOptional(${paramValue})\n`;
1232
1253
  }
1233
1254
  }
1234
1255
  // create the param groups and populate their values
@@ -1252,21 +1273,21 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1252
1273
  if (params) {
1253
1274
  for (const param of params) {
1254
1275
  // check array before body in case the body is just an array
1255
- if (param.type.kind === 'slice') {
1276
+ if (param.type.kind === "slice") {
1256
1277
  paramNilCheck.push(`len(${getFinalParamValue(pkg, param, paramValues)}) > 0`);
1257
1278
  }
1258
- else if (param.kind === 'bodyParam') {
1259
- if (param.bodyFormat === 'binary') {
1260
- imports.add('io');
1261
- paramNilCheck.push('req.Body != nil');
1279
+ else if (param.kind === "bodyParam") {
1280
+ if (param.bodyFormat === "binary") {
1281
+ imports.add("io");
1282
+ paramNilCheck.push("req.Body != nil");
1262
1283
  }
1263
1284
  else {
1264
- imports.add('reflect');
1265
- paramNilCheck.push('!reflect.ValueOf(body).IsZero()');
1285
+ imports.add("reflect");
1286
+ paramNilCheck.push("!reflect.ValueOf(body).IsZero()");
1266
1287
  }
1267
1288
  }
1268
- else if (go.isFormBodyParameter(param) || param.kind === 'multipartFormBodyParam') {
1269
- imports.add('reflect');
1289
+ else if (go.isFormBodyParameter(param) || param.kind === "multipartFormBodyParam") {
1290
+ imports.add("reflect");
1270
1291
  paramNilCheck.push(`!reflect.ValueOf(${param.name}).IsZero()`);
1271
1292
  }
1272
1293
  else {
@@ -1274,14 +1295,18 @@ function parseHeaderPathQueryParams(pkg, method, imports, indent) {
1274
1295
  }
1275
1296
  }
1276
1297
  }
1277
- content += `${indent.get()}if ${paramNilCheck.join(' || ')} {\n`;
1298
+ content += `${indent.get()}if ${paramNilCheck.join(" || ")} {\n`;
1278
1299
  content += `${indent.push().get()}${naming.uncapitalize(paramGroup.name)} = &${go.getTypeDeclaration(paramGroup, pkg)}{\n`;
1279
1300
  if (params) {
1280
1301
  indent.push();
1281
1302
  for (const param of params) {
1282
- let byRef = '&';
1283
- if (param.byValue || (!go.isRequiredParameter(param.style) && param.kind !== 'bodyParam' && !go.isFormBodyParameter(param) && param.kind !== 'multipartFormBodyParam')) {
1284
- byRef = '';
1303
+ let byRef = "&";
1304
+ if (param.byValue ||
1305
+ (!go.isRequiredParameter(param.style) &&
1306
+ param.kind !== "bodyParam" &&
1307
+ !go.isFormBodyParameter(param) &&
1308
+ param.kind !== "multipartFormBodyParam")) {
1309
+ byRef = "";
1285
1310
  }
1286
1311
  content += `${indent.get()}${naming.capitalize(param.name)}: ${byRef}${getFinalParamValue(pkg, param, paramValues)},\n`;
1287
1312
  }
@@ -1311,18 +1336,18 @@ function populateApiParams(pkg, method, paramValues, imports) {
1311
1336
  const params = new Array();
1312
1337
  // for non-paged APIs, first param is always the context. use the one
1313
1338
  // from the HTTP request. be careful to properly handle paged LROs
1314
- if (method.kind !== 'pageableMethod') {
1315
- params.push('req.Context()');
1339
+ if (method.kind !== "pageableMethod") {
1340
+ params.push("req.Context()");
1316
1341
  }
1317
1342
  // now create the API call sig
1318
1343
  for (const param of helpers.getMethodParameters(method, consolidateHostParams)) {
1319
- if (param.kind === 'paramGroup') {
1344
+ if (param.kind === "paramGroup") {
1320
1345
  if (param.groupName === method.optionalParamsGroup.groupName) {
1321
1346
  // this is the optional params type. in some cases we just pass nil
1322
- const countParams = param.params.filter((each) => each.kind !== 'resumeTokenParam').length;
1347
+ const countParams = param.params.filter((each) => each.kind !== "resumeTokenParam").length;
1323
1348
  if (countParams === 0) {
1324
1349
  // if the options param is empty or only contains the resume token param just pass nil
1325
- params.push('nil');
1350
+ params.push("nil");
1326
1351
  continue;
1327
1352
  }
1328
1353
  }
@@ -1334,47 +1359,47 @@ function populateApiParams(pkg, method, paramValues, imports) {
1334
1359
  imports.addForType(param.type);
1335
1360
  params.push(getFinalParamValue(pkg, param, paramValues));
1336
1361
  }
1337
- return params.join(', ');
1362
+ return params.join(", ");
1338
1363
  }
1339
1364
  // getRawParamValue returns the "raw" value for the specified parameter.
1340
1365
  // depending on the type, the value might require parsing before it can be passed to the fake.
1341
1366
  function getRawParamValue(param) {
1342
1367
  switch (param.kind) {
1343
- case 'bodyParam':
1344
- if (param.bodyFormat === 'binary') {
1345
- return 'req.Body.(io.ReadSeekCloser)';
1368
+ case "bodyParam":
1369
+ if (param.bodyFormat === "binary") {
1370
+ return "req.Body.(io.ReadSeekCloser)";
1346
1371
  }
1347
1372
  // JSON/XML/text bodies have been deserialized into a local named body
1348
- return 'body';
1349
- case 'formBodyCollectionParam':
1350
- case 'formBodyScalarParam':
1351
- case 'multipartFormBodyParam':
1352
- case 'partialBodyParam':
1373
+ return "body";
1374
+ case "formBodyCollectionParam":
1375
+ case "formBodyScalarParam":
1376
+ case "multipartFormBodyParam":
1377
+ case "partialBodyParam":
1353
1378
  // multipart form data values have been read and assigned
1354
1379
  // to local params with the same name.
1355
1380
  return param.name;
1356
- case 'headerCollectionParam':
1357
- case 'headerScalarParam':
1381
+ case "headerCollectionParam":
1382
+ case "headerScalarParam":
1358
1383
  // use req
1359
1384
  requiredHelpers.getHeaderValue = true;
1360
1385
  return `getHeaderValue(req.Header, "${param.headerName}")`;
1361
- case 'headerMapParam':
1362
- return 'req.Header';
1363
- case 'pathCollectionParam':
1364
- case 'pathScalarParam':
1386
+ case "headerMapParam":
1387
+ return "req.Header";
1388
+ case "pathCollectionParam":
1389
+ case "pathScalarParam":
1365
1390
  // path params are in the matches slice
1366
1391
  return `matches[regex.SubexpIndex("${sanitizeRegexpCaptureGroupName(param.pathSegment)}")]`;
1367
- case 'queryCollectionParam':
1368
- case 'queryScalarParam':
1392
+ case "queryCollectionParam":
1393
+ case "queryScalarParam":
1369
1394
  // use qp
1370
- if (param.kind === 'queryCollectionParam' && param.collectionFormat === 'multi') {
1395
+ if (param.kind === "queryCollectionParam" && param.collectionFormat === "multi") {
1371
1396
  return `qp["${param.queryParameter}"]`;
1372
1397
  }
1373
1398
  return `qp.Get("${param.queryParameter}")`;
1374
- case 'uriParam':
1375
- return 'req.URL.Host';
1399
+ case "uriParam":
1400
+ return "req.URL.Host";
1376
1401
  default:
1377
- throw new CodegenError('InternalError', `unhandled parameter ${param.name}`);
1402
+ throw new CodegenError("InternalError", `unhandled parameter ${param.name}`);
1378
1403
  }
1379
1404
  }
1380
1405
  /**
@@ -1394,26 +1419,33 @@ function getFinalParamValue(pkg, param, paramValues) {
1394
1419
  paramValue = getRawParamValue(param);
1395
1420
  }
1396
1421
  // there are a few corner-cases that require some fix-ups
1397
- if ((param.kind === 'bodyParam' || go.isFormBodyParameter(param) || param.kind === 'multipartFormBodyParam') && param.type.kind === 'time') {
1422
+ if ((param.kind === "bodyParam" ||
1423
+ go.isFormBodyParameter(param) ||
1424
+ param.kind === "multipartFormBodyParam") &&
1425
+ param.type.kind === "time") {
1398
1426
  // time types in the body have been unmarshalled into our time helpers thus require a cast to time.Time
1399
1427
  return `time.Time(${paramValue})`;
1400
1428
  }
1401
1429
  else if (go.isRequiredParameter(param.style)) {
1402
1430
  // optional params are always in their "final" form
1403
- if (param.kind === 'headerCollectionParam' || param.kind === 'pathCollectionParam' || param.kind === 'queryCollectionParam') {
1431
+ if (param.kind === "headerCollectionParam" ||
1432
+ param.kind === "pathCollectionParam" ||
1433
+ param.kind === "queryCollectionParam") {
1404
1434
  // for required params that are collections of strings, we split them inline.
1405
1435
  // not necessary for optional params as they're already in slice format.
1406
- if (param.collectionFormat !== 'multi' && param.type.elementType.kind === 'string') {
1436
+ if (param.collectionFormat !== "multi" && param.type.elementType.kind === "string") {
1407
1437
  requiredHelpers.splitHelper = true;
1408
1438
  return `splitHelper(${paramValue}, "${helpers.getDelimiterForCollectionFormat(param.collectionFormat)}")`;
1409
1439
  }
1410
1440
  }
1411
- else if ((go.isHeaderParameter(param) || go.isQueryParameter(param)) && param.type.kind === 'constant' && param.type.type === 'string') {
1441
+ else if ((go.isHeaderParameter(param) || go.isQueryParameter(param)) &&
1442
+ param.type.kind === "constant" &&
1443
+ param.type.type === "string") {
1412
1444
  // query params from req.URL.Query() are already decoded, so like headers we cast required, string-based enums inline
1413
1445
  return `${go.getTypeDeclaration(param.type, pkg)}(${paramValue})`;
1414
1446
  }
1415
1447
  }
1416
- else if (param.kind === 'partialBodyParam') {
1448
+ else if (param.kind === "partialBodyParam") {
1417
1449
  // use the value from the unmarshaled, intermediate struct type
1418
1450
  return `body.${naming.capitalize(param.name)}`;
1419
1451
  }
@@ -1425,7 +1457,7 @@ function getFinalParamValue(pkg, param, paramValues) {
1425
1457
  // there's no way to reliably split the host back up into its constituent parameters.
1426
1458
  // so we just pass the full value as a single host parameter.
1427
1459
  function consolidateHostParams(params) {
1428
- if (!params.find((each) => each.kind === 'uriParam')) {
1460
+ if (!params.find((each) => each.kind === "uriParam")) {
1429
1461
  // no host params
1430
1462
  return params;
1431
1463
  }
@@ -1433,7 +1465,7 @@ function consolidateHostParams(params) {
1433
1465
  const consolidatedParams = new Array();
1434
1466
  let hostParamAdded = false;
1435
1467
  for (const param of params) {
1436
- if (param.kind !== 'uriParam') {
1468
+ if (param.kind !== "uriParam") {
1437
1469
  consolidatedParams.push(param);
1438
1470
  }
1439
1471
  else if (!hostParamAdded) {
@@ -1454,27 +1486,27 @@ function consolidateHostParams(params) {
1454
1486
  function getAPIParametersSig(pkg, method, imports) {
1455
1487
  const methodParams = helpers.getMethodParameters(method, consolidateHostParams);
1456
1488
  const params = new Array();
1457
- if (method.kind !== 'pageableMethod') {
1458
- imports.add('context');
1459
- params.push('ctx context.Context');
1489
+ if (method.kind !== "pageableMethod") {
1490
+ imports.add("context");
1491
+ params.push("ctx context.Context");
1460
1492
  }
1461
1493
  for (const methodParam of methodParams) {
1462
1494
  let paramName = naming.uncapitalize(methodParam.name);
1463
- if (methodParam.kind === 'uriParam') {
1464
- paramName = 'host';
1495
+ if (methodParam.kind === "uriParam") {
1496
+ paramName = "host";
1465
1497
  }
1466
1498
  params.push(`${paramName} ${helpers.formatParameterTypeName(pkg, methodParam)}`);
1467
1499
  }
1468
- return params.join(', ');
1500
+ return params.join(", ");
1469
1501
  }
1470
1502
  // copied from generator/helpers.ts but without the XML-specific stuff
1471
1503
  function getResultFieldName(result) {
1472
1504
  switch (result.kind) {
1473
- case 'anyResult':
1505
+ case "anyResult":
1474
1506
  return result.fieldName;
1475
- case 'modelResult':
1507
+ case "modelResult":
1476
1508
  return result.modelType.name;
1477
- case 'polymorphicResult':
1509
+ case "polymorphicResult":
1478
1510
  return result.interface.name;
1479
1511
  default:
1480
1512
  return result.fieldName;