@azure-tools/typespec-ts 0.13.0 → 0.13.1

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 (511) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +37 -1
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/modelUtils.d.ts +2 -0
  6. package/dist/src/modelUtils.d.ts.map +1 -1
  7. package/dist/src/modelUtils.js +82 -13
  8. package/dist/src/modelUtils.js.map +1 -1
  9. package/dist/src/modular/buildApiIndex.d.ts.map +1 -1
  10. package/dist/src/modular/buildApiIndex.js +1 -1
  11. package/dist/src/modular/buildApiIndex.js.map +1 -1
  12. package/dist/src/modular/buildClassicalClient.d.ts.map +1 -1
  13. package/dist/src/modular/buildClassicalClient.js +6 -6
  14. package/dist/src/modular/buildClassicalClient.js.map +1 -1
  15. package/dist/src/modular/buildClientContext.d.ts.map +1 -1
  16. package/dist/src/modular/buildClientContext.js +9 -3
  17. package/dist/src/modular/buildClientContext.js.map +1 -1
  18. package/dist/src/modular/buildCodeModel.d.ts.map +1 -1
  19. package/dist/src/modular/buildCodeModel.js +190 -169
  20. package/dist/src/modular/buildCodeModel.js.map +1 -1
  21. package/dist/src/modular/buildOperations.d.ts.map +1 -1
  22. package/dist/src/modular/buildOperations.js +20 -2
  23. package/dist/src/modular/buildOperations.js.map +1 -1
  24. package/dist/src/modular/buildRootIndex.js +2 -2
  25. package/dist/src/modular/buildRootIndex.js.map +1 -1
  26. package/dist/src/modular/buildSharedTypes.d.ts.map +1 -1
  27. package/dist/src/modular/buildSharedTypes.js +8 -10
  28. package/dist/src/modular/buildSharedTypes.js.map +1 -1
  29. package/dist/src/modular/emitModels.d.ts.map +1 -1
  30. package/dist/src/modular/emitModels.js +19 -6
  31. package/dist/src/modular/emitModels.js.map +1 -1
  32. package/dist/src/modular/helpers/clientHelpers.d.ts.map +1 -1
  33. package/dist/src/modular/helpers/clientHelpers.js +2 -11
  34. package/dist/src/modular/helpers/clientHelpers.js.map +1 -1
  35. package/dist/src/modular/helpers/credentialHelpers.js +1 -1
  36. package/dist/src/modular/helpers/credentialHelpers.js.map +1 -1
  37. package/dist/src/modular/helpers/fixmeHelpers.d.ts +2 -0
  38. package/dist/src/modular/helpers/fixmeHelpers.d.ts.map +1 -0
  39. package/dist/src/modular/helpers/fixmeHelpers.js +4 -0
  40. package/dist/src/modular/helpers/fixmeHelpers.js.map +1 -0
  41. package/dist/src/modular/helpers/namingHelpers.d.ts +19 -1
  42. package/dist/src/modular/helpers/namingHelpers.d.ts.map +1 -1
  43. package/dist/src/modular/helpers/namingHelpers.js +99 -0
  44. package/dist/src/modular/helpers/namingHelpers.js.map +1 -1
  45. package/dist/src/modular/helpers/operationHelpers.d.ts +2 -0
  46. package/dist/src/modular/helpers/operationHelpers.d.ts.map +1 -1
  47. package/dist/src/modular/helpers/operationHelpers.js +117 -35
  48. package/dist/src/modular/helpers/operationHelpers.js.map +1 -1
  49. package/dist/src/modular/helpers/parameterHelpers.js +1 -1
  50. package/dist/src/modular/helpers/parameterHelpers.js.map +1 -1
  51. package/dist/src/modular/helpers/typeHelpers.d.ts.map +1 -1
  52. package/dist/src/modular/helpers/typeHelpers.js +31 -12
  53. package/dist/src/modular/helpers/typeHelpers.js.map +1 -1
  54. package/dist/src/modular/modularCodeModel.d.ts +2 -1
  55. package/dist/src/modular/modularCodeModel.d.ts.map +1 -1
  56. package/dist/src/operationUtil.d.ts +1 -1
  57. package/dist/src/operationUtil.d.ts.map +1 -1
  58. package/dist/src/operationUtil.js +21 -3
  59. package/dist/src/operationUtil.js.map +1 -1
  60. package/dist/src/transform/transform.d.ts.map +1 -1
  61. package/dist/src/transform/transform.js +2 -2
  62. package/dist/src/transform/transform.js.map +1 -1
  63. package/dist/src/transform/transformApiVersionInfo.js +9 -0
  64. package/dist/src/transform/transformApiVersionInfo.js.map +1 -1
  65. package/dist/src/transform/transformHelperFunctionDetails.d.ts.map +1 -1
  66. package/dist/src/transform/transformHelperFunctionDetails.js +18 -0
  67. package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -1
  68. package/dist/src/transform/transformParameters.d.ts.map +1 -1
  69. package/dist/src/transform/transformParameters.js +27 -34
  70. package/dist/src/transform/transformParameters.js.map +1 -1
  71. package/dist/src/transform/transformPaths.d.ts.map +1 -1
  72. package/dist/src/transform/transformPaths.js +9 -0
  73. package/dist/src/transform/transformPaths.js.map +1 -1
  74. package/dist/src/transform/transformResponses.d.ts.map +1 -1
  75. package/dist/src/transform/transformResponses.js +10 -1
  76. package/dist/src/transform/transformResponses.js.map +1 -1
  77. package/dist/src/transform/transformSchemas.d.ts.map +1 -1
  78. package/dist/src/transform/transformSchemas.js +9 -0
  79. package/dist/src/transform/transformSchemas.js.map +1 -1
  80. package/dist/tsconfig.tsbuildinfo +1 -1
  81. package/package.json +14 -7
  82. package/src/index.ts +47 -2
  83. package/src/modelUtils.ts +90 -15
  84. package/src/modular/buildApiIndex.ts +3 -1
  85. package/src/modular/buildClassicalClient.ts +8 -6
  86. package/src/modular/buildClientContext.ts +11 -3
  87. package/src/modular/buildCodeModel.ts +221 -196
  88. package/src/modular/buildOperations.ts +23 -1
  89. package/src/modular/buildRootIndex.ts +2 -2
  90. package/src/modular/buildSharedTypes.ts +8 -10
  91. package/src/modular/emitModels.ts +14 -0
  92. package/src/modular/helpers/clientHelpers.ts +3 -13
  93. package/src/modular/helpers/credentialHelpers.ts +1 -1
  94. package/src/modular/helpers/fixmeHelpers.ts +3 -0
  95. package/src/modular/helpers/namingHelpers.ts +121 -1
  96. package/src/modular/helpers/operationHelpers.ts +173 -66
  97. package/src/modular/helpers/parameterHelpers.ts +1 -1
  98. package/src/modular/helpers/typeHelpers.ts +33 -12
  99. package/src/modular/modularCodeModel.ts +3 -1
  100. package/src/operationUtil.ts +24 -3
  101. package/src/transform/transform.ts +4 -1
  102. package/src/transform/transformApiVersionInfo.ts +8 -0
  103. package/src/transform/transformHelperFunctionDetails.ts +16 -0
  104. package/src/transform/transformParameters.ts +42 -40
  105. package/src/transform/transformPaths.ts +8 -0
  106. package/src/transform/transformResponses.ts +9 -1
  107. package/src/transform/transformSchemas.ts +8 -0
  108. package/.eslintrc.json +0 -23
  109. package/.prettierignore +0 -1
  110. package/.prettierrc +0 -7
  111. package/.rush/temp/operation/build/all.log +0 -1
  112. package/.rush/temp/operation/build/state.json +0 -3
  113. package/.rush/temp/package-deps_build.json +0 -442
  114. package/.rush/temp/shrinkwrap-deps.json +0 -490
  115. package/CONTRIBUTING.md +0 -137
  116. package/test/commands/cadl-ranch-list.ts +0 -116
  117. package/test/commands/check-clean-tree.ts +0 -55
  118. package/test/commands/childProcessOnExit.ts +0 -16
  119. package/test/commands/gen-cadl-ranch.ts +0 -25
  120. package/test/commands/run.ts +0 -31
  121. package/test/integration/arrayItemTypes.spec.ts +0 -96
  122. package/test/integration/authApiKey.spec.ts +0 -38
  123. package/test/integration/authOauth2.spec.ts +0 -65
  124. package/test/integration/authUnion.spec.ts +0 -72
  125. package/test/integration/azurecore.spec.ts +0 -170
  126. package/test/integration/collectionFormat.spec.ts +0 -118
  127. package/test/integration/dictionary.spec.ts +0 -106
  128. package/test/integration/extensibleEnums.spec.ts +0 -61
  129. package/test/integration/fixedEnums.spec.ts +0 -52
  130. package/test/integration/generated/arrays/itemTypes/src/arrayItemTypesClient.ts +0 -35
  131. package/test/integration/generated/arrays/itemTypes/src/clientDefinitions.ts +0 -165
  132. package/test/integration/generated/arrays/itemTypes/src/index.ts +0 -13
  133. package/test/integration/generated/arrays/itemTypes/src/logger.ts +0 -5
  134. package/test/integration/generated/arrays/itemTypes/src/models.ts +0 -9
  135. package/test/integration/generated/arrays/itemTypes/src/outputModels.ts +0 -9
  136. package/test/integration/generated/arrays/itemTypes/src/parameters.ts +0 -86
  137. package/test/integration/generated/arrays/itemTypes/src/responses.ts +0 -115
  138. package/test/integration/generated/arrays/itemTypes/tspconfig.yaml +0 -15
  139. package/test/integration/generated/authentication/apiKey/.eslintrc.json +0 -11
  140. package/test/integration/generated/authentication/apiKey/README.md +0 -56
  141. package/test/integration/generated/authentication/apiKey/api-extractor.json +0 -18
  142. package/test/integration/generated/authentication/apiKey/karma.conf.js +0 -133
  143. package/test/integration/generated/authentication/apiKey/package.json +0 -103
  144. package/test/integration/generated/authentication/apiKey/rollup.config.js +0 -118
  145. package/test/integration/generated/authentication/apiKey/src/authApiKeyClient.ts +0 -45
  146. package/test/integration/generated/authentication/apiKey/src/clientDefinitions.ts +0 -33
  147. package/test/integration/generated/authentication/apiKey/src/index.ts +0 -12
  148. package/test/integration/generated/authentication/apiKey/src/logger.ts +0 -5
  149. package/test/integration/generated/authentication/apiKey/src/outputModels.ts +0 -6
  150. package/test/integration/generated/authentication/apiKey/src/parameters.ts +0 -7
  151. package/test/integration/generated/authentication/apiKey/src/responses.ts +0 -21
  152. package/test/integration/generated/authentication/apiKey/test/public/sampleTest.spec.ts +0 -23
  153. package/test/integration/generated/authentication/apiKey/test/public/utils/env.browser.ts +0 -2
  154. package/test/integration/generated/authentication/apiKey/test/public/utils/env.ts +0 -6
  155. package/test/integration/generated/authentication/apiKey/test/public/utils/recordedClient.ts +0 -29
  156. package/test/integration/generated/authentication/apiKey/tsconfig.json +0 -25
  157. package/test/integration/generated/authentication/apiKey/tspconfig.yaml +0 -13
  158. package/test/integration/generated/authentication/oauth2/karma.conf.js +0 -133
  159. package/test/integration/generated/authentication/oauth2/src/authOauth2Client.ts +0 -45
  160. package/test/integration/generated/authentication/oauth2/src/clientDefinitions.ts +0 -33
  161. package/test/integration/generated/authentication/oauth2/src/index.ts +0 -12
  162. package/test/integration/generated/authentication/oauth2/src/logger.ts +0 -5
  163. package/test/integration/generated/authentication/oauth2/src/outputModels.ts +0 -6
  164. package/test/integration/generated/authentication/oauth2/src/parameters.ts +0 -7
  165. package/test/integration/generated/authentication/oauth2/src/responses.ts +0 -21
  166. package/test/integration/generated/authentication/oauth2/test/public/sampleTest.spec.ts +0 -23
  167. package/test/integration/generated/authentication/oauth2/test/public/utils/env.browser.ts +0 -2
  168. package/test/integration/generated/authentication/oauth2/test/public/utils/env.ts +0 -6
  169. package/test/integration/generated/authentication/oauth2/test/public/utils/recordedClient.ts +0 -29
  170. package/test/integration/generated/authentication/oauth2/tspconfig.yaml +0 -15
  171. package/test/integration/generated/authentication/union/karma.conf.js +0 -133
  172. package/test/integration/generated/authentication/union/src/authUnionClient.ts +0 -46
  173. package/test/integration/generated/authentication/union/src/clientDefinitions.ts +0 -27
  174. package/test/integration/generated/authentication/union/src/index.ts +0 -11
  175. package/test/integration/generated/authentication/union/src/logger.ts +0 -5
  176. package/test/integration/generated/authentication/union/src/parameters.ts +0 -7
  177. package/test/integration/generated/authentication/union/src/responses.ts +0 -14
  178. package/test/integration/generated/authentication/union/test/public/sampleTest.spec.ts +0 -23
  179. package/test/integration/generated/authentication/union/test/public/utils/env.browser.ts +0 -2
  180. package/test/integration/generated/authentication/union/test/public/utils/env.ts +0 -6
  181. package/test/integration/generated/authentication/union/test/public/utils/recordedClient.ts +0 -29
  182. package/test/integration/generated/authentication/union/tspconfig.yaml +0 -15
  183. package/test/integration/generated/azure/core/.eslintrc.json +0 -11
  184. package/test/integration/generated/azure/core/README.md +0 -56
  185. package/test/integration/generated/azure/core/api-extractor.json +0 -18
  186. package/test/integration/generated/azure/core/package.json +0 -81
  187. package/test/integration/generated/azure/core/rollup.config.js +0 -118
  188. package/test/integration/generated/azure/core/src/azureCoreClient.ts +0 -35
  189. package/test/integration/generated/azure/core/src/clientDefinitions.ts +0 -108
  190. package/test/integration/generated/azure/core/src/index.ts +0 -16
  191. package/test/integration/generated/azure/core/src/isUnexpected.ts +0 -178
  192. package/test/integration/generated/azure/core/src/logger.ts +0 -5
  193. package/test/integration/generated/azure/core/src/models.ts +0 -18
  194. package/test/integration/generated/azure/core/src/outputModels.ts +0 -38
  195. package/test/integration/generated/azure/core/src/paginateHelper.ts +0 -204
  196. package/test/integration/generated/azure/core/src/parameters.ts +0 -68
  197. package/test/integration/generated/azure/core/src/responses.ts +0 -158
  198. package/test/integration/generated/azure/core/src/serializeHelper.ts +0 -16
  199. package/test/integration/generated/azure/core/tsconfig.json +0 -25
  200. package/test/integration/generated/azure/core/tspconfig.yaml +0 -15
  201. package/test/integration/generated/azure/core-traits/.eslintrc.json +0 -11
  202. package/test/integration/generated/azure/core-traits/README.md +0 -56
  203. package/test/integration/generated/azure/core-traits/api-extractor.json +0 -18
  204. package/test/integration/generated/azure/core-traits/package.json +0 -80
  205. package/test/integration/generated/azure/core-traits/rollup.config.js +0 -118
  206. package/test/integration/generated/azure/core-traits/src/azureCoreTraitsClient.ts +0 -35
  207. package/test/integration/generated/azure/core-traits/src/clientDefinitions.ts +0 -22
  208. package/test/integration/generated/azure/core-traits/src/index.ts +0 -13
  209. package/test/integration/generated/azure/core-traits/src/isUnexpected.ts +0 -97
  210. package/test/integration/generated/azure/core-traits/src/logger.ts +0 -5
  211. package/test/integration/generated/azure/core-traits/src/outputModels.ts +0 -25
  212. package/test/integration/generated/azure/core-traits/src/parameters.ts +0 -26
  213. package/test/integration/generated/azure/core-traits/src/responses.ts +0 -32
  214. package/test/integration/generated/azure/core-traits/tsconfig.json +0 -25
  215. package/test/integration/generated/azure/core-traits/tspconfig.yaml +0 -15
  216. package/test/integration/generated/dictionary/.eslintrc.json +0 -11
  217. package/test/integration/generated/dictionary/README.md +0 -56
  218. package/test/integration/generated/dictionary/api-extractor.json +0 -18
  219. package/test/integration/generated/dictionary/package.json +0 -80
  220. package/test/integration/generated/dictionary/rollup.config.js +0 -118
  221. package/test/integration/generated/dictionary/src/clientDefinitions.ts +0 -180
  222. package/test/integration/generated/dictionary/src/dictClient.ts +0 -33
  223. package/test/integration/generated/dictionary/src/index.ts +0 -13
  224. package/test/integration/generated/dictionary/src/logger.ts +0 -5
  225. package/test/integration/generated/dictionary/src/models.ts +0 -9
  226. package/test/integration/generated/dictionary/src/outputModels.ts +0 -9
  227. package/test/integration/generated/dictionary/src/parameters.ts +0 -94
  228. package/test/integration/generated/dictionary/src/responses.ts +0 -126
  229. package/test/integration/generated/dictionary/tsconfig.json +0 -25
  230. package/test/integration/generated/dictionary/tspconfig.yaml +0 -15
  231. package/test/integration/generated/enums/extensible/.eslintrc.json +0 -11
  232. package/test/integration/generated/enums/extensible/README.md +0 -56
  233. package/test/integration/generated/enums/extensible/api-extractor.json +0 -18
  234. package/test/integration/generated/enums/extensible/package.json +0 -80
  235. package/test/integration/generated/enums/extensible/rollup.config.js +0 -118
  236. package/test/integration/generated/enums/extensible/src/clientDefinitions.ts +0 -45
  237. package/test/integration/generated/enums/extensible/src/index.ts +0 -11
  238. package/test/integration/generated/enums/extensible/src/logger.ts +0 -5
  239. package/test/integration/generated/enums/extensible/src/parameters.ts +0 -23
  240. package/test/integration/generated/enums/extensible/src/responses.ts +0 -26
  241. package/test/integration/generated/enums/extensible/src/typeEnumExtensible.ts +0 -35
  242. package/test/integration/generated/enums/extensible/tsconfig.json +0 -25
  243. package/test/integration/generated/enums/extensible/tspconfig.yaml +0 -14
  244. package/test/integration/generated/enums/fixed/.eslintrc.json +0 -11
  245. package/test/integration/generated/enums/fixed/README.md +0 -56
  246. package/test/integration/generated/enums/fixed/api-extractor.json +0 -18
  247. package/test/integration/generated/enums/fixed/package.json +0 -80
  248. package/test/integration/generated/enums/fixed/rollup.config.js +0 -118
  249. package/test/integration/generated/enums/fixed/src/clientDefinitions.ts +0 -43
  250. package/test/integration/generated/enums/fixed/src/index.ts +0 -11
  251. package/test/integration/generated/enums/fixed/src/logger.ts +0 -5
  252. package/test/integration/generated/enums/fixed/src/parameters.ts +0 -36
  253. package/test/integration/generated/enums/fixed/src/responses.ts +0 -27
  254. package/test/integration/generated/enums/fixed/src/typeEnumFixed.ts +0 -35
  255. package/test/integration/generated/enums/fixed/tsconfig.json +0 -25
  256. package/test/integration/generated/enums/fixed/tspconfig.yaml +0 -14
  257. package/test/integration/generated/hello/.eslintrc.json +0 -11
  258. package/test/integration/generated/hello/README.md +0 -56
  259. package/test/integration/generated/hello/api-extractor.json +0 -18
  260. package/test/integration/generated/hello/package.json +0 -80
  261. package/test/integration/generated/hello/rollup.config.js +0 -118
  262. package/test/integration/generated/hello/src/clientDefinitions.ts +0 -19
  263. package/test/integration/generated/hello/src/hello.ts +0 -29
  264. package/test/integration/generated/hello/src/index.ts +0 -11
  265. package/test/integration/generated/hello/src/parameters.ts +0 -6
  266. package/test/integration/generated/hello/src/responses.ts +0 -10
  267. package/test/integration/generated/hello/tsconfig.json +0 -25
  268. package/test/integration/generated/hello/tspconfig.yaml +0 -14
  269. package/test/integration/generated/internal/src/clientDefinitions.ts +0 -53
  270. package/test/integration/generated/internal/src/index.ts +0 -12
  271. package/test/integration/generated/internal/src/internalClient.ts +0 -35
  272. package/test/integration/generated/internal/src/logger.ts +0 -5
  273. package/test/integration/generated/internal/src/outputModels.ts +0 -17
  274. package/test/integration/generated/internal/src/parameters.ts +0 -45
  275. package/test/integration/generated/internal/src/responses.ts +0 -33
  276. package/test/integration/generated/internal/tspconfig.yaml +0 -14
  277. package/test/integration/generated/lro/lroCore/.eslintrc.json +0 -11
  278. package/test/integration/generated/lro/lroCore/README.md +0 -56
  279. package/test/integration/generated/lro/lroCore/api-extractor.json +0 -18
  280. package/test/integration/generated/lro/lroCore/package.json +0 -82
  281. package/test/integration/generated/lro/lroCore/rollup.config.js +0 -118
  282. package/test/integration/generated/lro/lroCore/src/clientDefinitions.ts +0 -54
  283. package/test/integration/generated/lro/lroCore/src/index.ts +0 -15
  284. package/test/integration/generated/lro/lroCore/src/isUnexpected.ts +0 -135
  285. package/test/integration/generated/lro/lroCore/src/logger.ts +0 -5
  286. package/test/integration/generated/lro/lroCore/src/models.ts +0 -8
  287. package/test/integration/generated/lro/lroCore/src/outputModels.ts +0 -50
  288. package/test/integration/generated/lro/lroCore/src/parameters.ts +0 -25
  289. package/test/integration/generated/lro/lroCore/src/pollingHelper.ts +0 -113
  290. package/test/integration/generated/lro/lroCore/src/responses.ts +0 -109
  291. package/test/integration/generated/lro/lroCore/src/specsAzureCoreLroStandard.ts +0 -35
  292. package/test/integration/generated/lro/lroCore/tsconfig.json +0 -25
  293. package/test/integration/generated/lro/lroCore/tspconfig.yaml +0 -14
  294. package/test/integration/generated/lro/lroRPC/.eslintrc.json +0 -11
  295. package/test/integration/generated/lro/lroRPC/README.md +0 -56
  296. package/test/integration/generated/lro/lroRPC/api-extractor.json +0 -18
  297. package/test/integration/generated/lro/lroRPC/package.json +0 -82
  298. package/test/integration/generated/lro/lroRPC/rollup.config.js +0 -118
  299. package/test/integration/generated/lro/lroRPC/src/clientDefinitions.ts +0 -79
  300. package/test/integration/generated/lro/lroRPC/src/index.ts +0 -15
  301. package/test/integration/generated/lro/lroRPC/src/isUnexpected.ts +0 -153
  302. package/test/integration/generated/lro/lroRPC/src/logger.ts +0 -5
  303. package/test/integration/generated/lro/lroRPC/src/models.ts +0 -8
  304. package/test/integration/generated/lro/lroRPC/src/outputModels.ts +0 -40
  305. package/test/integration/generated/lro/lroRPC/src/parameters.ts +0 -20
  306. package/test/integration/generated/lro/lroRPC/src/pollingHelper.ts +0 -127
  307. package/test/integration/generated/lro/lroRPC/src/responses.ts +0 -124
  308. package/test/integration/generated/lro/lroRPC/src/specsAzureCoreLroRpc.ts +0 -35
  309. package/test/integration/generated/lro/lroRPC/tsconfig.json +0 -25
  310. package/test/integration/generated/lro/lroRPC/tspconfig.yaml +0 -14
  311. package/test/integration/generated/models/inheritance/.eslintrc.json +0 -11
  312. package/test/integration/generated/models/inheritance/README.md +0 -56
  313. package/test/integration/generated/models/inheritance/api-extractor.json +0 -18
  314. package/test/integration/generated/models/inheritance/package.json +0 -80
  315. package/test/integration/generated/models/inheritance/rollup.config.js +0 -118
  316. package/test/integration/generated/models/inheritance/src/clientDefinitions.ts +0 -81
  317. package/test/integration/generated/models/inheritance/src/index.ts +0 -13
  318. package/test/integration/generated/models/inheritance/src/logger.ts +0 -5
  319. package/test/integration/generated/models/inheritance/src/models.ts +0 -52
  320. package/test/integration/generated/models/inheritance/src/outputModels.ts +0 -52
  321. package/test/integration/generated/models/inheritance/src/parameters.ts +0 -35
  322. package/test/integration/generated/models/inheritance/src/responses.ts +0 -56
  323. package/test/integration/generated/models/inheritance/src/typeModelInheritance.ts +0 -35
  324. package/test/integration/generated/models/inheritance/tsconfig.json +0 -25
  325. package/test/integration/generated/models/inheritance/tspconfig.yaml +0 -14
  326. package/test/integration/generated/models/propertyNullable/.eslintrc.json +0 -11
  327. package/test/integration/generated/models/propertyNullable/README.md +0 -56
  328. package/test/integration/generated/models/propertyNullable/api-extractor.json +0 -18
  329. package/test/integration/generated/models/propertyNullable/package.json +0 -80
  330. package/test/integration/generated/models/propertyNullable/rollup.config.js +0 -118
  331. package/test/integration/generated/models/propertyNullable/src/clientDefinitions.ts +0 -227
  332. package/test/integration/generated/models/propertyNullable/src/index.ts +0 -13
  333. package/test/integration/generated/models/propertyNullable/src/logger.ts +0 -5
  334. package/test/integration/generated/models/propertyNullable/src/models.ts +0 -56
  335. package/test/integration/generated/models/propertyNullable/src/outputModels.ts +0 -56
  336. package/test/integration/generated/models/propertyNullable/src/parameters.ts +0 -197
  337. package/test/integration/generated/models/propertyNullable/src/responses.ts +0 -144
  338. package/test/integration/generated/models/propertyNullable/src/typePropertyNullable.ts +0 -35
  339. package/test/integration/generated/models/propertyNullable/tsconfig.json +0 -25
  340. package/test/integration/generated/models/propertyNullable/tspconfig.yaml +0 -14
  341. package/test/integration/generated/models/propertyOptional/.eslintrc.json +0 -11
  342. package/test/integration/generated/models/propertyOptional/README.md +0 -56
  343. package/test/integration/generated/models/propertyOptional/api-extractor.json +0 -18
  344. package/test/integration/generated/models/propertyOptional/package.json +0 -80
  345. package/test/integration/generated/models/propertyOptional/rollup.config.js +0 -118
  346. package/test/integration/generated/models/propertyOptional/src/clientDefinitions.ts +0 -263
  347. package/test/integration/generated/models/propertyOptional/src/index.ts +0 -13
  348. package/test/integration/generated/models/propertyOptional/src/logger.ts +0 -5
  349. package/test/integration/generated/models/propertyOptional/src/models.ts +0 -46
  350. package/test/integration/generated/models/propertyOptional/src/outputModels.ts +0 -46
  351. package/test/integration/generated/models/propertyOptional/src/parameters.ts +0 -125
  352. package/test/integration/generated/models/propertyOptional/src/responses.ts +0 -169
  353. package/test/integration/generated/models/propertyOptional/src/typePropertyOptional.ts +0 -35
  354. package/test/integration/generated/models/propertyOptional/tsconfig.json +0 -25
  355. package/test/integration/generated/models/propertyOptional/tspconfig.yaml +0 -14
  356. package/test/integration/generated/models/propertyTypes/.eslintrc.json +0 -11
  357. package/test/integration/generated/models/propertyTypes/README.md +0 -56
  358. package/test/integration/generated/models/propertyTypes/api-extractor.json +0 -18
  359. package/test/integration/generated/models/propertyTypes/package.json +0 -80
  360. package/test/integration/generated/models/propertyTypes/rollup.config.js +0 -118
  361. package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +0 -310
  362. package/test/integration/generated/models/propertyTypes/src/index.ts +0 -13
  363. package/test/integration/generated/models/propertyTypes/src/logger.ts +0 -5
  364. package/test/integration/generated/models/propertyTypes/src/models.ts +0 -123
  365. package/test/integration/generated/models/propertyTypes/src/outputModels.ts +0 -123
  366. package/test/integration/generated/models/propertyTypes/src/parameters.ts +0 -189
  367. package/test/integration/generated/models/propertyTypes/src/responses.ts +0 -234
  368. package/test/integration/generated/models/propertyTypes/src/typePropertyValueTypes.ts +0 -35
  369. package/test/integration/generated/models/propertyTypes/tsconfig.json +0 -25
  370. package/test/integration/generated/models/propertyTypes/tspconfig.yaml +0 -14
  371. package/test/integration/generated/models/usage/.eslintrc.json +0 -11
  372. package/test/integration/generated/models/usage/README.md +0 -56
  373. package/test/integration/generated/models/usage/api-extractor.json +0 -18
  374. package/test/integration/generated/models/usage/package.json +0 -80
  375. package/test/integration/generated/models/usage/rollup.config.js +0 -118
  376. package/test/integration/generated/models/usage/src/clientDefinitions.ts +0 -41
  377. package/test/integration/generated/models/usage/src/index.ts +0 -13
  378. package/test/integration/generated/models/usage/src/logger.ts +0 -5
  379. package/test/integration/generated/models/usage/src/models.ts +0 -12
  380. package/test/integration/generated/models/usage/src/outputModels.ts +0 -12
  381. package/test/integration/generated/models/usage/src/parameters.ts +0 -19
  382. package/test/integration/generated/models/usage/src/responses.ts +0 -22
  383. package/test/integration/generated/models/usage/src/typeModelUsage.ts +0 -35
  384. package/test/integration/generated/models/usage/tsconfig.json +0 -25
  385. package/test/integration/generated/models/usage/tspconfig.yaml +0 -14
  386. package/test/integration/generated/models/visibility/.eslintrc.json +0 -11
  387. package/test/integration/generated/models/visibility/README.md +0 -56
  388. package/test/integration/generated/models/visibility/api-extractor.json +0 -18
  389. package/test/integration/generated/models/visibility/package.json +0 -80
  390. package/test/integration/generated/models/visibility/rollup.config.js +0 -118
  391. package/test/integration/generated/models/visibility/src/clientDefinitions.ts +0 -40
  392. package/test/integration/generated/models/visibility/src/index.ts +0 -13
  393. package/test/integration/generated/models/visibility/src/logger.ts +0 -5
  394. package/test/integration/generated/models/visibility/src/models.ts +0 -14
  395. package/test/integration/generated/models/visibility/src/outputModels.ts +0 -16
  396. package/test/integration/generated/models/visibility/src/parameters.ts +0 -41
  397. package/test/integration/generated/models/visibility/src/responses.ts +0 -36
  398. package/test/integration/generated/models/visibility/src/typeModelVisibility.ts +0 -35
  399. package/test/integration/generated/models/visibility/tsconfig.json +0 -25
  400. package/test/integration/generated/models/visibility/tspconfig.yaml +0 -14
  401. package/test/integration/generated/parameters/collection-format/src/clientDefinitions.ts +0 -63
  402. package/test/integration/generated/parameters/collection-format/src/collectionFormatClient.ts +0 -35
  403. package/test/integration/generated/parameters/collection-format/src/index.ts +0 -12
  404. package/test/integration/generated/parameters/collection-format/src/logger.ts +0 -5
  405. package/test/integration/generated/parameters/collection-format/src/parameters.ts +0 -71
  406. package/test/integration/generated/parameters/collection-format/src/responses.ts +0 -34
  407. package/test/integration/generated/parameters/collection-format/src/serializeHelper.ts +0 -28
  408. package/test/integration/generated/parameters/collection-format/tspconfig.yaml +0 -14
  409. package/test/integration/generated/parameters/spread/src/clientDefinitions.ts +0 -61
  410. package/test/integration/generated/parameters/spread/src/index.ts +0 -12
  411. package/test/integration/generated/parameters/spread/src/logger.ts +0 -5
  412. package/test/integration/generated/parameters/spread/src/models.ts +0 -7
  413. package/test/integration/generated/parameters/spread/src/parameters.ts +0 -61
  414. package/test/integration/generated/parameters/spread/src/parametersSpread.ts +0 -35
  415. package/test/integration/generated/parameters/spread/src/responses.ts +0 -25
  416. package/test/integration/generated/parameters/spread/tspconfig.yaml +0 -12
  417. package/test/integration/generated/projection/src/clientDefinitions.ts +0 -71
  418. package/test/integration/generated/projection/src/index.ts +0 -12
  419. package/test/integration/generated/projection/src/logger.ts +0 -5
  420. package/test/integration/generated/projection/src/models.ts +0 -22
  421. package/test/integration/generated/projection/src/parameters.ts +0 -48
  422. package/test/integration/generated/projection/src/projectionClient.ts +0 -35
  423. package/test/integration/generated/projection/src/responses.ts +0 -34
  424. package/test/integration/generated/projection/tspconfig.yaml +0 -14
  425. package/test/integration/generated/resiliency/srvDriven1/.eslintrc.json +0 -11
  426. package/test/integration/generated/resiliency/srvDriven1/README.md +0 -56
  427. package/test/integration/generated/resiliency/srvDriven1/api-extractor.json +0 -18
  428. package/test/integration/generated/resiliency/srvDriven1/package.json +0 -80
  429. package/test/integration/generated/resiliency/srvDriven1/rollup.config.js +0 -118
  430. package/test/integration/generated/resiliency/srvDriven1/src/clientDefinitions.ts +0 -46
  431. package/test/integration/generated/resiliency/srvDriven1/src/index.ts +0 -11
  432. package/test/integration/generated/resiliency/srvDriven1/src/logger.ts +0 -5
  433. package/test/integration/generated/resiliency/srvDriven1/src/parameters.ts +0 -30
  434. package/test/integration/generated/resiliency/srvDriven1/src/responses.ts +0 -19
  435. package/test/integration/generated/resiliency/srvDriven1/src/serviceDrivenOldClient.ts +0 -43
  436. package/test/integration/generated/resiliency/srvDriven1/tsconfig.json +0 -25
  437. package/test/integration/generated/resiliency/srvDriven1/tspconfig.yaml +0 -15
  438. package/test/integration/generated/resiliency/srvDriven2/.eslintrc.json +0 -11
  439. package/test/integration/generated/resiliency/srvDriven2/README.md +0 -65
  440. package/test/integration/generated/resiliency/srvDriven2/api-extractor.json +0 -18
  441. package/test/integration/generated/resiliency/srvDriven2/package.json +0 -80
  442. package/test/integration/generated/resiliency/srvDriven2/rollup.config.js +0 -118
  443. package/test/integration/generated/resiliency/srvDriven2/src/clientDefinitions.ts +0 -57
  444. package/test/integration/generated/resiliency/srvDriven2/src/index.ts +0 -11
  445. package/test/integration/generated/resiliency/srvDriven2/src/logger.ts +0 -5
  446. package/test/integration/generated/resiliency/srvDriven2/src/parameters.ts +0 -45
  447. package/test/integration/generated/resiliency/srvDriven2/src/responses.ts +0 -24
  448. package/test/integration/generated/resiliency/srvDriven2/src/serviceDrivenNewClient.ts +0 -43
  449. package/test/integration/generated/resiliency/srvDriven2/tsconfig.json +0 -25
  450. package/test/integration/generated/resiliency/srvDriven2/tspconfig.yaml +0 -15
  451. package/test/integration/generated/server/path/multiple/src/clientDefinitions.ts +0 -35
  452. package/test/integration/generated/server/path/multiple/src/index.ts +0 -11
  453. package/test/integration/generated/server/path/multiple/src/logger.ts +0 -5
  454. package/test/integration/generated/server/path/multiple/src/multipleParamInServerPathClient.ts +0 -43
  455. package/test/integration/generated/server/path/multiple/src/parameters.ts +0 -7
  456. package/test/integration/generated/server/path/multiple/src/responses.ts +0 -14
  457. package/test/integration/generated/server/path/multiple/tspconfig.yaml +0 -14
  458. package/test/integration/generated/server/path/single/src/clientDefinitions.ts +0 -19
  459. package/test/integration/generated/server/path/single/src/index.ts +0 -11
  460. package/test/integration/generated/server/path/single/src/logger.ts +0 -5
  461. package/test/integration/generated/server/path/single/src/parameters.ts +0 -6
  462. package/test/integration/generated/server/path/single/src/responses.ts +0 -9
  463. package/test/integration/generated/server/path/single/src/singleParamInServerPathClient.ts +0 -38
  464. package/test/integration/generated/server/path/single/tspconfig.yaml +0 -14
  465. package/test/integration/generated/specialWords/src/clientDefinitions.ts +0 -61
  466. package/test/integration/generated/specialWords/src/index.ts +0 -13
  467. package/test/integration/generated/specialWords/src/logger.ts +0 -5
  468. package/test/integration/generated/specialWords/src/models.ts +0 -17
  469. package/test/integration/generated/specialWords/src/outputModels.ts +0 -17
  470. package/test/integration/generated/specialWords/src/parameters.ts +0 -37
  471. package/test/integration/generated/specialWords/src/responses.ts +0 -31
  472. package/test/integration/generated/specialWords/src/specialWordsClient.ts +0 -35
  473. package/test/integration/generated/specialWords/tspconfig.yaml +0 -14
  474. package/test/integration/generated/unions/src/clientDefinitions.ts +0 -53
  475. package/test/integration/generated/unions/src/index.ts +0 -12
  476. package/test/integration/generated/unions/src/logger.ts +0 -5
  477. package/test/integration/generated/unions/src/models.ts +0 -27
  478. package/test/integration/generated/unions/src/parameters.ts +0 -34
  479. package/test/integration/generated/unions/src/responses.ts +0 -24
  480. package/test/integration/generated/unions/src/unionsClient.ts +0 -35
  481. package/test/integration/generated/unions/tspconfig.yaml +0 -14
  482. package/test/integration/internal.spec.ts +0 -76
  483. package/test/integration/lroCore.spec.ts +0 -89
  484. package/test/integration/modelInheritance.spec.ts +0 -192
  485. package/test/integration/modelPropertyNullable.spec.ts +0 -115
  486. package/test/integration/modelPropertyOptional.spec.ts +0 -362
  487. package/test/integration/modelPropertyType.spec.ts +0 -135
  488. package/test/integration/modelUsage.spec.ts +0 -47
  489. package/test/integration/projection.spec.ts +0 -102
  490. package/test/integration/resiliencyDpgCustomization.spec.ts +0 -147
  491. package/test/integration/server.spec.ts +0 -59
  492. package/test/integration/specialWords.spec.ts +0 -73
  493. package/test/integration/spreadParameters.spec.ts +0 -82
  494. package/test/integration/unions.spec.ts +0 -69
  495. package/test/tsconfig.json +0 -4
  496. package/test/unit/apiVersion.spec.ts +0 -400
  497. package/test/unit/azureCoreOperationsGenerator.spec.ts +0 -71
  498. package/test/unit/clientDefinitionGenerator.spec.ts +0 -73
  499. package/test/unit/clientFactoryGenerator.spec.ts +0 -404
  500. package/test/unit/docsGenerator.spec.ts +0 -201
  501. package/test/unit/modelsGenerator.spec.ts +0 -1529
  502. package/test/unit/parametersGenerator.spec.ts +0 -561
  503. package/test/unit/responsesGenerator.spec.ts +0 -462
  504. package/test/unit/spreadAndAlias.spec.ts +0 -200
  505. package/test/unit/util/emitUtil.ts +0 -166
  506. package/test/unit/util/testUtil.ts +0 -88
  507. package/test/util/customBearerTokenTestingPolicy.ts +0 -78
  508. package/test/util/matrix.ts +0 -48
  509. package/tsconfig.json +0 -36
  510. package/tsconfig.test.json +0 -7
  511. package/typespec-ts.build.log +0 -1
