@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,9 +2,9 @@
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 helpers from './helpers.js';
7
- import { ImportManager } from './imports.js';
5
+ import * as go from "../../codemodel/index.js";
6
+ import * as helpers from "./helpers.js";
7
+ import { ImportManager } from "./imports.js";
8
8
  /**
9
9
  * Creates the content for the models.go file.
10
10
  *
@@ -16,8 +16,8 @@ import { ImportManager } from './imports.js';
16
16
  export function generateModels(pkg, options, emitter) {
17
17
  if (pkg.models.length === 0) {
18
18
  return {
19
- models: '',
20
- serDe: '',
19
+ models: "",
20
+ serDe: "",
21
21
  };
22
22
  }
23
23
  // this list of packages to import
@@ -36,7 +36,7 @@ export function generateModels(pkg, options, emitter) {
36
36
  let needsJSONPopulateByteArray = false;
37
37
  let needsJSONPopulateAny = false;
38
38
  let needsJSONPopulateMultipart = false;
39
- let serdeTextBody = '';
39
+ let serdeTextBody = "";
40
40
  for (const modelDef of modelDefs) {
41
41
  modelText += modelDef.text(indent);
42
42
  modelDef.Methods.sort((a, b) => {
@@ -44,7 +44,7 @@ export function generateModels(pkg, options, emitter) {
44
44
  });
45
45
  for (const method of modelDef.Methods) {
46
46
  if (method.desc.length > 0) {
47
- modelText += `${helpers.comment(method.desc, '// ', undefined, helpers.commentLength)}\n`;
47
+ modelText += `${helpers.comment(method.desc, "// ", undefined, helpers.commentLength)}\n`;
48
48
  }
49
49
  modelText += method.text;
50
50
  }
@@ -53,7 +53,7 @@ export function generateModels(pkg, options, emitter) {
53
53
  });
54
54
  for (const method of modelDef.SerDe.methods) {
55
55
  if (method.desc.length > 0) {
56
- serdeTextBody += `${helpers.comment(method.desc, '// ', undefined, helpers.commentLength)}\n`;
56
+ serdeTextBody += `${helpers.comment(method.desc, "// ", undefined, helpers.commentLength)}\n`;
57
57
  }
58
58
  serdeTextBody += method.text;
59
59
  }
@@ -80,9 +80,9 @@ export function generateModels(pkg, options, emitter) {
80
80
  }
81
81
  }
82
82
  if (needsJSONPopulate) {
83
- serdeImports.add('reflect');
84
- serdeImports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
85
- serdeTextBody += 'func populate(m map[string]any, k string, v any) {\n';
83
+ serdeImports.add("reflect");
84
+ serdeImports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore");
85
+ serdeTextBody += "func populate(m map[string]any, k string, v any) {\n";
86
86
  serdeTextBody += `${indent.get()}if v == nil {\n`;
87
87
  serdeTextBody += `${indent.push().get()}return\n`;
88
88
  serdeTextBody += `${indent.pop().get()}} else if azcore.IsNullValue(v) {\n`;
@@ -90,13 +90,14 @@ export function generateModels(pkg, options, emitter) {
90
90
  serdeTextBody += `${indent.pop().get()}} else if !reflect.ValueOf(v).IsNil() {\n`;
91
91
  serdeTextBody += `${indent.push().get()}m[k] = v\n`;
92
92
  serdeTextBody += `${indent.pop().get()}}\n`;
93
- serdeTextBody += '}\n\n';
93
+ serdeTextBody += "}\n\n";
94
94
  }
95
95
  if (needsJSONPopulateTime) {
96
- serdeImports.add('time');
97
- serdeImports.add('reflect');
98
- serdeImports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
99
- serdeTextBody += 'func populateTime[T dateTimeConstraints](m map[string]any, k string, t *time.Time) {\n';
96
+ serdeImports.add("time");
97
+ serdeImports.add("reflect");
98
+ serdeImports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore");
99
+ serdeTextBody +=
100
+ "func populateTime[T dateTimeConstraints](m map[string]any, k string, t *time.Time) {\n";
100
101
  serdeTextBody += `${indent.get()}if t == nil {\n`;
101
102
  serdeTextBody += `${indent.push().get()}return\n`;
102
103
  serdeTextBody += `${indent.pop().get()}} else if azcore.IsNullValue(t) {\n`;
@@ -107,11 +108,11 @@ export function generateModels(pkg, options, emitter) {
107
108
  serdeTextBody += `${indent.get()}m[k] = (*T)(&newTime)\n`;
108
109
  indent.pop();
109
110
  serdeTextBody += `${indent.get()}}\n`;
110
- serdeTextBody += '}\n\n';
111
+ serdeTextBody += "}\n\n";
111
112
  }
112
113
  if (needsJSONPopulateAny) {
113
- serdeImports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
114
- serdeTextBody += 'func populateAny(m map[string]any, k string, v any) {\n';
114
+ serdeImports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore");
115
+ serdeTextBody += "func populateAny(m map[string]any, k string, v any) {\n";
115
116
  serdeTextBody += `${indent.get()}if v == nil {\n`;
116
117
  serdeTextBody += `${indent.push().get()}return\n`;
117
118
  serdeTextBody += `${indent.pop().get()}} else if azcore.IsNullValue(v) {\n`;
@@ -119,12 +120,13 @@ export function generateModels(pkg, options, emitter) {
119
120
  serdeTextBody += `${indent.pop().get()}} else {\n`;
120
121
  serdeTextBody += `${indent.push().get()}m[k] = v\n`;
121
122
  serdeTextBody += `${indent.pop().get()}}\n`;
122
- serdeTextBody += '}\n\n';
123
+ serdeTextBody += "}\n\n";
123
124
  }
124
125
  if (needsJSONPopulateByteArray) {
125
- serdeImports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore');
126
- serdeImports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
127
- serdeTextBody += 'func populateByteArray[T any](m map[string]any, k string, b []T, convert func() any) {\n';
126
+ serdeImports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore");
127
+ serdeImports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
128
+ serdeTextBody +=
129
+ "func populateByteArray[T any](m map[string]any, k string, b []T, convert func() any) {\n";
128
130
  serdeTextBody += `${indent.get()}if azcore.IsNullValue(b) {\n`;
129
131
  serdeTextBody += `${indent.push().get()}m[k] = nil\n`;
130
132
  serdeTextBody += `${indent.pop().get()}} else if len(b) == 0 {\n`;
@@ -132,11 +134,11 @@ export function generateModels(pkg, options, emitter) {
132
134
  serdeTextBody += `${indent.pop().get()}} else {\n`;
133
135
  serdeTextBody += `${indent.push().get()}m[k] = convert()\n`;
134
136
  serdeTextBody += `${indent.pop().get()}}\n`;
135
- serdeTextBody += '}\n\n';
137
+ serdeTextBody += "}\n\n";
136
138
  }
137
139
  if (needsJSONUnpopulate) {
138
- serdeImports.add('fmt');
139
- serdeTextBody += 'func unpopulate(data json.RawMessage, fn string, v any) error {\n';
140
+ serdeImports.add("fmt");
141
+ serdeTextBody += "func unpopulate(data json.RawMessage, fn string, v any) error {\n";
140
142
  serdeTextBody += `${indent.get()}if data == nil || string(data) == "null" {\n`;
141
143
  serdeTextBody += `${indent.push().get()}return nil\n`;
142
144
  serdeTextBody += `${indent.pop().get()}}\n`;
@@ -144,12 +146,13 @@ export function generateModels(pkg, options, emitter) {
144
146
  serdeTextBody += `${indent.push().get()}return fmt.Errorf("struct field %s: %v", fn, err)\n`;
145
147
  serdeTextBody += `${indent.pop().get()}}\n`;
146
148
  serdeTextBody += `${indent.get()}return nil\n`;
147
- serdeTextBody += '}\n\n';
149
+ serdeTextBody += "}\n\n";
148
150
  }
149
151
  if (needsJSONUnpopulateTime) {
150
- serdeImports.add('fmt');
151
- serdeImports.add('time');
152
- serdeTextBody += 'func unpopulateTime[T dateTimeConstraints](data json.RawMessage, fn string, t **time.Time) error {\n';
152
+ serdeImports.add("fmt");
153
+ serdeImports.add("time");
154
+ serdeTextBody +=
155
+ "func unpopulateTime[T dateTimeConstraints](data json.RawMessage, fn string, t **time.Time) error {\n";
153
156
  serdeTextBody += `${indent.get()}if data == nil || string(data) == "null" {\n`;
154
157
  serdeTextBody += `${indent.push().get()}return nil\n`;
155
158
  serdeTextBody += `${indent.pop().get()}}\n`;
@@ -160,35 +163,35 @@ export function generateModels(pkg, options, emitter) {
160
163
  serdeTextBody += `${indent.get()}newTime := time.Time(aux)\n`;
161
164
  serdeTextBody += `${indent.get()}*t = &newTime\n`;
162
165
  serdeTextBody += `${indent.get()}return nil\n`;
163
- serdeTextBody += '}\n\n';
166
+ serdeTextBody += "}\n\n";
164
167
  }
165
168
  if (needsJSONPopulateMultipart) {
166
- serdeImports.add('encoding/json');
167
- serdeTextBody += 'func populateMultipartJSON(m map[string]any, k string, v any) error {\n';
169
+ serdeImports.add("encoding/json");
170
+ serdeTextBody += "func populateMultipartJSON(m map[string]any, k string, v any) error {\n";
168
171
  serdeTextBody += `${indent.get()}data, err := json.Marshal(v)\n`;
169
172
  serdeTextBody += `${indent.get()}if err != nil {\n`;
170
173
  serdeTextBody += `${indent.push().get()}return err\n`;
171
174
  serdeTextBody += `${indent.pop().get()}}\n`;
172
175
  serdeTextBody += `${indent.get()}m[k] = data\n`;
173
176
  serdeTextBody += `${indent.get()}return nil\n`;
174
- serdeTextBody += '}\n\n';
177
+ serdeTextBody += "}\n\n";
175
178
  }
176
179
  if (needsJSONUnpopulateTime || needsJSONPopulateTime) {
177
- const formats = new Array('datetime.PlainDate', 'datetime.PlainTime', 'datetime.RFC3339', 'datetime.Unix');
180
+ const formats = new Array("datetime.PlainDate", "datetime.PlainTime", "datetime.RFC3339", "datetime.Unix");
178
181
  serdeTextBody += `type dateTimeConstraints interface {\n`;
179
182
  // rfc1123 and rfc7231 are mutually exclusive based on the emitter
180
183
  switch (emitter) {
181
- case 'openapi':
182
- formats.push('datetime.RFC1123');
184
+ case "openapi":
185
+ formats.push("datetime.RFC1123");
183
186
  break;
184
- case 'tsp':
185
- formats.push('datetime.RFC7231');
187
+ case "tsp":
188
+ formats.push("datetime.RFC7231");
186
189
  break;
187
190
  }
188
- serdeTextBody += `${indent.get()}${formats.sort().join(' | ')}\n`;
189
- serdeTextBody += '}\n\n';
191
+ serdeTextBody += `${indent.get()}${formats.sort().join(" | ")}\n`;
192
+ serdeTextBody += "}\n\n";
190
193
  }
191
- let serdeText = '';
194
+ let serdeText = "";
192
195
  if (serdeTextBody.length > 0) {
193
196
  serdeText = helpers.contentPreamble(pkg);
194
197
  serdeText += serdeImports.text();
@@ -215,61 +218,65 @@ function generateModelDefs(modelImports, serdeImports, pkg, options, indent) {
215
218
  for (const field of model.fields) {
216
219
  const descriptionMods = new Array();
217
220
  if (field.annotations.readOnly) {
218
- descriptionMods.push('READ-ONLY');
221
+ descriptionMods.push("READ-ONLY");
219
222
  }
220
- else if (field.annotations.required && (field.type.kind !== 'literal' || model.usage === go.UsageFlags.Output)) {
221
- descriptionMods.push('REQUIRED');
223
+ else if (field.annotations.required &&
224
+ (field.type.kind !== "literal" || model.usage === go.UsageFlags.Output)) {
225
+ descriptionMods.push("REQUIRED");
222
226
  }
223
- else if (field.type.kind === 'literal') {
227
+ else if (field.type.kind === "literal") {
224
228
  if (!field.annotations.required) {
225
- descriptionMods.push('FLAG');
229
+ descriptionMods.push("FLAG");
226
230
  }
227
- descriptionMods.push('CONSTANT');
231
+ descriptionMods.push("CONSTANT");
228
232
  }
229
- if (field.type.kind === 'literal' && model.usage !== go.UsageFlags.Output) {
233
+ if (field.type.kind === "literal" && model.usage !== go.UsageFlags.Output) {
230
234
  // add a comment with the const value for const properties that are sent over the wire
231
235
  if (field.docs.description) {
232
- field.docs.description += '\n';
236
+ field.docs.description += "\n";
233
237
  }
234
238
  else {
235
- field.docs.description = '';
239
+ field.docs.description = "";
236
240
  }
237
241
  field.docs.description += `Field has constant value ${helpers.formatLiteralValue(field.type, false)}, any specified value is ignored.`;
238
242
  }
239
243
  if (field.docs.description) {
240
244
  descriptionMods.push(field.docs.description);
241
245
  }
242
- else if (field.type.kind === 'rawJSON') {
246
+ else if (field.type.kind === "rawJSON") {
243
247
  // add a basic description if one isn't available
244
- descriptionMods.push('The contents of this field are raw JSON.');
248
+ descriptionMods.push("The contents of this field are raw JSON.");
245
249
  }
246
- field.docs.description = descriptionMods.join('; ');
250
+ field.docs.description = descriptionMods.join("; ");
247
251
  }
248
252
  const serDeFormat = helpers.getSerDeFormat(model, pkg);
249
253
  const modelDef = new ModelDef(model, serDeFormat);
250
254
  for (const field of modelDef.Model.fields) {
251
255
  modelImports.addForType(field.type);
252
256
  }
253
- if (model.kind === 'model' && serDeFormat === 'XML' && !model.annotations.omitSerDeMethods) {
254
- serdeImports.add('encoding/xml');
257
+ if (model.kind === "model" && serDeFormat === "XML" && !model.annotations.omitSerDeMethods) {
258
+ serdeImports.add("encoding/xml");
255
259
  let needsDateTimeMarshalling = false;
256
260
  let byteArrayFormat = false;
257
261
  for (const field of model.fields) {
258
- if (field.type.kind !== 'etag') {
262
+ if (field.type.kind !== "etag") {
259
263
  // azcore.ETag un/marshals on its own so no need to
260
264
  // import azcore as we don't explicitly reference the type
261
265
  serdeImports.addForType(field.type);
262
266
  }
263
- if (field.type.kind === 'time') {
267
+ if (field.type.kind === "time") {
264
268
  needsDateTimeMarshalling = true;
265
269
  }
266
- else if (field.type.kind === 'encodedBytes') {
270
+ else if (field.type.kind === "encodedBytes") {
267
271
  byteArrayFormat = true;
268
272
  }
269
273
  }
270
274
  // due to differences in XML marshallers/unmarshallers, we use different codegen than for JSON
271
275
  const needsXMLDictionaryUnmarshalling = needsXMLDictionaryHelper(model);
272
- if (needsDateTimeMarshalling || model.xml?.name || needsXMLArrayMarshalling(model) || byteArrayFormat) {
276
+ if (needsDateTimeMarshalling ||
277
+ model.xml?.name ||
278
+ needsXMLArrayMarshalling(model) ||
279
+ byteArrayFormat) {
273
280
  generateXMLMarshaller(modelDef, serdeImports, indent);
274
281
  if (needsDateTimeMarshalling || needsXMLDictionaryUnmarshalling || byteArrayFormat) {
275
282
  generateXMLUnmarshaller(modelDef, serdeImports, indent);
@@ -282,7 +289,7 @@ function generateModelDefs(modelImports, serdeImports, pkg, options, indent) {
282
289
  modelDefs.push(modelDef);
283
290
  continue;
284
291
  }
285
- if (model.kind === 'polymorphicModel') {
292
+ if (model.kind === "polymorphicModel") {
286
293
  generateDiscriminatorMarkerMethod(model.interface, modelDef, indent);
287
294
  for (let parent = model.interface.parent; parent !== undefined; parent = parent.parent) {
288
295
  generateDiscriminatorMarkerMethod(parent, modelDef, indent);
@@ -303,7 +310,7 @@ function generateModelDefs(modelImports, serdeImports, pkg, options, indent) {
303
310
  function needsXMLDictionaryHelper(modelType) {
304
311
  for (const field of modelType.fields) {
305
312
  // additional properties uses an internal wrapper type with its own serde impl
306
- if (field.type.kind === 'map' && !field.annotations.isAdditionalProperties) {
313
+ if (field.type.kind === "map" && !field.annotations.isAdditionalProperties) {
307
314
  return true;
308
315
  }
309
316
  }
@@ -320,7 +327,7 @@ function needsXMLDictionaryHelper(modelType) {
320
327
  */