@@ -1,8 +1,8 @@
1
1
  import { getPagedResult, isFixed } from "@azure-tools/typespec-azure-core";
2
- import { getDoc, getFriendlyName, getMaxLength, getMaxValue, getMinLength, getMinValue, getPattern, getSummary, getVisibility, ignoreDiagnostics, isErrorModel, isNeverType, getEffectiveModelType, getDiscriminator, isKey, isStringType, getPropertyType, isNumericType, getFormat, getMinItems, getMaxItems, listServices, isNullType, SyntaxKind, getProjectedName } from "@typespec/compiler";
2
+ import { getDoc, getFriendlyName, getMaxLength, getMaxValue, getMinLength, getMinValue, getPattern, getSummary, getVisibility, ignoreDiagnostics, isErrorModel, isNeverType, getEffectiveModelType, getDiscriminator, isKey, isStringType, getPropertyType, isNumericType, getFormat, getMinItems, getMaxItems, listServices, getProjectedName, isNullType } from "@typespec/compiler";
3
3
  import { getAuthentication, getHeaderFieldName, getHttpOperation, getPathParamName, getQueryParamName, getServers, isStatusCode, isHeader } from "@typespec/http";
4
4
  import { getAddedOnVersions } from "@typespec/versioning";
5
- import { listClients, listOperationGroups, listOperationsInOperationGroup, isApiVersion, getDefaultApiVersion, getClientNamespaceString, createSdkContext } from "@azure-tools/typespec-client-generator-core";
5
+ import { listClients, listOperationGroups, listOperationsInOperationGroup, isApiVersion, getDefaultApiVersion, getClientNamespaceString, createSdkContext, getSdkUnion, getAllModels, getSdkSimpleType } from "@azure-tools/typespec-client-generator-core";
6
6
  import { getResourceOperation } from "@typespec/rest";
7
7
  import { transformRLCOptions } from "../transform/transfromRLCOptions.js";
8
8
  import { camelToSnakeCase, toCamelCase } from "../casingUtils.js";
@@ -47,12 +47,12 @@ function isLro(_program, operation) {
47
47
  }
48
48
  return false;
49
49
  }
50
- function handleDiscriminator(program, type, model) {
51
- const discriminator = getDiscriminator(program, type);
50
+ function handleDiscriminator(context, type, model) {
51
+ const discriminator = getDiscriminator(context.program, type);
52
52
  if (discriminator) {
53
53
  let discriminatorProperty;
54
54
  for (const childModel of type.derivedModels) {
55
- const modelType = getType(program, childModel);
55
+ const modelType = getType(context, childModel);
56
56
  for (const property of modelType.properties) {
57
57
  if (property.restApiName === discriminator.propertyName) {
58
58
  modelType.discriminatorValue = property.type.value;
@@ -77,6 +77,7 @@ function handleDiscriminator(program, type, model) {
77
77
  }
78
78
  }
79
79
  function getEffectiveSchemaType(program, type) {
80
+ var _a;
80
81
  function isSchemaProperty(property) {
81
82
  const headerInfo = getHeaderFieldName(program, property);
82
83
  const queryInfo = getQueryParamName(program, property);
@@ -84,37 +85,78 @@ function getEffectiveSchemaType(program, type) {
84
85
  const statusCodeinfo = isStatusCode(program, property);
85
86
  return !(headerInfo || queryInfo || pathInfo || statusCodeinfo);
86
87
  }
87
- const effective = getEffectiveModelType(program, type, isSchemaProperty);
88
+ let effective;
89
+ if (type.kind === "Union") {
90
+ const nonNullOptions = [...type.variants.values()]
91
+ .map((x) => x.type)
92
+ .filter((t) => !isNullType(t));
93
+ if (nonNullOptions.length === 1 && ((_a = nonNullOptions[0]) === null || _a === void 0 ? void 0 : _a.kind) === "Model") {
94
+ effective = getEffectiveModelType(program, nonNullOptions[0]);
95
+ }
96
+ return type;
97
+ }
98
+ else {
99
+ effective = getEffectiveModelType(program, type, isSchemaProperty);
100
+ }
88
101
  if (effective.name) {
89
102
  return effective;
90
103
  }
91
104
  return type;
92
105
  }
93
- function getType(program, type) {
106
+ function isEmptyModel(type) {
107
+ // object, {}, Model{} all will be treated as empty model
108
+ return (type.kind === "Model" &&
109
+ type.properties.size === 0 &&
110
+ !type.baseModel &&
111
+ type.derivedModels.length === 0 &&
112
+ !type.indexer);
113
+ }
114
+ function processModelProperties(context, newValue, model) {
115
+ // need to do properties after insertion to avoid infinite recursion
116
+ for (const property of model.properties.values()) {
117
+ if (isStatusCode(context.program, property) ||
118
+ isNeverType(property.type) ||
119
+ isHeader(context.program, property)) {
120
+ continue;
121
+ }
122
+ newValue.properties.push(emitProperty(context, property));
123
+ }
124
+ // need to do discriminator outside `emitModel` to avoid infinite recursion
125
+ handleDiscriminator(context, model, newValue);
126
+ }
127
+ function getType(context, type, options = {}) {
94
128
  // don't cache simple type(string, int, etc) since decorators may change the result
95
- const enableCache = !isSimpleType(program, type);
96
- const effectiveModel = type.kind === "Model" ? getEffectiveSchemaType(program, type) : type;
129
+ const enableCache = !isSimpleType(context.program, type) && !isEmptyModel(type);
130
+ const effectiveModel = !options.disableEffectiveModel &&
131
+ (type.kind === "Model" || type.kind === "Union")
132
+ ? getEffectiveSchemaType(context.program, type)
133
+ : type;
97
134
  if (enableCache) {
98
135
  const cached = typesMap.get(effectiveModel);
99
136
  if (cached) {
100
137
  return cached;
101
138
  }
102
139
  }
103
- let newValue = emitType(program, type);
140
+ let newValue;
141
+ if (isEmptyModel(type)) {
142
+ // do not generate model for empty model, treat it as any
143
+ newValue = { type: "any" };
144
+ }
145
+ else {
146
+ newValue = emitType(context, type);
147
+ }
104
148
  if (enableCache) {
105
149
  typesMap.set(effectiveModel, newValue);
106
- if (type.kind === "Model") {
107
- // need to do properties after insertion to avoid infinite recursion
108
- for (const property of type.properties.values()) {
109
- if (isStatusCode(program, property) ||
110
- isNeverType(property.type) ||
111
- isHeader(program, property)) {
112
- continue;
150
+ if (type.kind === "Union") {
151
+ for (const t of type.variants.values()) {
152
+ if (t.type.kind === "Model") {
153
+ processModelProperties(context, newValue, t.type);
113
154
  }
114
- newValue.properties.push(emitProperty(program, property));
115
155
  }
116
- // need to do discriminator outside `emitModel` to avoid infinite recursion
117
- handleDiscriminator(program, type, newValue);
156
+ }
157
+ if (type.kind === "Model") {
158
+ // need to do properties after insertion to avoid infinite recursion
159
+ processModelProperties(context, newValue, type);
118
160
  }
119
161
  }
120
162
  else {
@@ -188,11 +230,11 @@ function getBodyType(program, route) {
188
230
  }
189
231
  return bodyModel;
190
232
  }
191
- function emitBodyParameter(program, httpOperation) {
233
+ function emitBodyParameter(context, httpOperation) {
192
234
  var _a, _b, _c, _d, _e;
193
235
  const params = httpOperation.parameters;
194
236
  const body = params.body;
195
- const base = emitParamBase(program, (_a = body.parameter) !== null && _a !== void 0 ? _a : body.type);
237
+ const base = emitParamBase(context.program, (_a = body.parameter) !== null && _a !== void 0 ? _a : body.type);
196
238
  let contentTypes = body.contentTypes;
197
239
  if (contentTypes.length === 0) {
198
240
  contentTypes = ["application/json"];
@@ -200,7 +242,9 @@ function emitBodyParameter(program, httpOperation) {
200
242
  if (contentTypes.length !== 1) {
201
243
  throw Error("Currently only one kind of content-type!");
202
244
  }
203
- const type = getType(program, getBodyType(program, httpOperation));
245
+ const type = getType(context, getBodyType(context.program, httpOperation), {
246
+ disableEffectiveModel: true
247
+ });
204
248
  if (type.type === "model" && type.name === "") {
205
249
  type.name = capitalize(httpOperation.operation.name) + "Request";
206
250
  }
@@ -217,7 +261,7 @@ function emitBodyParameter(program, httpOperation) {
217
261
  }
218
262
  function emitParameter(context, parameter, implementation) {
219
263
  const base = emitParamBase(context.program, parameter.param);
220
- let type = getType(context.program, parameter.param.type);
264
+ let type = getType(context, parameter.param.type);
221
265
  let clientDefaultValue = undefined;
222
266
  if (parameter.name.toLowerCase() === "content-type" &&
223
267
  type["type"] === "constant") {
@@ -249,23 +293,6 @@ function emitParameter(context, parameter, implementation) {
249
293
  }
250
294
  return { clientDefaultValue, ...base, ...paramMap };
251
295
  }
252
- function emitContentTypeParameter(bodyParameter, inOverload, inOverriden) {
253
- return {
254
- checkClientInput: false,
255
- clientDefaultValue: bodyParameter.defaultContentType,
256
- clientName: "content_type",
257
- delimiter: null,
258
- description: `Body parameter Content-Type. Known values are: ${bodyParameter.contentTypes}.`,
259
- implementation: "Method",
260
- inDocstring: true,
261
- inOverload: inOverload,
262
- inOverriden: inOverriden,
263
- location: "header",
264
- optional: true,
265
- restApiName: "Content-Type",
266
- type: { type: "string" }
267
- };
268
- }
269
296
  function emitFlattenedParameter(bodyParameter, property) {
270
297
  return {
271
298
  checkClientInput: false,
@@ -303,34 +330,14 @@ function getConstantType(key) {
303
330
  simpleTypesMap.set(key, type);
304
331
  return type;
305
332
  }
306
- function emitAcceptParameter(_program, inOverload, inOverriden) {
307
- return {
308
- checkClientInput: false,
309
- clientDefaultValue: "application/json",
310
- clientName: "accept",
311
- delimiter: null,
312
- description: "Accept header.",
313
- explode: false,
314
- groupedBy: null,
315
- implementation: "Method",
316
- inDocstring: true,
317
- inOverload: inOverload,
318
- inOverriden: inOverriden,
319
- location: "header",
320
- optional: false,
321
- restApiName: "Accept",
322
- skipUrlEncoding: false,
323
- type: getConstantType("application/json")
324
- };
325
- }
326
- function emitResponseHeaders(program, headers) {
333
+ function emitResponseHeaders(context, headers) {
327
334
  const retval = [];
328
335
  if (!headers) {
329
336
  return retval;
330
337
  }
331
338
  for (const [key, value] of Object.entries(headers)) {
332
339
  retval.push({
333
- type: getType(program, value.type),
340
+ type: getType(context, value.type),
334
341
  restApiName: key
335
342
  });
336
343
  }
@@ -349,7 +356,7 @@ function isAzureCoreErrorType(t) {
349
356
  }
350
357
  return namespaces.length == 0;
351
358
  }
352
- function emitResponse(program, response, innerResponse) {
359
+ function emitResponse(context, response, innerResponse) {
353
360
  var _a, _b;
354
361
  let type = undefined;
355
362
  if (((_a = innerResponse.body) === null || _a === void 0 ? void 0 : _a.type) &&
@@ -363,11 +370,11 @@ function emitResponse(program, response, innerResponse) {
363
370
  const originType = innerResponse.body.type;
364
371
  if (innerResponse.body.type.kind === "Model" &&
365
372
  candidate.find((e) => e === originType.name)) {
366
- const modelType = getEffectiveSchemaType(program, originType);
367
- type = getType(program, modelType);
373
+ const modelType = getEffectiveSchemaType(context.program, originType);
374
+ type = getType(context, modelType);
368
375
  }
369
376
  else {
370
- type = getType(program, innerResponse.body.type);
377
+ type = getType(context, innerResponse.body.type);
371
378
  }
372
379
  }
373
380
  const statusCodes = [];
@@ -378,9 +385,9 @@ function emitResponse(program, response, innerResponse) {
378
385
  statusCodes.push(parseInt(response.statusCode));
379
386
  }
380
387
  return {
381
- headers: emitResponseHeaders(program, innerResponse.headers),
388
+ headers: emitResponseHeaders(context, innerResponse.headers),
382
389
  statusCodes: statusCodes !== null && statusCodes !== void 0 ? statusCodes : [],
383
- addedOn: getAddedOnVersion(program, response.type),
390
+ addedOn: getAddedOnVersion(context.program, response.type),
384
391
  discriminator: "basic",
385
392
  type: type
386
393
  };
@@ -449,15 +456,9 @@ function emitBasicOperation(context, operation, operationGroupName) {
449
456
  const responses = [];
450
457
  const exceptions = [];
451
458
  const isOverload = false;
452
- const isOverriden = false;
453
459
  for (const response of httpOperation.responses) {
454
460
  for (const innerResponse of response.responses) {
455
- const emittedResponse = emitResponse(context.program, response, innerResponse);
456
- if (emittedResponse["type"] &&
457
- parameters.filter((e) => e.restApiName.toLowerCase() === "accept")
458
- .length === 0) {
459
- parameters.push(emitAcceptParameter(context.program, isOverload, isOverriden));
460
- }
461
+ const emittedResponse = emitResponse(context, response, innerResponse);
461
462
  if (isErrorModel(context.program, response.type)) {
462
463
  // * is valid status code in cadl but invalid for autorest.python
463
464
  if (response.statusCode === "*") {
@@ -474,11 +475,7 @@ function emitBasicOperation(context, operation, operationGroupName) {
474
475
  bodyParameter = undefined;
475
476
  }
476
477
  else {
477
- bodyParameter = emitBodyParameter(context.program, httpOperation);
478
- if (parameters.filter((e) => e.restApiName.toLowerCase() === "content-type")
479
- .length === 0) {
480
- parameters.push(emitContentTypeParameter(bodyParameter, isOverload, isOverriden));
481
- }
478
+ bodyParameter = emitBodyParameter(context, httpOperation);
482
479
  if (bodyParameter.type.type === "model" &&
483
480
  bodyParameter.type.base === "json") {
484
481
  bodyParameter["propertyToParameterName"] = {};
@@ -522,8 +519,8 @@ function isReadOnly(program, type) {
522
519
  return false;
523
520
  }
524
521
  }
525
- function emitProperty(program, property) {
526
- var _a;
522
+ function emitProperty(context, property) {
523
+ var _a, _b;
527
524
  let clientDefaultValue = undefined;
528
525
  const propertyDefaultKind = (_a = property.default) === null || _a === void 0 ? void 0 : _a.kind;
529
526
  if (property.default &&
@@ -532,15 +529,20 @@ function emitProperty(program, property) {
532
529
  propertyDefaultKind === "Boolean")) {
533
530
  clientDefaultValue = property.default.value;
534
531
  }
535
- const restApiName = getProjectedName(program, property, "json");
532
+ // const [clientName, jsonName] = getPropertyNames(context, property);
533
+ const clientName = property.name;
534
+ const jsonName = (_b = getProjectedName(context.program, property, "json")) !== null && _b !== void 0 ? _b : property.name;
535
+ if (property.model) {
536
+ getType(context, property.model);
537
+ }
536
538
  return {
537
- clientName: applyCasing(property.name, { casing: CASING }),
538
- restApiName: restApiName !== null && restApiName !== void 0 ? restApiName : property.name,
539
- type: getType(program, property.type),
539
+ clientName: applyCasing(clientName, { casing: CASING }),
540
+ restApiName: jsonName,
541
+ type: getType(context, property.type),
540
542
  optional: property.optional,
541
- description: getDocStr(program, property),
542
- addedOn: getAddedOnVersion(program, property),
543
- readonly: isReadOnly(program, property) || isKey(program, property),
543
+ description: getDocStr(context.program, property),
544
+ addedOn: getAddedOnVersion(context.program, property),
545
+ readonly: isReadOnly(context.program, property) || isKey(context.program, property),
544
546
  clientDefaultValue: clientDefaultValue
545
547
  };
546
548
  }
@@ -563,23 +565,25 @@ function getName(program, type) {
563
565
  }
564
566
  }
565
567
  }
566
- function emitModel(program, type) {
568
+ function emitModel(context, type) {
567
569
  // Now we know it's a defined model
568
570
  const properties = [];
569
571
  let baseModel = undefined;
570
572
  if (type.baseModel) {
571
- baseModel = getType(program, type.baseModel);
573
+ baseModel = getType(context, type.baseModel);
572
574
  }
573
- const effectiveName = getEffectiveSchemaType(program, type).name;
574
- const modelName = effectiveName ? effectiveName : getName(program, type);
575
+ const effectiveName = getEffectiveSchemaType(context.program, type).name;
576
+ const modelName = effectiveName
577
+ ? effectiveName
578
+ : getName(context.program, type);
575
579
  return {
576
580
  type: "model",
577
581
  name: modelName,
578
- description: getDocStr(program, type),
582
+ description: getDocStr(context.program, type),
579
583
  parents: baseModel ? [baseModel] : [],
580
584
  discriminatedSubtypes: {},
581
585
  properties: properties,
582
- addedOn: getAddedOnVersion(program, type),
586
+ addedOn: getAddedOnVersion(context.program, type),
583
587
  snakeCaseName: modelName
584
588
  ? applyCasing(modelName, { casing: CASING })
585
589
  : modelName,
@@ -664,7 +668,7 @@ function emitCredentialUnion(cred_types) {
664
668
  function emitStdScalar(scalar) {
665
669
  switch (scalar.name) {
666
670
  case "bytes":
667
- return { type: "byte-array", format: "byte" };
671
+ return { type: "Uint8Array", format: "byte" };
668
672
  case "int8":
669
673
  case "int16":
670
674
  case "int32":
@@ -751,27 +755,27 @@ function emitScalar(program, scalar) {
751
755
  }
752
756
  return applyIntrinsicDecorators(program, scalar, result);
753
757
  }
754
- function emitListOrDict(program, type) {
758
+ function emitListOrDict(context, type) {
755
759
  if (type.indexer !== undefined) {
756
760
  if (!isNeverType(type.indexer.key)) {
757
761
  const name = type.indexer.key.name;
758
762
  if (name === "string") {
759
763
  return {
760
764
  type: "dict",
761
- elementType: getType(program, type.indexer.value)
765
+ elementType: getType(context, type.indexer.value)
762
766
  };
763
767
  }
764
768
  else if (name === "integer") {
765
769
  return {
766
770
  type: "list",
767
- elementType: getType(program, type.indexer.value)
771
+ elementType: getType(context, type.indexer.value)
768
772
  };
769
773
  }
770
774
  }
771
775
  }
772
776
  return undefined;
773
777
  }
774
- function mapCadlType(program, type) {
778
+ function mapCadlType(context, type) {
775
779
  switch (type.kind) {
776
780
  case "Number":
777
781
  return constantType(type.value, intOrFloat(type.value));
@@ -780,82 +784,95 @@ function mapCadlType(program, type) {
780
784
  case "Boolean":
781
785
  return constantType(type.value, "boolean");
782
786
  case "Model":
783
- return emitListOrDict(program, type);
787
+ return emitListOrDict(context, type);
784
788
  }
785
789
  }
786
790
  function capitalize(name) {
787
791
  return name[0].toUpperCase() + name.slice(1);
788
792
  }
789
- function emitUnion(program, type) {
790
- const nonNullOptions = [...type.variants.values()]
791
- .map((x) => x.type)
792
- .filter((t) => !isNullType(t));
793
- const notLiteral = (t) => ["Boolean", "Number", "String"].indexOf(t.kind) < 0;
794
- if (nonNullOptions.length > 1) {
795
- if (nonNullOptions.every(notLiteral)) {
796
- // Generate as CombinedType if non of the options is Literal.
797
- const unionName = `MyCombinedType`;
798
- return {
799
- name: unionName,
800
- snakeCaseName: applyCasing(unionName, { casing: CASING }),
801
- description: `Type of ${unionName}`,
802
- isPublic: false,
803
- type: "combined",
804
- types: nonNullOptions.map((x) => emitType(program, x)),
805
- xmlMetadata: {}
806
- };
807
- }
808
- else if (nonNullOptions.some(notLiteral)) {
809
- // Can't generate if this union is a mixed up of literals and sub-types
810
- throw Error(`Can't do union for ${JSON.stringify(nonNullOptions)}`);
811
- }
793
+ function emitUnion(context, type) {
794
+ const sdkType = getSdkUnion(context, type);
795
+ if (sdkType === undefined) {
796
+ throw Error("Should not have an empty union");
812
797
  }
813
- // Geneate Union of Literals as Python Enum
814
- const values = [];
815
- for (const option of nonNullOptions) {
816
- const value = emitType(program, option)["value"];
817
- values.push({
818
- description: "",
819
- name: applyCasing(value, { casing: CASING }).toUpperCase(),
820
- value: value
821
- });
798
+ if (sdkType.kind === "union") {
799
+ const unionName = type.name;
800
+ return {
801
+ nullable: sdkType.nullable,
802
+ name: unionName,
803
+ description: `Type of ${unionName}`,
804
+ internal: true,
805
+ type: "combined",
806
+ types: sdkType.values.map((x) => getType(context, x.__raw)),
807
+ xmlMetadata: {}
808
+ };
822
809
  }
823
- let enumName = "MyEnum";
824
- if (type.node &&
825
- type.node.parent &&
826
- [SyntaxKind.ModelStatement, SyntaxKind.ModelProperty].includes(type.node.parent.kind)) {
827
- if (type.node.parent.kind === SyntaxKind.ModelStatement) {
828
- enumName = capitalize(type.node.parent.id.sv);
829
- }
830
- else if (type.node.parent.kind === SyntaxKind.ModelProperty) {
831
- const parent = type.node.parent;
832
- if (parent.id.sv) {
833
- enumName = capitalize(parent.id.sv) + "Type";
834
- }
835
- }
810
+ else if (sdkType.kind === "enum") {
811
+ return {
812
+ name: sdkType.name,
813
+ nullable: sdkType.nullable,
814
+ description: sdkType.doc || `Type of ${sdkType.name}`,
815
+ internal: true,
816
+ type: sdkType.kind,
817
+ valueType: emitSimpleType(context, sdkType.valueType),
818
+ values: sdkType.values.map((x) => emitEnumMember(x)),
819
+ isFixed: sdkType.isFixed === false ? false : true,
820
+ xmlMetadata: {}
821
+ };
822
+ }
823
+ else {
824
+ return { nullable: sdkType.nullable, ...emitType(context, sdkType.__raw) };
836
825
  }
826
+ }
827
+ function emitEnumMember(type) {
837
828
  return {
838
- name: enumName,
839
- snakeCaseName: applyCasing(enumName, { casing: CASING }),
840
- description: `Type of ${enumName}`,
841
- isPublic: false,
842
- type: "enum",
843
- valueType: emitType(program, nonNullOptions[0])["valueType"],
844
- values: values,
845
- xmlMetadata: {}
829
+ name: enumName(type.name),
830
+ value: type.value,
831
+ description: type.doc
832
+ };
833
+ }
834
+ function emitSimpleType(context, type) {
835
+ let sdkType;
836
+ if (type.kind === "Scalar" || type.kind === "Intrinsic") {
837
+ sdkType = getSdkSimpleType(context, type);
838
+ }
839
+ else {
840
+ sdkType = type;
841
+ }
842
+ const extraInformation = {};
843
+ if (sdkType.kind === "string") {
844
+ extraInformation["pattern"] = sdkType.pattern;
845
+ extraInformation["minLength"] = sdkType.minLength;
846
+ extraInformation["maxLength"] = sdkType.maxLength;
847
+ }
848
+ else if (sdkType.kind === "int32" ||
849
+ sdkType.kind === "int64" ||
850
+ sdkType.kind === "float32" ||
851
+ sdkType.kind === "float64") {
852
+ extraInformation["minValue"] = sdkType.minValue;
853
+ extraInformation["maxValue"] = sdkType.maxValue;
854
+ }
855
+ return {
856
+ nullable: sdkType.nullable,
857
+ type: "number",
858
+ doc: sdkType.doc,
859
+ apiVersions: sdkType.apiVersions,
860
+ sdkDefaultValue: sdkType.sdkDefaultValue,
861
+ format: sdkType.format,
862
+ ...extraInformation
846
863
  };
847
864
  }
848
- function emitType(program, type) {
865
+ function emitType(context, type) {
849
866
  if (type.kind === "Credential") {
850
867
  return emitCredential(type.scheme);
851
868
  }
852
869
  if (type.kind === "CredentialTypeUnion") {
853
870
  return emitCredentialUnion(type);
854
871
  }
855
- const builtinType = mapCadlType(program, type);
872
+ const builtinType = mapCadlType(context, type);
856
873
  if (builtinType !== undefined) {
857
874
  // add in description elements for types derived from primitive types (SecureString, etc.)
858
- const doc = getDoc(program, type);
875
+ const doc = getDoc(context.program, type);
859
876
  if (doc) {
860
877
  builtinType.description = doc;
861
878
  }
@@ -863,17 +880,17 @@ function emitType(program, type) {
863
880
  }
864
881
  switch (type.kind) {
865
882
  case "Intrinsic":
866
- return { type: "any" };
883
+ return { type: type.name };
867
884
  case "Model":
868
- return emitModel(program, type);
885
+ return emitModel(context, type);
869
886
  case "Scalar":
870
- return emitScalar(program, type);
887
+ return emitScalar(context.program, type);
871
888
  case "Union":
872
- return emitUnion(program, type);
889
+ return emitUnion(context, type);
873
890
  case "UnionVariant":
874
891
  return {};
875
892
  case "Enum":
876
- return emitEnum(program, type);
893
+ return emitEnum(context.program, type);
877
894
  default:
878
895
  throw Error(`Not supported ${type.kind}`);
879
896
  }
@@ -964,8 +981,8 @@ function emitServerParams(context, namespace) {
964
981
  ];
965
982
  }
966
983
  }
967
- function emitCredentialParam(program, namespace) {
968
- const auth = getAuthentication(program, namespace);
984
+ function emitCredentialParam(context, namespace) {
985
+ const auth = getAuthentication(context.program, namespace);
969
986
  if (auth) {
970
987
  const credential_types = [];
971
988
  for (const option of auth.options) {
@@ -989,7 +1006,7 @@ function emitCredentialParam(program, namespace) {
989
1006
  };
990
1007
  }
991
1008
  return {
992
- type: getType(program, type),
1009
+ type: getType(context, type),
993
1010
  optional: false,
994
1011
  description: "Credential needed for the client to connect to Azure.",
995
1012
  clientName: "credential",
@@ -1005,7 +1022,7 @@ function emitCredentialParam(program, namespace) {
1005
1022
  }
1006
1023
  function emitGlobalParameters(context, namespace) {
1007
1024
  const clientParameters = emitServerParams(context, namespace);
1008
- const credentialParam = emitCredentialParam(context.program, namespace);
1025
+ const credentialParam = emitCredentialParam(context, namespace);
1009
1026
  if (credentialParam) {
1010
1027
  clientParameters.push(credentialParam);
1011
1028
  }
@@ -1092,6 +1109,10 @@ export function emitCodeModel(context, options = { casing: "snake" }) {
1092
1109
  clients: [],
1093
1110
  types: []
1094
1111
  };
1112
+ const allModels = getAllModels(dpgContext);
1113
+ for (const model of allModels) {
1114
+ getType(dpgContext, model);
1115
+ }
1095
1116
  for (const namespace of getNamespaces(dpgContext)) {
1096
1117
  if (namespace === clientNamespaceString) {
1097
1118
  codeModel.clients = emitClients(dpgContext, namespace);
@@ -1100,9 +1121,9 @@ export function emitCodeModel(context, options = { casing: "snake" }) {
1100
1121
  codeModel["subnamespaceToClients"][namespace] = emitClients(dpgContext, namespace);
1101
1122
  }
1102
1123
  }
1103
- codeModel.types = [
1104
- ...[...typesMap.values()].filter((t) => t.name !== "object"),
1124
+ codeModel["types"] = [
1105
1125
  { type: "string" },
1126
+ ...typesMap.values(),
1106
1127
  ...simpleTypesMap.values()
1107
1128
  ];
1108
1129
  return codeModel;