321
328
  function needsXMLArrayMarshalling(modelType) {
322
329
  for (const prop of modelType.fields) {
323
- if (prop.type.kind === 'slice') {
330
+ if (prop.type.kind === "slice") {
324
331
  return true;
325
332
  }
326
333
  }
@@ -346,7 +353,11 @@ function generateDiscriminatorMarkerMethod(type, modelDef, indent) {
346
353
  }
347
354
  method += `${indent.pop().get()}}\n}\n\n`;
348
355
  }
349
- modelDef.Methods.push({ name: interfaceMethod, desc: `${interfaceMethod} implements the ${type.name} interface for type ${modelDef.Model.name}.`, text: method });
356
+ modelDef.Methods.push({
357
+ name: interfaceMethod,
358
+ desc: `${interfaceMethod} implements the ${type.name} interface for type ${modelDef.Model.name}.`,
359
+ text: method,
360
+ });
350
361
  }
351
362
  function generateToMultipartForm(modelDef, indent) {
352
363
  const receiver = modelDef.receiverName();
@@ -354,15 +365,15 @@ function generateToMultipartForm(modelDef, indent) {
354
365
  method += `${indent.get()}objectMap := make(map[string]any)\n`;
355
366
  for (const field of modelDef.Model.fields) {
356
367
  const fieldType = helpers.recursiveUnwrapMapSlice(field.type);
357
- let star = '';
368
+ let star = "";
358
369
  if (!field.byValue) {
359
- star = '*';
370
+ star = "*";
360
371
  }
361
372
  if (!field.byValue) {
362
373
  method += `${indent.get()}if ${receiver}.${field.name} != nil {\n`;
363
374
  indent.push();
364
375
  }
365
- if (fieldType.kind === 'model' && !fieldType.annotations.multipartFormData) {
376
+ if (fieldType.kind === "model" && !fieldType.annotations.multipartFormData) {
366
377
  method += `${indent.get()}if err := populateMultipartJSON(objectMap, "${field.serializedName}", ${star}${receiver}.${field.name}); err != nil {\n`;
367
378
  method += `${indent.push().get()}return nil, err\n`;
368
379
  method += `${indent.pop().get()}}\n`;
@@ -376,7 +387,11 @@ function generateToMultipartForm(modelDef, indent) {
376
387
  }
377
388
  }
378
389
  method += `${indent.get()}return objectMap, nil\n}\n\n`;
379
- modelDef.SerDe.methods.push({ name: 'toMultipartFormData', desc: `toMultipartFormData converts ${modelDef.Model.name} to multipart/form data.`, text: method });
390
+ modelDef.SerDe.methods.push({
391
+ name: "toMultipartFormData",
392
+ desc: `toMultipartFormData converts ${modelDef.Model.name} to multipart/form data.`,
393
+ text: method,
394
+ });
380
395
  }
381
396
  /**
382
397
  * generates the MarshalJSON method for the provided type.
@@ -387,20 +402,24 @@ function generateToMultipartForm(modelDef, indent) {
387
402
  * @param indent the indentation helper currently in scope
388
403
  */
389
404
  function generateJSONMarshaller(modelDef, imports, indent) {
390
- if (modelDef.Model.kind === 'model' && modelDef.Model.fields.length === 0) {
405
+ if (modelDef.Model.kind === "model" && modelDef.Model.fields.length === 0) {
391
406
  // non-discriminated types without content don't need a custom marshaller.
392
407
  // there is a case in network where child is allOf base and child has no properties.
393
408
  return;
394
409
  }
395
- imports.add('encoding/json');
410
+ imports.add("encoding/json");
396
411
  const typeName = modelDef.Model.name;
397
412
  const receiver = modelDef.receiverName();
398
413
  let marshaller = `func (${receiver} ${typeName}) MarshalJSON() ([]byte, error) {\n`;
399
414
  marshaller += `${indent.get()}objectMap := make(map[string]any)\n`;
400
415
  marshaller += generateJSONMarshallerBody(modelDef, receiver, imports, indent);
401
416
  marshaller += `${indent.get()}return json.Marshal(objectMap)\n`;
402
- marshaller += '}\n\n';
403
- modelDef.SerDe.methods.push({ name: 'MarshalJSON', desc: `MarshalJSON implements the json.Marshaller interface for type ${typeName}.`, text: marshaller });
417
+ marshaller += "}\n\n";
418
+ modelDef.SerDe.methods.push({
419
+ name: "MarshalJSON",
420
+ desc: `MarshalJSON implements the json.Marshaller interface for type ${typeName}.`,
421
+ text: marshaller,
422
+ });
404
423
  }
405
424
  /**
406
425
  * generates the contents of MarshalJSON that encode the target type
@@ -412,10 +431,10 @@ function generateJSONMarshaller(modelDef, imports, indent) {
412
431
  * @returns the text for encoding the target type
413
432
  */
414
433
  function generateJSONMarshallerBody(modelDef, receiver, imports, indent) {
415
- let marshaller = '';
434
+ let marshaller = "";
416
435
  let addlProps;
417
436
  for (const field of modelDef.Model.fields) {
418
- if (field.type.kind === 'map' && field.annotations.isAdditionalProperties) {
437
+ if (field.type.kind === "map" && field.annotations.isAdditionalProperties) {
419
438
  addlProps = field.type;
420
439
  continue;
421
440
  }
@@ -429,15 +448,15 @@ function generateJSONMarshallerBody(modelDef, receiver, imports, indent) {
429
448
  marshaller += `${indent.get()}objectMap["${field.serializedName}"] = ${receiver}.${field.name}\n`;
430
449
  }
431
450
  }
432
- else if (field.type.kind === 'encodedBytes') {
433
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
451
+ else if (field.type.kind === "encodedBytes") {
452
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
434
453
  marshaller += `${indent.get()}populateByteArray(objectMap, "${field.serializedName}", ${receiver}.${field.name}, func() any {\n`;
435
454
  marshaller += `${indent.push().get()}return runtime.EncodeByteArray(${receiver}.${field.name}, runtime.Base64${field.type.encoding}Format)\n`;
436
455
  marshaller += `${indent.pop().get()}})\n`;
437
456
  modelDef.SerDe.needsJSONPopulateByteArray = true;
438
457
  }
439
- else if (field.type.kind === 'slice' && field.type.elementType.kind === 'encodedBytes') {
440
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
458
+ else if (field.type.kind === "slice" && field.type.elementType.kind === "encodedBytes") {
459
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
441
460
  marshaller += `${indent.get()}populateByteArray(objectMap, "${field.serializedName}", ${receiver}.${field.name}, func() any {\n`;
442
461
  marshaller += `${indent.push().get()}encodedValue := make([]string, len(${receiver}.${field.name}))\n`;
443
462
  marshaller += `${indent.get()}for i := 0; i < len(${receiver}.${field.name}); i++ {\n`;
@@ -447,13 +466,13 @@ function generateJSONMarshallerBody(modelDef, receiver, imports, indent) {
447
466
  marshaller += `${indent.pop().get()}})\n`;
448
467
  modelDef.SerDe.needsJSONPopulateByteArray = true;
449
468
  }
450
- else if (field.type.kind === 'slice' && field.type.elementType.kind === 'time') {
469
+ else if (field.type.kind === "slice" && field.type.elementType.kind === "time") {
451
470
  const source = `${receiver}.${field.name}`;
452
- let elementPtr = '*';
471
+ let elementPtr = "*";
453
472
  if (field.type.elementTypeByValue) {
454
- elementPtr = '';
473
+ elementPtr = "";
455
474
  }
456
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime');
475
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
457
476
  marshaller += `${indent.get()}aux := make([]${elementPtr}datetime.${field.type.elementType.format}, len(${source}), len(${source}))\n`;
458
477
  marshaller += `${indent.get()}for i := 0; i < len(${source}); i++ {\n`;
459
478
  marshaller += `${indent.push().get()}aux[i] = (${elementPtr}datetime.${field.type.elementType.format})(${source}[i])\n`;
@@ -461,7 +480,7 @@ function generateJSONMarshallerBody(modelDef, receiver, imports, indent) {
461
480
  marshaller += `${indent.get()}populate(objectMap, "${field.serializedName}", aux)\n`;
462
481
  modelDef.SerDe.needsJSONPopulate = true;
463
482
  }
464
- else if (field.type.kind === 'literal') {
483
+ else if (field.type.kind === "literal") {
465
484
  const setter = `objectMap["${field.serializedName}"] = ${helpers.formatLiteralValue(field.type, true)}`;
466
485
  if (!field.annotations.required) {
467
486
  marshaller += `${indent.get()}if ${receiver}.${field.name} != nil {\n`;
@@ -472,40 +491,43 @@ function generateJSONMarshallerBody(modelDef, receiver, imports, indent) {
472
491
  marshaller += `${indent.get()}${setter}\n`;
473
492
  }
474
493
  }
475
- else if (field.type.kind === 'rawJSON') {
494
+ else if (field.type.kind === "rawJSON") {
476
495
  marshaller += `${indent.get()}populate(objectMap, "${field.serializedName}", json.RawMessage(${receiver}.${field.name}))\n`;
477
496
  modelDef.SerDe.needsJSONPopulate = true;
478
497
  }
479
498
  else {
480
499
  if (field.defaultValue) {
481
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/to');
500
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
482
501
  marshaller += `${indent.get()}if ${receiver}.${field.name} == nil {\n`;
483
502
  marshaller += `${indent.push().get()}${receiver}.${field.name} = to.Ptr(${helpers.formatLiteralValue(field.defaultValue, true)})\n`;
484
503
  marshaller += `${indent.pop().get()}}\n`;
485
504
  }
486
505
  let populate;
487
- if (field.type.kind === 'time') {
488
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime');
506
+ if (field.type.kind === "time") {
507
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
489
508
  populate = `populateTime[datetime.${field.type.format}]`;
490
509
  modelDef.SerDe.needsJSONPopulateTime = true;
491
510
  }
492
- else if (field.type.kind === 'any') {
493
- populate = 'populateAny';
511
+ else if (field.type.kind === "any") {
512
+ populate = "populateAny";
494
513
  modelDef.SerDe.needsJSONPopulateAny = true;
495
514
  }
496
515
  else {
497
- populate = 'populate';
516
+ populate = "populate";
498
517
  modelDef.SerDe.needsJSONPopulate = true;
499
518
  }
500
- if (field.type.kind === 'scalar' && (field.type.type.startsWith('uint') || field.type.type.startsWith('int')) && field.type.encodeAsString) {
519
+ if (field.type.kind === "scalar" &&
520
+ (field.type.type.startsWith("uint") || field.type.type.startsWith("int")) &&
521
+ field.type.encodeAsString) {
501
522
  // TODO: need to handle map and slice type with underlying int as string type
502
- imports.add('strconv');
503
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/to');
504
- if ((field.type.type.startsWith('uint') && field.type.type !== 'uint64') || (field.type.type.startsWith('int') && field.type.type !== 'int64')) {
505
- marshaller += `${indent.get()}${populate}(objectMap, "${field.serializedName}", to.Ptr(strconv.${field.type.type.startsWith('int') ? 'FormatInt' : 'FormatUint'}(${field.type.type.startsWith('int') ? 'int64' : 'uint64'}(*${receiver}.${field.name}), 10)))\n`;
523
+ imports.add("strconv");
524
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/to");
525
+ if ((field.type.type.startsWith("uint") && field.type.type !== "uint64") ||
526
+ (field.type.type.startsWith("int") && field.type.type !== "int64")) {
527
+ marshaller += `${indent.get()}${populate}(objectMap, "${field.serializedName}", to.Ptr(strconv.${field.type.type.startsWith("int") ? "FormatInt" : "FormatUint"}(${field.type.type.startsWith("int") ? "int64" : "uint64"}(*${receiver}.${field.name}), 10)))\n`;
506
528
  }
507
529
  else {
508
- marshaller += `${indent.get()}${populate}(objectMap, "${field.serializedName}", to.Ptr(strconv.${field.type.type.startsWith('int') ? 'FormatInt' : 'FormatUint'}(*${receiver}.${field.name}, 10)))\n`;
530
+ marshaller += `${indent.get()}${populate}(objectMap, "${field.serializedName}", to.Ptr(strconv.${field.type.type.startsWith("int") ? "FormatInt" : "FormatUint"}(*${receiver}.${field.name}, 10)))\n`;
509
531
  }
510
532
  }
511
533
  else {
@@ -516,8 +538,8 @@ function generateJSONMarshallerBody(modelDef, receiver, imports, indent) {
516
538
  if (addlProps) {
517
539
  marshaller += `${indent.get()}if ${receiver}.AdditionalProperties != nil {\n`;
518
540
  marshaller += `${indent.push().get()}for key, val := range ${receiver}.AdditionalProperties {\n`;
519
- let assignment = 'val';
520
- if (addlProps.valueType.kind === 'time') {
541
+ let assignment = "val";
542
+ if (addlProps.valueType.kind === "time") {
521
543
  assignment = `(*${addlProps.valueType.format})(val)`;
522
544
  }
523
545
  marshaller += `${indent.push().get()}objectMap[key] = ${assignment}\n`;
@@ -541,8 +563,8 @@ function generateJSONUnmarshaller(modelDef, options, imports, indent) {
541
563
  if (modelDef.Model.fields.length === 0) {
542
564
  return;
543
565
  }
544
- imports.add('encoding/json');
545
- imports.add('fmt');
566
+ imports.add("encoding/json");
567
+ imports.add("fmt");
546
568
  const typeName = modelDef.Model.name;
547
569
  const receiver = modelDef.receiverName();
548
570
  let unmarshaller = `func (${receiver} *${typeName}) UnmarshalJSON(data []byte) error {\n`;
@@ -551,8 +573,12 @@ function generateJSONUnmarshaller(modelDef, options, imports, indent) {
551
573
  unmarshaller += `${indent.push().get()}return fmt.Errorf("unmarshalling type %T: %s", ${receiver}, err.Error())\n`;
552
574
  unmarshaller += `${indent.pop().get()}}\n`;
553
575
  unmarshaller += generateJSONUnmarshallerBody(modelDef, receiver, options, imports, indent);
554
- unmarshaller += '}\n\n';
555
- modelDef.SerDe.methods.push({ name: 'UnmarshalJSON', desc: `UnmarshalJSON implements the json.Unmarshaller interface for type ${typeName}.`, text: unmarshaller });
576
+ unmarshaller += "}\n\n";
577
+ modelDef.SerDe.methods.push({
578
+ name: "UnmarshalJSON",
579
+ desc: `UnmarshalJSON implements the json.Unmarshaller interface for type ${typeName}.`,
580
+ text: unmarshaller,
581
+ });
556
582
  }
557
583
  /**
558
584
  * generates the contents of UnmarshalJSON that decode the target type
@@ -573,17 +599,17 @@ function generateJSONUnmarshallerBody(modelDef, receiver, options, imports, inde
573
599
  const emitAddlProps = function (addlProps) {
574
600
  // indent is at the case body level when called
575
601
  let addlPropsText = `${indent.get()}if ${receiver}.AdditionalProperties == nil {\n`;
576
- let ref = '';
602
+ let ref = "";
577
603
  if (!addlProps.valueTypeByValue) {
578
- ref = '&';
604
+ ref = "&";
579
605
  }
580
606
  addlPropsText += `${indent.push().get()}${receiver}.AdditionalProperties = ${go.getTypeDeclaration(addlProps, modelDef.Model.pkg)}{}\n`;
581
607
  addlPropsText += `${indent.pop().get()}}\n`;
582
608
  addlPropsText += `${indent.get()}if val != nil {\n`;
583
609
  let auxType = go.getTypeDeclaration(addlProps.valueType, modelDef.Model.pkg);
584
610
  let assignment = `${ref}aux`;
585
- if (addlProps.valueType.kind === 'time') {
586
- imports.add('time');
611
+ if (addlProps.valueType.kind === "time") {
612
+ imports.add("time");
587
613
  auxType = addlProps.valueType.format;
588
614
  assignment = `(*time.Time)(${assignment})`;
589
615
  }
@@ -597,11 +623,11 @@ function generateJSONUnmarshallerBody(modelDef, receiver, options, imports, inde
597
623
  };
598
624
  const emitSwitchCase = function () {
599
625
  // indent is at level 2 (for loop body) when called
600
- let unmarshalBody = '';
626
+ let unmarshalBody = "";
601
627
  let addlProps;
602
628
  unmarshalBody += `${indent.get()}switch key {\n`;
603
629
  for (const field of modelDef.Model.fields) {
604
- if (field.type.kind === 'map' && field.annotations.isAdditionalProperties) {
630
+ if (field.type.kind === "map" && field.annotations.isAdditionalProperties) {
605
631
  addlProps = field.type;
606
632
  continue;
607
633
  }
@@ -611,17 +637,17 @@ function generateJSONUnmarshallerBody(modelDef, receiver, options, imports, inde
611
637
  unmarshalBody += generateDiscriminatorUnmarshaller(modelDef.Model, field, receiver, indent);
612
638
  needsErrCheck = true;
613
639
  }
614
- else if (field.type.kind === 'time') {
640
+ else if (field.type.kind === "time") {
615
641
  unmarshalBody += `${indent.get()}err = unpopulateTime[datetime.${field.type.format}](val, "${field.name}", &${receiver}.${field.name})\n`;
616
642
  modelDef.SerDe.needsJSONUnpopulateTime = true;
617
643
  needsErrCheck = true;
618
644
  }
619
- else if (field.type.kind === 'slice' && field.type.elementType.kind === 'time') {
620
- imports.add('time');
621
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime');
622
- let elementPtr = '*';
645
+ else if (field.type.kind === "slice" && field.type.elementType.kind === "time") {
646
+ imports.add("time");
647
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
648
+ let elementPtr = "*";
623
649
  if (field.type.elementTypeByValue) {
624
- elementPtr = '';
650
+ elementPtr = "";
625
651
  }
626
652
  unmarshalBody += `${indent.get()}var aux []${elementPtr}datetime.${field.type.elementType.format}\n`;
627
653
  unmarshalBody += `${indent.get()}err = unpopulate(val, "${field.name}", &aux)\n`;
@@ -631,15 +657,15 @@ function generateJSONUnmarshallerBody(modelDef, receiver, options, imports, inde
631
657
  modelDef.SerDe.needsJSONUnpopulate = true;
632
658
  needsErrCheck = true;
633
659
  }
634
- else if (field.type.kind === 'encodedBytes') {
635
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
660
+ else if (field.type.kind === "encodedBytes") {
661
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
636
662
  unmarshalBody += `${indent.get()}if val != nil && string(val) != "null" {\n`;
637
663
  unmarshalBody += `${indent.push().get()}err = runtime.DecodeByteArray(string(val), &${receiver}.${field.name}, runtime.Base64${field.type.encoding}Format)\n`;
638
664
  unmarshalBody += `${indent.pop().get()}}\n`;
639
665
  needsErrCheck = true;
640
666
  }
641
- else if (field.type.kind === 'slice' && field.type.elementType.kind === 'encodedBytes') {
642
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
667
+ else if (field.type.kind === "slice" && field.type.elementType.kind === "encodedBytes") {
668
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
643
669
  unmarshalBody += `${indent.get()}var encodedValue []string\n`;
644
670
  unmarshalBody += `${indent.get()}err = unpopulate(val, "${field.name}", &encodedValue)\n`;
645
671
  unmarshalBody += `${indent.get()}if err == nil && len(encodedValue) > 0 {\n`;
@@ -653,22 +679,25 @@ function generateJSONUnmarshallerBody(modelDef, receiver, options, imports, inde
653
679
  modelDef.SerDe.needsJSONUnpopulate = true;
654
680
  needsErrCheck = true;
655
681
  }
656
- else if (field.type.kind === 'rawJSON') {
682
+ else if (field.type.kind === "rawJSON") {
657
683
  unmarshalBody += `${indent.get()}if string(val) != "null" {\n`;
658
684
  unmarshalBody += `${indent.push().get()}${receiver}.${field.name} = val\n`;
659
685
  unmarshalBody += `${indent.pop().get()}}\n`;
660
686
  }
661
- else if (field.type.kind === 'scalar' && (field.type.type.startsWith('uint') || field.type.type.startsWith('int')) && field.type.encodeAsString) {
687
+ else if (field.type.kind === "scalar" &&
688
+ (field.type.type.startsWith("uint") || field.type.type.startsWith("int")) &&
689
+ field.type.encodeAsString) {
662
690
  // TODO: need to handle map and slice type with underlying int as string type
663
- imports.add('strconv');
691
+ imports.add("strconv");
664
692
  unmarshalBody += `${indent.get()}var aux string\n`;
665
693
  unmarshalBody += `${indent.get()}err = unpopulate(val, "${field.name}", &aux)\n`;
666
694
  unmarshalBody += `${indent.get()}if err == nil {\n`;
667
695
  indent.push();
668
- unmarshalBody += `${indent.get()}var v ${field.type.type.startsWith('int') ? 'int64' : 'uint64'}\n`;
669
- unmarshalBody += `${indent.get()}v, err = strconv.${field.type.type.startsWith('int') ? 'ParseInt' : 'ParseUint'}(aux, 10, 0)\n`;
696
+ unmarshalBody += `${indent.get()}var v ${field.type.type.startsWith("int") ? "int64" : "uint64"}\n`;
697
+ unmarshalBody += `${indent.get()}v, err = strconv.${field.type.type.startsWith("int") ? "ParseInt" : "ParseUint"}(aux, 10, 0)\n`;
670
698
  unmarshalBody += `${indent.get()}if err == nil {\n`;
671
- if ((field.type.type.startsWith('uint') && field.type.type !== 'uint64') || (field.type.type.startsWith('int') && field.type.type !== 'int64')) {
699
+ if ((field.type.type.startsWith("uint") && field.type.type !== "uint64") ||
700
+ (field.type.type.startsWith("int") && field.type.type !== "int64")) {
672
701
  unmarshalBody += `${indent.push().get()}${receiver}.${field.name} = to.Ptr(${field.type.type}(v))\n`;
673
702
  }
674
703
  else {
@@ -682,7 +711,7 @@ function generateJSONUnmarshallerBody(modelDef, receiver, options, imports, inde
682
711
  }
683
712
  else {
684
713
  const unpopulateField = `err = unpopulate(val, "${field.name}", &${receiver}.${field.name})\n`;
685
- if (field.type.kind === 'string' && field.annotations.unmarshalEmptyStringAsNil) {
714
+ if (field.type.kind === "string" && field.annotations.unmarshalEmptyStringAsNil) {
686
715
  unmarshalBody += `${indent.get()}${helpers.buildIfBlock(indent, {
687
716
  condition: `string(val) != \`""\``,
688
717
  body: (indent) => `${indent.get()}${unpopulateField}`,
@@ -734,11 +763,11 @@ function generateJSONUnmarshallerBody(modelDef, receiver, options, imports, inde
734
763
  // recursively called for arrays and dictionaries.
735
764
  function hasDiscriminatorInterface(item) {
736
765
  switch (item.kind) {
737
- case 'interface':
766
+ case "interface":
738
767
  return true;
739
- case 'map':
768
+ case "map":
740
769
  return hasDiscriminatorInterface(item.valueType);
741
- case 'slice':
770
+ case "slice":
742
771
  return hasDiscriminatorInterface(item.elementType);
743
772
  default:
744
773
  return false;
@@ -747,14 +776,14 @@ function hasDiscriminatorInterface(item) {
747
776
  // returns the text for unmarshalling a discriminated type
748
777
  function generateDiscriminatorUnmarshaller(modelType, field, receiver, indent) {
749
778
  const propertyName = field.name;
750
- // these are the simple, non-nested cases (e.g. IterfaceType, []InterfaceType, map[string]InterfaceType)
751
- if (field.type.kind === 'interface') {
779
+ // these are the simple, non-nested cases (e.g. InterfaceType, []InterfaceType, map[string]InterfaceType)
780
+ if (field.type.kind === "interface") {
752
781
  return `${indent.get()}${receiver}.${propertyName}, err = unmarshal${field.type.name}(val)\n`;
753
782
  }
754
- else if (field.type.kind === 'slice' && field.type.elementType.kind === 'interface') {
783
+ else if (field.type.kind === "slice" && field.type.elementType.kind === "interface") {
755
784
  return `${indent.get()}${receiver}.${propertyName}, err = unmarshal${field.type.elementType.name}Array(val)\n`;
756
785
  }
757
- else if (field.type.kind === 'map' && field.type.valueType.kind === 'interface') {
786
+ else if (field.type.kind === "map" && field.type.valueType.kind === "interface") {
758
787
  return `${indent.get()}${receiver}.${propertyName}, err = unmarshal${field.type.valueType.name}Map(val)\n`;
759
788
  }
760
789
  // nested case (e.g. [][]InterfaceType, map[string]map[string]InterfaceType etc)
@@ -767,7 +796,7 @@ function generateDiscriminatorUnmarshaller(modelType, field, receiver, indent) {
767
796
  // create a local instantiation of the final type
768
797
  const finalTargetVar = field.serializedName;
769
798
  let finalTargetCtor = recursiveGetDiscriminatorTypeName(modelType, field.type, false);
770
- if (field.type.kind === 'slice') {
799
+ if (field.type.kind === "slice") {
771
800
  finalTargetCtor = `make(${finalTargetCtor}, len(${rawTargetVar}))`;
772
801
  }
773
802
  else {
@@ -786,18 +815,18 @@ function generateDiscriminatorUnmarshaller(modelType, field, receiver, indent) {
786
815
  // !raw e.g. map[string]map[string]InterfaceType, [][]InterfaceType etc
787
816
  function recursiveGetDiscriminatorTypeName(modelType, item, raw) {
788
817
  // when raw is true, stop recursing at the level before the leaf schema
789
- if (item.kind === 'slice') {
790
- if (!raw || item.elementType.kind !== 'interface') {
818
+ if (item.kind === "slice") {
819
+ if (!raw || item.elementType.kind !== "interface") {
791
820
  return `[]${recursiveGetDiscriminatorTypeName(modelType, item.elementType, raw)}`;
792
821
  }
793
822
  }
794
- else if (item.kind === 'map') {
795
- if (!raw || item.valueType.kind !== 'interface') {
823
+ else if (item.kind === "map") {
824
+ if (!raw || item.valueType.kind !== "interface") {
796
825
  return `map[string]${recursiveGetDiscriminatorTypeName(modelType, item.valueType, raw)}`;
797
826
  }
798
827
  }
799
828
  if (raw) {
800
- return 'json.RawMessage';
829
+ return "json.RawMessage";
801
830
  }
802
831
  return go.getTypeDeclaration(item, modelType.pkg);
803
832
  }
@@ -814,11 +843,11 @@ function recursiveGetDiscriminatorTypeName(modelType, item, raw) {
814
843
  * @returns the text populating the discriminator
815
844
  */
816
845
  function recursivePopulateDiscriminator(modelType, item, receiver, rawSrc, dest, indent, nesting) {
817
- let text = '';
818
- let interfaceName = '';
819
- let targetType = '';
820
- if (item.kind === 'slice') {
821
- if (item.elementType.kind !== 'interface') {
846
+ let text = "";
847
+ let interfaceName = "";
848
+ let targetType = "";
849
+ if (item.kind === "slice") {
850
+ if (item.elementType.kind !== "interface") {
822
851
  if (nesting > 1) {
823
852
  // at nestling level 1, the destination var was already created in generateDiscriminatorUnmarshaller()
824
853
  text += `${indent.get()}${dest} = make(${recursiveGetDiscriminatorTypeName(modelType, item, false)}, len(${rawSrc}))\n`;
@@ -834,10 +863,10 @@ function recursivePopulateDiscriminator(modelType, item, receiver, rawSrc, dest,
834
863
  }
835
864
  // we're at leaf node - 1, so get the interface from the element's type
836
865
  interfaceName = go.getTypeDeclaration(item.elementType, modelType.pkg);
837
- targetType = 'Array';
866
+ targetType = "Array";
838
867
  }
839
- else if (item.kind === 'map') {
840
- if (item.valueType.kind !== 'interface') {
868
+ else if (item.kind === "map") {
869
+ if (item.valueType.kind !== "interface") {
841
870
  if (nesting > 1) {
842
871
  // at nestling level 1, the destination var was already created in generateDiscriminatorUnmarshaller()
843
872
  text += `${indent.get()}${dest} = ${recursiveGetDiscriminatorTypeName(modelType, item, false)}{}\n`;
@@ -853,7 +882,7 @@ function recursivePopulateDiscriminator(modelType, item, receiver, rawSrc, dest,
853
882
  }
854
883
  // we're at leaf node - 1, so get the interface from the element's type
855
884
  interfaceName = go.getTypeDeclaration(item.valueType, modelType.pkg);
856
- targetType = 'Map';
885
+ targetType = "Map";
857
886
  }
858
887
  text += `${indent.get()}${dest}, err = unmarshal${interfaceName}${targetType}(${rawSrc})\n`;
859
888
  text += `${indent.get()}if err != nil {\n`;
@@ -878,16 +907,16 @@ function generateXMLMarshaller(modelDef, imports, indent) {
878
907
  }
879
908
  text += generateAliasType(modelDef.Model, receiver, true, imports, indent);
880
909
  for (const field of modelDef.Model.fields) {
881
- if (field.type.kind === 'slice') {
910
+ if (field.type.kind === "slice") {
882
911
  text += `${indent.get()}if ${receiver}.${field.name} != nil {\n`;
883
912
  text += `${indent.push().get()}aux.${field.name} = &${receiver}.${field.name}\n`;
884
913
  text += `${indent.pop().get()}}\n`;
885
914
  }
886
- else if (field.annotations.isAdditionalProperties || field.type.kind === 'map') {
915
+ else if (field.annotations.isAdditionalProperties || field.type.kind === "map") {
887
916
  text += `${indent.get()}aux.${field.name} = (additionalProperties)(${receiver}.${field.name})\n`;
888
917
  }
889
- else if (field.type.kind === 'encodedBytes') {
890
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
918
+ else if (field.type.kind === "encodedBytes") {
919
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
891
920
  text += `${indent.get()}if ${receiver}.${field.name} != nil {\n`;
892
921
  indent.push();
893
922
  text += `${indent.get()}encoded${field.name} := runtime.EncodeByteArray(${receiver}.${field.name}, runtime.Base64${field.type.encoding}Format)\n`;
@@ -897,8 +926,8 @@ function generateXMLMarshaller(modelDef, imports, indent) {
897
926
  }
898
927
  }
899
928
  text += `${indent.get()}return enc.EncodeElement(aux, start)\n`;
900
- text += '}\n\n';
901
- modelDef.SerDe.methods.push({ name: 'MarshalXML', desc: desc, text: text });
929
+ text += "}\n\n";
930
+ modelDef.SerDe.methods.push({ name: "MarshalXML", desc: desc, text: text });
902
931
  }
903
932
  /**
904
933
  * generates an implementation of UnmarshalXML for the provided type.
@@ -917,16 +946,16 @@ function generateXMLUnmarshaller(modelDef, imports, indent) {
917
946
  text += `${indent.push().get()}return err\n`;
918
947
  text += `${indent.pop().get()}}\n`;
919
948
  for (const field of modelDef.Model.fields) {
920
- if (field.type.kind === 'time') {
949
+ if (field.type.kind === "time") {
921
950
  text += `${indent.get()}if aux.${field.name} != nil && !(*time.Time)(aux.${field.name}).IsZero() {\n`;
922
951
  text += `${indent.push().get()}${receiver}.${field.name} = (*time.Time)(aux.${field.name})\n`;
923
952
  text += `${indent.pop().get()}}\n`;
924
953
  }
925
- else if (field.annotations.isAdditionalProperties || field.type.kind === 'map') {
954
+ else if (field.annotations.isAdditionalProperties || field.type.kind === "map") {
926
955
  text += `${indent.get()}${receiver}.${field.name} = (map[string]*string)(aux.${field.name})\n`;
927
956
  }
928
- else if (field.type.kind === 'encodedBytes') {
929
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime');
957
+ else if (field.type.kind === "encodedBytes") {
958
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime");
930
959
  text += `${indent.get()}if aux.${field.name} != nil {\n`;
931
960
  indent.push();
932
961
  text += `${indent.get()}if err := runtime.DecodeByteArray(*aux.${field.name}, &${receiver}.${field.name}, runtime.Base64${field.type.encoding}Format); err != nil {\n`;
@@ -937,8 +966,8 @@ function generateXMLUnmarshaller(modelDef, imports, indent) {
937
966
  }
938
967
  }
939
968
  text += `${indent.get()}return nil\n`;
940
- text += '}\n\n';
941
- modelDef.SerDe.methods.push({ name: 'UnmarshalXML', desc: desc, text: text });
969
+ text += "}\n\n";
970
+ modelDef.SerDe.methods.push({ name: "UnmarshalXML", desc: desc, text: text });
942
971
  }
943
972
  /**
944
973
  * generates an alias type used by custom XML marshaller/unmarshaller
@@ -954,33 +983,33 @@ function generateAliasType(modelType, receiver, forMarshal, imports, indent) {
954
983
  text += `${indent.push().get()}*alias\n`;
955
984
  for (const field of modelType.fields) {
956
985
  const sn = getXMLSerialization(field);
957
- if (field.type.kind === 'time') {
958
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime');
986
+ if (field.type.kind === "time") {
987
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
959
988
  text += `${indent.get()}${field.name} *datetime.${field.type.format} \`xml:"${sn}"\`\n`;
960
989
  }
961
- else if (field.annotations.isAdditionalProperties || field.type.kind === 'map') {
990
+ else if (field.annotations.isAdditionalProperties || field.type.kind === "map") {
962
991
  text += `${indent.get()}${field.name} additionalProperties \`xml:"${sn}"\`\n`;
963
992
  }
964
- else if (field.type.kind === 'slice') {
993
+ else if (field.type.kind === "slice") {
965
994
  text += `${indent.get()}${field.name} *${go.getTypeDeclaration(field.type, modelType.pkg)} \`xml:"${sn}"\`\n`;
966
995
  }
967
- else if (field.type.kind === 'encodedBytes') {
996
+ else if (field.type.kind === "encodedBytes") {
968
997
  text += `${indent.get()}${field.name} *string \`xml:"${sn}"\`\n`;
969
998
  }
970
999
  }
971
1000
  text += `${indent.pop().get()}}{\n`;
972
1001
  let rec = receiver;
973
1002
  if (forMarshal) {
974
- rec = '&' + rec;
1003
+ rec = "&" + rec;
975
1004
  }
976
1005
  text += `${indent.push().get()}alias: (*alias)(${rec}),\n`;
977
1006
  if (forMarshal) {
978
1007
  // emit code to initialize time fields
979
1008
  for (const field of modelType.fields) {
980
- if (field.type.kind !== 'time') {
1009
+ if (field.type.kind !== "time") {
981
1010
  continue;
982
1011
  }
983
- imports.add('github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime');
1012
+ imports.add("github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime/datetime");
984
1013
  text += `${indent.get()}${field.name}: (*datetime.${field.type.format})(${receiver}.${field.name}),\n`;
985
1014
  }
986
1015
  }
@@ -1026,10 +1055,12 @@ class ModelDef {
1026
1055
  text += `type ${this.Model.name} struct {\n`;
1027
1056
  // group fields by required/optional/read-only in that order
1028
1057
  this.Model.fields.sort((lhs, rhs) => {
1029
- if ((lhs.annotations.required && !rhs.annotations.required) || (!lhs.annotations.readOnly && rhs.annotations.readOnly)) {
1058
+ if ((lhs.annotations.required && !rhs.annotations.required) ||
1059
+ (!lhs.annotations.readOnly && rhs.annotations.readOnly)) {
1030
1060
  return -1;
1031
1061
  }
1032
- else if ((rhs.annotations.readOnly && !lhs.annotations.readOnly) || (!rhs.annotations.readOnly && lhs.annotations.readOnly)) {
1062
+ else if ((rhs.annotations.readOnly && !lhs.annotations.readOnly) ||
1063
+ (!rhs.annotations.readOnly && lhs.annotations.readOnly)) {
1033
1064
  return 1;
1034
1065
  }
1035
1066
  else {
@@ -1043,31 +1074,31 @@ class ModelDef {
1043
1074
  if (!first) {
1044
1075
  // add an extra new-line between fields IFF the field
1045
1076
  // has a comment and it's not the very first one.
1046
- text += '\n';
1077
+ text += "\n";
1047
1078
  }
1048
1079
  text += helpers.formatDocComment(field.docs);
1049
1080
  }
1050
1081
  let typeName = go.getTypeDeclaration(field.type, this.Model.pkg);
1051
- if (field.type.kind === 'literal') {
1082
+ if (field.type.kind === "literal") {
1052
1083
  // for constants we use the underlying type name
1053
1084
  typeName = go.getLiteralTypeDeclaration(field.type.type);
1054
1085
  }
1055
1086
  let serialization = field.serializedName;
1056
- if (this.Format === 'JSON') {
1057
- serialization += ',omitempty';
1087
+ if (this.Format === "JSON") {
1088
+ serialization += ",omitempty";
1058
1089
  }
1059
- else if (this.Format === 'XML') {
1090
+ else if (this.Format === "XML") {
1060
1091
  serialization = getXMLSerialization(field);
1061
1092
  }
1062
- let tag = '';
1093
+ let tag = "";
1063
1094
  // only emit tags for XML; JSON uses custom marshallers/unmarshallers
1064
- if (this.Format === 'XML' && !field.annotations.isAdditionalProperties) {
1095
+ if (this.Format === "XML" && !field.annotations.isAdditionalProperties) {
1065
1096
  tag = ` \`xml:"${serialization}"\``;
1066
1097
  }
1067
1098
  text += `${indent.get()}${field.name} ${helpers.star(field.byValue)}${typeName}${tag}\n`;
1068
1099
  first = false;
1069
1100
  }
1070
- text += '}\n\n';
1101
+ text += "}\n\n";
1071
1102
  return text;
1072
1103
  }
1073
1104
  /** returns the name to use for method receivers on this struct */
@@ -1086,19 +1117,19 @@ function getXMLSerialization(field) {
1086
1117
  let serialization = field.serializedName;
1087
1118
  // default to using the serialization name
1088
1119
  if (field.xml?.name) {
1089
- // xml can specifiy its own name, prefer that if available
1120
+ // xml can specify its own name, prefer that if available
1090
1121
  serialization = field.xml.name;
1091
1122
  }
1092
1123
  else if (field.xml?.text) {
1093
1124
  // type has the x-ms-text attribute applied so it should be character data, not a node (https://github.com/Azure/autorest/tree/main/docs/extensions#x-ms-text)
1094
1125
  // see https://pkg.go.dev/encoding/xml#Unmarshal for what ,chardata actually means
1095
- serialization = ',chardata';
1126
+ serialization = ",chardata";
1096
1127
  }
1097
1128
  if (field.xml?.attribute) {
1098
1129
  // value comes from an xml attribute
1099
- serialization += ',attr';
1130
+ serialization += ",attr";
1100
1131
  }
1101
- else if (field.type.kind === 'slice') {
1132
+ else if (field.type.kind === "slice") {
1102
1133
  // start with the serialized name of the element, preferring xml name if available
1103
1134
  let inner = field.serializedName;
1104
1135
  if (field.xml?.name) {