@azure-tools/typespec-ts 0.13.0 → 0.13.1-alpha.20230609.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 (512) 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 +10 -1
  42. package/dist/src/modular/helpers/namingHelpers.d.ts.map +1 -1
  43. package/dist/src/modular/helpers/namingHelpers.js +20 -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 +27 -1
  67. package/dist/src/transform/transformHelperFunctionDetails.js.map +1 -1
  68. package/dist/src/transform/transformParameters.d.ts +1 -0
  69. package/dist/src/transform/transformParameters.d.ts.map +1 -1
  70. package/dist/src/transform/transformParameters.js +36 -35
  71. package/dist/src/transform/transformParameters.js.map +1 -1
  72. package/dist/src/transform/transformPaths.d.ts.map +1 -1
  73. package/dist/src/transform/transformPaths.js +9 -0
  74. package/dist/src/transform/transformPaths.js.map +1 -1
  75. package/dist/src/transform/transformResponses.d.ts.map +1 -1
  76. package/dist/src/transform/transformResponses.js +10 -1
  77. package/dist/src/transform/transformResponses.js.map +1 -1
  78. package/dist/src/transform/transformSchemas.d.ts.map +1 -1
  79. package/dist/src/transform/transformSchemas.js +9 -0
  80. package/dist/src/transform/transformSchemas.js.map +1 -1
  81. package/dist/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +20 -15
  83. package/src/index.ts +47 -2
  84. package/src/modelUtils.ts +90 -15
  85. package/src/modular/buildApiIndex.ts +3 -1
  86. package/src/modular/buildClassicalClient.ts +8 -6
  87. package/src/modular/buildClientContext.ts +11 -3
  88. package/src/modular/buildCodeModel.ts +221 -196
  89. package/src/modular/buildOperations.ts +23 -1
  90. package/src/modular/buildRootIndex.ts +2 -2
  91. package/src/modular/buildSharedTypes.ts +8 -10
  92. package/src/modular/emitModels.ts +14 -0
  93. package/src/modular/helpers/clientHelpers.ts +3 -13
  94. package/src/modular/helpers/credentialHelpers.ts +1 -1
  95. package/src/modular/helpers/fixmeHelpers.ts +3 -0
  96. package/src/modular/helpers/namingHelpers.ts +35 -1
  97. package/src/modular/helpers/operationHelpers.ts +173 -66
  98. package/src/modular/helpers/parameterHelpers.ts +1 -1
  99. package/src/modular/helpers/typeHelpers.ts +33 -12
  100. package/src/modular/modularCodeModel.ts +3 -1
  101. package/src/operationUtil.ts +24 -3
  102. package/src/transform/transform.ts +4 -1
  103. package/src/transform/transformApiVersionInfo.ts +8 -0
  104. package/src/transform/transformHelperFunctionDetails.ts +25 -1
  105. package/src/transform/transformParameters.ts +52 -41
  106. package/src/transform/transformPaths.ts +8 -0
  107. package/src/transform/transformResponses.ts +9 -1
  108. package/src/transform/transformSchemas.ts +8 -0
  109. package/.eslintrc.json +0 -23
  110. package/.prettierignore +0 -1
  111. package/.prettierrc +0 -7
  112. package/.rush/temp/operation/build/all.log +0 -1
  113. package/.rush/temp/operation/build/state.json +0 -3
  114. package/.rush/temp/package-deps_build.json +0 -442
  115. package/.rush/temp/shrinkwrap-deps.json +0 -490
  116. package/CONTRIBUTING.md +0 -137
  117. package/test/commands/cadl-ranch-list.ts +0 -116
  118. package/test/commands/check-clean-tree.ts +0 -55
  119. package/test/commands/childProcessOnExit.ts +0 -16
  120. package/test/commands/gen-cadl-ranch.ts +0 -25
  121. package/test/commands/run.ts +0 -31
  122. package/test/integration/arrayItemTypes.spec.ts +0 -96
  123. package/test/integration/authApiKey.spec.ts +0 -38
  124. package/test/integration/authOauth2.spec.ts +0 -65
  125. package/test/integration/authUnion.spec.ts +0 -72
  126. package/test/integration/azurecore.spec.ts +0 -170
  127. package/test/integration/collectionFormat.spec.ts +0 -118
  128. package/test/integration/dictionary.spec.ts +0 -106
  129. package/test/integration/extensibleEnums.spec.ts +0 -61
  130. package/test/integration/fixedEnums.spec.ts +0 -52
  131. package/test/integration/generated/arrays/itemTypes/src/arrayItemTypesClient.ts +0 -35
  132. package/test/integration/generated/arrays/itemTypes/src/clientDefinitions.ts +0 -165
  133. package/test/integration/generated/arrays/itemTypes/src/index.ts +0 -13
  134. package/test/integration/generated/arrays/itemTypes/src/logger.ts +0 -5
  135. package/test/integration/generated/arrays/itemTypes/src/models.ts +0 -9
  136. package/test/integration/generated/arrays/itemTypes/src/outputModels.ts +0 -9
  137. package/test/integration/generated/arrays/itemTypes/src/parameters.ts +0 -86
  138. package/test/integration/generated/arrays/itemTypes/src/responses.ts +0 -115
  139. package/test/integration/generated/arrays/itemTypes/tspconfig.yaml +0 -15
  140. package/test/integration/generated/authentication/apiKey/.eslintrc.json +0 -11
  141. package/test/integration/generated/authentication/apiKey/README.md +0 -56
  142. package/test/integration/generated/authentication/apiKey/api-extractor.json +0 -18
  143. package/test/integration/generated/authentication/apiKey/karma.conf.js +0 -133
  144. package/test/integration/generated/authentication/apiKey/package.json +0 -103
  145. package/test/integration/generated/authentication/apiKey/rollup.config.js +0 -118
  146. package/test/integration/generated/authentication/apiKey/src/authApiKeyClient.ts +0 -45
  147. package/test/integration/generated/authentication/apiKey/src/clientDefinitions.ts +0 -33
  148. package/test/integration/generated/authentication/apiKey/src/index.ts +0 -12
  149. package/test/integration/generated/authentication/apiKey/src/logger.ts +0 -5
  150. package/test/integration/generated/authentication/apiKey/src/outputModels.ts +0 -6
  151. package/test/integration/generated/authentication/apiKey/src/parameters.ts +0 -7
  152. package/test/integration/generated/authentication/apiKey/src/responses.ts +0 -21
  153. package/test/integration/generated/authentication/apiKey/test/public/sampleTest.spec.ts +0 -23
  154. package/test/integration/generated/authentication/apiKey/test/public/utils/env.browser.ts +0 -2
  155. package/test/integration/generated/authentication/apiKey/test/public/utils/env.ts +0 -6
  156. package/test/integration/generated/authentication/apiKey/test/public/utils/recordedClient.ts +0 -29
  157. package/test/integration/generated/authentication/apiKey/tsconfig.json +0 -25
  158. package/test/integration/generated/authentication/apiKey/tspconfig.yaml +0 -13
  159. package/test/integration/generated/authentication/oauth2/karma.conf.js +0 -133
  160. package/test/integration/generated/authentication/oauth2/src/authOauth2Client.ts +0 -45
  161. package/test/integration/generated/authentication/oauth2/src/clientDefinitions.ts +0 -33
  162. package/test/integration/generated/authentication/oauth2/src/index.ts +0 -12
  163. package/test/integration/generated/authentication/oauth2/src/logger.ts +0 -5
  164. package/test/integration/generated/authentication/oauth2/src/outputModels.ts +0 -6
  165. package/test/integration/generated/authentication/oauth2/src/parameters.ts +0 -7
  166. package/test/integration/generated/authentication/oauth2/src/responses.ts +0 -21
  167. package/test/integration/generated/authentication/oauth2/test/public/sampleTest.spec.ts +0 -23
  168. package/test/integration/generated/authentication/oauth2/test/public/utils/env.browser.ts +0 -2
  169. package/test/integration/generated/authentication/oauth2/test/public/utils/env.ts +0 -6
  170. package/test/integration/generated/authentication/oauth2/test/public/utils/recordedClient.ts +0 -29
  171. package/test/integration/generated/authentication/oauth2/tspconfig.yaml +0 -15
  172. package/test/integration/generated/authentication/union/karma.conf.js +0 -133
  173. package/test/integration/generated/authentication/union/src/authUnionClient.ts +0 -46
  174. package/test/integration/generated/authentication/union/src/clientDefinitions.ts +0 -27
  175. package/test/integration/generated/authentication/union/src/index.ts +0 -11
  176. package/test/integration/generated/authentication/union/src/logger.ts +0 -5
  177. package/test/integration/generated/authentication/union/src/parameters.ts +0 -7
  178. package/test/integration/generated/authentication/union/src/responses.ts +0 -14
  179. package/test/integration/generated/authentication/union/test/public/sampleTest.spec.ts +0 -23
  180. package/test/integration/generated/authentication/union/test/public/utils/env.browser.ts +0 -2
  181. package/test/integration/generated/authentication/union/test/public/utils/env.ts +0 -6
  182. package/test/integration/generated/authentication/union/test/public/utils/recordedClient.ts +0 -29
  183. package/test/integration/generated/authentication/union/tspconfig.yaml +0 -15
  184. package/test/integration/generated/azure/core/.eslintrc.json +0 -11
  185. package/test/integration/generated/azure/core/README.md +0 -56
  186. package/test/integration/generated/azure/core/api-extractor.json +0 -18
  187. package/test/integration/generated/azure/core/package.json +0 -81
  188. package/test/integration/generated/azure/core/rollup.config.js +0 -118
  189. package/test/integration/generated/azure/core/src/azureCoreClient.ts +0 -35
  190. package/test/integration/generated/azure/core/src/clientDefinitions.ts +0 -108
  191. package/test/integration/generated/azure/core/src/index.ts +0 -16
  192. package/test/integration/generated/azure/core/src/isUnexpected.ts +0 -178
  193. package/test/integration/generated/azure/core/src/logger.ts +0 -5
  194. package/test/integration/generated/azure/core/src/models.ts +0 -18
  195. package/test/integration/generated/azure/core/src/outputModels.ts +0 -38
  196. package/test/integration/generated/azure/core/src/paginateHelper.ts +0 -204
  197. package/test/integration/generated/azure/core/src/parameters.ts +0 -68
  198. package/test/integration/generated/azure/core/src/responses.ts +0 -158
  199. package/test/integration/generated/azure/core/src/serializeHelper.ts +0 -16
  200. package/test/integration/generated/azure/core/tsconfig.json +0 -25
  201. package/test/integration/generated/azure/core/tspconfig.yaml +0 -15
  202. package/test/integration/generated/azure/core-traits/.eslintrc.json +0 -11
  203. package/test/integration/generated/azure/core-traits/README.md +0 -56
  204. package/test/integration/generated/azure/core-traits/api-extractor.json +0 -18
  205. package/test/integration/generated/azure/core-traits/package.json +0 -80
  206. package/test/integration/generated/azure/core-traits/rollup.config.js +0 -118
  207. package/test/integration/generated/azure/core-traits/src/azureCoreTraitsClient.ts +0 -35
  208. package/test/integration/generated/azure/core-traits/src/clientDefinitions.ts +0 -22
  209. package/test/integration/generated/azure/core-traits/src/index.ts +0 -13
  210. package/test/integration/generated/azure/core-traits/src/isUnexpected.ts +0 -97
  211. package/test/integration/generated/azure/core-traits/src/logger.ts +0 -5
  212. package/test/integration/generated/azure/core-traits/src/outputModels.ts +0 -25
  213. package/test/integration/generated/azure/core-traits/src/parameters.ts +0 -26
  214. package/test/integration/generated/azure/core-traits/src/responses.ts +0 -32
  215. package/test/integration/generated/azure/core-traits/tsconfig.json +0 -25
  216. package/test/integration/generated/azure/core-traits/tspconfig.yaml +0 -15
  217. package/test/integration/generated/dictionary/.eslintrc.json +0 -11
  218. package/test/integration/generated/dictionary/README.md +0 -56
  219. package/test/integration/generated/dictionary/api-extractor.json +0 -18
  220. package/test/integration/generated/dictionary/package.json +0 -80
  221. package/test/integration/generated/dictionary/rollup.config.js +0 -118
  222. package/test/integration/generated/dictionary/src/clientDefinitions.ts +0 -180
  223. package/test/integration/generated/dictionary/src/dictClient.ts +0 -33
  224. package/test/integration/generated/dictionary/src/index.ts +0 -13
  225. package/test/integration/generated/dictionary/src/logger.ts +0 -5
  226. package/test/integration/generated/dictionary/src/models.ts +0 -9
  227. package/test/integration/generated/dictionary/src/outputModels.ts +0 -9
  228. package/test/integration/generated/dictionary/src/parameters.ts +0 -94
  229. package/test/integration/generated/dictionary/src/responses.ts +0 -126
  230. package/test/integration/generated/dictionary/tsconfig.json +0 -25
  231. package/test/integration/generated/dictionary/tspconfig.yaml +0 -15
  232. package/test/integration/generated/enums/extensible/.eslintrc.json +0 -11
  233. package/test/integration/generated/enums/extensible/README.md +0 -56
  234. package/test/integration/generated/enums/extensible/api-extractor.json +0 -18
  235. package/test/integration/generated/enums/extensible/package.json +0 -80
  236. package/test/integration/generated/enums/extensible/rollup.config.js +0 -118
  237. package/test/integration/generated/enums/extensible/src/clientDefinitions.ts +0 -45
  238. package/test/integration/generated/enums/extensible/src/index.ts +0 -11
  239. package/test/integration/generated/enums/extensible/src/logger.ts +0 -5
  240. package/test/integration/generated/enums/extensible/src/parameters.ts +0 -23
  241. package/test/integration/generated/enums/extensible/src/responses.ts +0 -26
  242. package/test/integration/generated/enums/extensible/src/typeEnumExtensible.ts +0 -35
  243. package/test/integration/generated/enums/extensible/tsconfig.json +0 -25
  244. package/test/integration/generated/enums/extensible/tspconfig.yaml +0 -14
  245. package/test/integration/generated/enums/fixed/.eslintrc.json +0 -11
  246. package/test/integration/generated/enums/fixed/README.md +0 -56
  247. package/test/integration/generated/enums/fixed/api-extractor.json +0 -18
  248. package/test/integration/generated/enums/fixed/package.json +0 -80
  249. package/test/integration/generated/enums/fixed/rollup.config.js +0 -118
  250. package/test/integration/generated/enums/fixed/src/clientDefinitions.ts +0 -43
  251. package/test/integration/generated/enums/fixed/src/index.ts +0 -11
  252. package/test/integration/generated/enums/fixed/src/logger.ts +0 -5
  253. package/test/integration/generated/enums/fixed/src/parameters.ts +0 -36
  254. package/test/integration/generated/enums/fixed/src/responses.ts +0 -27
  255. package/test/integration/generated/enums/fixed/src/typeEnumFixed.ts +0 -35
  256. package/test/integration/generated/enums/fixed/tsconfig.json +0 -25
  257. package/test/integration/generated/enums/fixed/tspconfig.yaml +0 -14
  258. package/test/integration/generated/hello/.eslintrc.json +0 -11
  259. package/test/integration/generated/hello/README.md +0 -56
  260. package/test/integration/generated/hello/api-extractor.json +0 -18
  261. package/test/integration/generated/hello/package.json +0 -80
  262. package/test/integration/generated/hello/rollup.config.js +0 -118
  263. package/test/integration/generated/hello/src/clientDefinitions.ts +0 -19
  264. package/test/integration/generated/hello/src/hello.ts +0 -29
  265. package/test/integration/generated/hello/src/index.ts +0 -11
  266. package/test/integration/generated/hello/src/parameters.ts +0 -6
  267. package/test/integration/generated/hello/src/responses.ts +0 -10
  268. package/test/integration/generated/hello/tsconfig.json +0 -25
  269. package/test/integration/generated/hello/tspconfig.yaml +0 -14
  270. package/test/integration/generated/internal/src/clientDefinitions.ts +0 -53
  271. package/test/integration/generated/internal/src/index.ts +0 -12
  272. package/test/integration/generated/internal/src/internalClient.ts +0 -35
  273. package/test/integration/generated/internal/src/logger.ts +0 -5
  274. package/test/integration/generated/internal/src/outputModels.ts +0 -17
  275. package/test/integration/generated/internal/src/parameters.ts +0 -45
  276. package/test/integration/generated/internal/src/responses.ts +0 -33
  277. package/test/integration/generated/internal/tspconfig.yaml +0 -14
  278. package/test/integration/generated/lro/lroCore/.eslintrc.json +0 -11
  279. package/test/integration/generated/lro/lroCore/README.md +0 -56
  280. package/test/integration/generated/lro/lroCore/api-extractor.json +0 -18
  281. package/test/integration/generated/lro/lroCore/package.json +0 -82
  282. package/test/integration/generated/lro/lroCore/rollup.config.js +0 -118
  283. package/test/integration/generated/lro/lroCore/src/clientDefinitions.ts +0 -54
  284. package/test/integration/generated/lro/lroCore/src/index.ts +0 -15
  285. package/test/integration/generated/lro/lroCore/src/isUnexpected.ts +0 -135
  286. package/test/integration/generated/lro/lroCore/src/logger.ts +0 -5
  287. package/test/integration/generated/lro/lroCore/src/models.ts +0 -8
  288. package/test/integration/generated/lro/lroCore/src/outputModels.ts +0 -50
  289. package/test/integration/generated/lro/lroCore/src/parameters.ts +0 -25
  290. package/test/integration/generated/lro/lroCore/src/pollingHelper.ts +0 -113
  291. package/test/integration/generated/lro/lroCore/src/responses.ts +0 -109
  292. package/test/integration/generated/lro/lroCore/src/specsAzureCoreLroStandard.ts +0 -35
  293. package/test/integration/generated/lro/lroCore/tsconfig.json +0 -25
  294. package/test/integration/generated/lro/lroCore/tspconfig.yaml +0 -14
  295. package/test/integration/generated/lro/lroRPC/.eslintrc.json +0 -11
  296. package/test/integration/generated/lro/lroRPC/README.md +0 -56
  297. package/test/integration/generated/lro/lroRPC/api-extractor.json +0 -18
  298. package/test/integration/generated/lro/lroRPC/package.json +0 -82
  299. package/test/integration/generated/lro/lroRPC/rollup.config.js +0 -118
  300. package/test/integration/generated/lro/lroRPC/src/clientDefinitions.ts +0 -79
  301. package/test/integration/generated/lro/lroRPC/src/index.ts +0 -15
  302. package/test/integration/generated/lro/lroRPC/src/isUnexpected.ts +0 -153
  303. package/test/integration/generated/lro/lroRPC/src/logger.ts +0 -5
  304. package/test/integration/generated/lro/lroRPC/src/models.ts +0 -8
  305. package/test/integration/generated/lro/lroRPC/src/outputModels.ts +0 -40
  306. package/test/integration/generated/lro/lroRPC/src/parameters.ts +0 -20
  307. package/test/integration/generated/lro/lroRPC/src/pollingHelper.ts +0 -127
  308. package/test/integration/generated/lro/lroRPC/src/responses.ts +0 -124
  309. package/test/integration/generated/lro/lroRPC/src/specsAzureCoreLroRpc.ts +0 -35
  310. package/test/integration/generated/lro/lroRPC/tsconfig.json +0 -25
  311. package/test/integration/generated/lro/lroRPC/tspconfig.yaml +0 -14
  312. package/test/integration/generated/models/inheritance/.eslintrc.json +0 -11
  313. package/test/integration/generated/models/inheritance/README.md +0 -56
  314. package/test/integration/generated/models/inheritance/api-extractor.json +0 -18
  315. package/test/integration/generated/models/inheritance/package.json +0 -80
  316. package/test/integration/generated/models/inheritance/rollup.config.js +0 -118
  317. package/test/integration/generated/models/inheritance/src/clientDefinitions.ts +0 -81
  318. package/test/integration/generated/models/inheritance/src/index.ts +0 -13
  319. package/test/integration/generated/models/inheritance/src/logger.ts +0 -5
  320. package/test/integration/generated/models/inheritance/src/models.ts +0 -52
  321. package/test/integration/generated/models/inheritance/src/outputModels.ts +0 -52
  322. package/test/integration/generated/models/inheritance/src/parameters.ts +0 -35
  323. package/test/integration/generated/models/inheritance/src/responses.ts +0 -56
  324. package/test/integration/generated/models/inheritance/src/typeModelInheritance.ts +0 -35
  325. package/test/integration/generated/models/inheritance/tsconfig.json +0 -25
  326. package/test/integration/generated/models/inheritance/tspconfig.yaml +0 -14
  327. package/test/integration/generated/models/propertyNullable/.eslintrc.json +0 -11
  328. package/test/integration/generated/models/propertyNullable/README.md +0 -56
  329. package/test/integration/generated/models/propertyNullable/api-extractor.json +0 -18
  330. package/test/integration/generated/models/propertyNullable/package.json +0 -80
  331. package/test/integration/generated/models/propertyNullable/rollup.config.js +0 -118
  332. package/test/integration/generated/models/propertyNullable/src/clientDefinitions.ts +0 -227
  333. package/test/integration/generated/models/propertyNullable/src/index.ts +0 -13
  334. package/test/integration/generated/models/propertyNullable/src/logger.ts +0 -5
  335. package/test/integration/generated/models/propertyNullable/src/models.ts +0 -56
  336. package/test/integration/generated/models/propertyNullable/src/outputModels.ts +0 -56
  337. package/test/integration/generated/models/propertyNullable/src/parameters.ts +0 -197
  338. package/test/integration/generated/models/propertyNullable/src/responses.ts +0 -144
  339. package/test/integration/generated/models/propertyNullable/src/typePropertyNullable.ts +0 -35
  340. package/test/integration/generated/models/propertyNullable/tsconfig.json +0 -25
  341. package/test/integration/generated/models/propertyNullable/tspconfig.yaml +0 -14
  342. package/test/integration/generated/models/propertyOptional/.eslintrc.json +0 -11
  343. package/test/integration/generated/models/propertyOptional/README.md +0 -56
  344. package/test/integration/generated/models/propertyOptional/api-extractor.json +0 -18
  345. package/test/integration/generated/models/propertyOptional/package.json +0 -80
  346. package/test/integration/generated/models/propertyOptional/rollup.config.js +0 -118
  347. package/test/integration/generated/models/propertyOptional/src/clientDefinitions.ts +0 -263
  348. package/test/integration/generated/models/propertyOptional/src/index.ts +0 -13
  349. package/test/integration/generated/models/propertyOptional/src/logger.ts +0 -5
  350. package/test/integration/generated/models/propertyOptional/src/models.ts +0 -46
  351. package/test/integration/generated/models/propertyOptional/src/outputModels.ts +0 -46
  352. package/test/integration/generated/models/propertyOptional/src/parameters.ts +0 -125
  353. package/test/integration/generated/models/propertyOptional/src/responses.ts +0 -169
  354. package/test/integration/generated/models/propertyOptional/src/typePropertyOptional.ts +0 -35
  355. package/test/integration/generated/models/propertyOptional/tsconfig.json +0 -25
  356. package/test/integration/generated/models/propertyOptional/tspconfig.yaml +0 -14
  357. package/test/integration/generated/models/propertyTypes/.eslintrc.json +0 -11
  358. package/test/integration/generated/models/propertyTypes/README.md +0 -56
  359. package/test/integration/generated/models/propertyTypes/api-extractor.json +0 -18
  360. package/test/integration/generated/models/propertyTypes/package.json +0 -80
  361. package/test/integration/generated/models/propertyTypes/rollup.config.js +0 -118
  362. package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +0 -310
  363. package/test/integration/generated/models/propertyTypes/src/index.ts +0 -13
  364. package/test/integration/generated/models/propertyTypes/src/logger.ts +0 -5
  365. package/test/integration/generated/models/propertyTypes/src/models.ts +0 -123
  366. package/test/integration/generated/models/propertyTypes/src/outputModels.ts +0 -123
  367. package/test/integration/generated/models/propertyTypes/src/parameters.ts +0 -189
  368. package/test/integration/generated/models/propertyTypes/src/responses.ts +0 -234
  369. package/test/integration/generated/models/propertyTypes/src/typePropertyValueTypes.ts +0 -35
  370. package/test/integration/generated/models/propertyTypes/tsconfig.json +0 -25
  371. package/test/integration/generated/models/propertyTypes/tspconfig.yaml +0 -14
  372. package/test/integration/generated/models/usage/.eslintrc.json +0 -11
  373. package/test/integration/generated/models/usage/README.md +0 -56
  374. package/test/integration/generated/models/usage/api-extractor.json +0 -18
  375. package/test/integration/generated/models/usage/package.json +0 -80
  376. package/test/integration/generated/models/usage/rollup.config.js +0 -118
  377. package/test/integration/generated/models/usage/src/clientDefinitions.ts +0 -41
  378. package/test/integration/generated/models/usage/src/index.ts +0 -13
  379. package/test/integration/generated/models/usage/src/logger.ts +0 -5
  380. package/test/integration/generated/models/usage/src/models.ts +0 -12
  381. package/test/integration/generated/models/usage/src/outputModels.ts +0 -12
  382. package/test/integration/generated/models/usage/src/parameters.ts +0 -19
  383. package/test/integration/generated/models/usage/src/responses.ts +0 -22
  384. package/test/integration/generated/models/usage/src/typeModelUsage.ts +0 -35
  385. package/test/integration/generated/models/usage/tsconfig.json +0 -25
  386. package/test/integration/generated/models/usage/tspconfig.yaml +0 -14
  387. package/test/integration/generated/models/visibility/.eslintrc.json +0 -11
  388. package/test/integration/generated/models/visibility/README.md +0 -56
  389. package/test/integration/generated/models/visibility/api-extractor.json +0 -18
  390. package/test/integration/generated/models/visibility/package.json +0 -80
  391. package/test/integration/generated/models/visibility/rollup.config.js +0 -118
  392. package/test/integration/generated/models/visibility/src/clientDefinitions.ts +0 -40
  393. package/test/integration/generated/models/visibility/src/index.ts +0 -13
  394. package/test/integration/generated/models/visibility/src/logger.ts +0 -5
  395. package/test/integration/generated/models/visibility/src/models.ts +0 -14
  396. package/test/integration/generated/models/visibility/src/outputModels.ts +0 -16
  397. package/test/integration/generated/models/visibility/src/parameters.ts +0 -41
  398. package/test/integration/generated/models/visibility/src/responses.ts +0 -36
  399. package/test/integration/generated/models/visibility/src/typeModelVisibility.ts +0 -35
  400. package/test/integration/generated/models/visibility/tsconfig.json +0 -25
  401. package/test/integration/generated/models/visibility/tspconfig.yaml +0 -14
  402. package/test/integration/generated/parameters/collection-format/src/clientDefinitions.ts +0 -63
  403. package/test/integration/generated/parameters/collection-format/src/collectionFormatClient.ts +0 -35
  404. package/test/integration/generated/parameters/collection-format/src/index.ts +0 -12
  405. package/test/integration/generated/parameters/collection-format/src/logger.ts +0 -5
  406. package/test/integration/generated/parameters/collection-format/src/parameters.ts +0 -71
  407. package/test/integration/generated/parameters/collection-format/src/responses.ts +0 -34
  408. package/test/integration/generated/parameters/collection-format/src/serializeHelper.ts +0 -28
  409. package/test/integration/generated/parameters/collection-format/tspconfig.yaml +0 -14
  410. package/test/integration/generated/parameters/spread/src/clientDefinitions.ts +0 -61
  411. package/test/integration/generated/parameters/spread/src/index.ts +0 -12
  412. package/test/integration/generated/parameters/spread/src/logger.ts +0 -5
  413. package/test/integration/generated/parameters/spread/src/models.ts +0 -7
  414. package/test/integration/generated/parameters/spread/src/parameters.ts +0 -61
  415. package/test/integration/generated/parameters/spread/src/parametersSpread.ts +0 -35
  416. package/test/integration/generated/parameters/spread/src/responses.ts +0 -25
  417. package/test/integration/generated/parameters/spread/tspconfig.yaml +0 -12
  418. package/test/integration/generated/projection/src/clientDefinitions.ts +0 -71
  419. package/test/integration/generated/projection/src/index.ts +0 -12
  420. package/test/integration/generated/projection/src/logger.ts +0 -5
  421. package/test/integration/generated/projection/src/models.ts +0 -22
  422. package/test/integration/generated/projection/src/parameters.ts +0 -48
  423. package/test/integration/generated/projection/src/projectionClient.ts +0 -35
  424. package/test/integration/generated/projection/src/responses.ts +0 -34
  425. package/test/integration/generated/projection/tspconfig.yaml +0 -14
  426. package/test/integration/generated/resiliency/srvDriven1/.eslintrc.json +0 -11
  427. package/test/integration/generated/resiliency/srvDriven1/README.md +0 -56
  428. package/test/integration/generated/resiliency/srvDriven1/api-extractor.json +0 -18
  429. package/test/integration/generated/resiliency/srvDriven1/package.json +0 -80
  430. package/test/integration/generated/resiliency/srvDriven1/rollup.config.js +0 -118
  431. package/test/integration/generated/resiliency/srvDriven1/src/clientDefinitions.ts +0 -46
  432. package/test/integration/generated/resiliency/srvDriven1/src/index.ts +0 -11
  433. package/test/integration/generated/resiliency/srvDriven1/src/logger.ts +0 -5
  434. package/test/integration/generated/resiliency/srvDriven1/src/parameters.ts +0 -30
  435. package/test/integration/generated/resiliency/srvDriven1/src/responses.ts +0 -19
  436. package/test/integration/generated/resiliency/srvDriven1/src/serviceDrivenOldClient.ts +0 -43
  437. package/test/integration/generated/resiliency/srvDriven1/tsconfig.json +0 -25
  438. package/test/integration/generated/resiliency/srvDriven1/tspconfig.yaml +0 -15
  439. package/test/integration/generated/resiliency/srvDriven2/.eslintrc.json +0 -11
  440. package/test/integration/generated/resiliency/srvDriven2/README.md +0 -65
  441. package/test/integration/generated/resiliency/srvDriven2/api-extractor.json +0 -18
  442. package/test/integration/generated/resiliency/srvDriven2/package.json +0 -80
  443. package/test/integration/generated/resiliency/srvDriven2/rollup.config.js +0 -118
  444. package/test/integration/generated/resiliency/srvDriven2/src/clientDefinitions.ts +0 -57
  445. package/test/integration/generated/resiliency/srvDriven2/src/index.ts +0 -11
  446. package/test/integration/generated/resiliency/srvDriven2/src/logger.ts +0 -5
  447. package/test/integration/generated/resiliency/srvDriven2/src/parameters.ts +0 -45
  448. package/test/integration/generated/resiliency/srvDriven2/src/responses.ts +0 -24
  449. package/test/integration/generated/resiliency/srvDriven2/src/serviceDrivenNewClient.ts +0 -43
  450. package/test/integration/generated/resiliency/srvDriven2/tsconfig.json +0 -25
  451. package/test/integration/generated/resiliency/srvDriven2/tspconfig.yaml +0 -15
  452. package/test/integration/generated/server/path/multiple/src/clientDefinitions.ts +0 -35
  453. package/test/integration/generated/server/path/multiple/src/index.ts +0 -11
  454. package/test/integration/generated/server/path/multiple/src/logger.ts +0 -5
  455. package/test/integration/generated/server/path/multiple/src/multipleParamInServerPathClient.ts +0 -43
  456. package/test/integration/generated/server/path/multiple/src/parameters.ts +0 -7
  457. package/test/integration/generated/server/path/multiple/src/responses.ts +0 -14
  458. package/test/integration/generated/server/path/multiple/tspconfig.yaml +0 -14
  459. package/test/integration/generated/server/path/single/src/clientDefinitions.ts +0 -19
  460. package/test/integration/generated/server/path/single/src/index.ts +0 -11
  461. package/test/integration/generated/server/path/single/src/logger.ts +0 -5
  462. package/test/integration/generated/server/path/single/src/parameters.ts +0 -6
  463. package/test/integration/generated/server/path/single/src/responses.ts +0 -9
  464. package/test/integration/generated/server/path/single/src/singleParamInServerPathClient.ts +0 -38
  465. package/test/integration/generated/server/path/single/tspconfig.yaml +0 -14
  466. package/test/integration/generated/specialWords/src/clientDefinitions.ts +0 -61
  467. package/test/integration/generated/specialWords/src/index.ts +0 -13
  468. package/test/integration/generated/specialWords/src/logger.ts +0 -5
  469. package/test/integration/generated/specialWords/src/models.ts +0 -17
  470. package/test/integration/generated/specialWords/src/outputModels.ts +0 -17
  471. package/test/integration/generated/specialWords/src/parameters.ts +0 -37
  472. package/test/integration/generated/specialWords/src/responses.ts +0 -31
  473. package/test/integration/generated/specialWords/src/specialWordsClient.ts +0 -35
  474. package/test/integration/generated/specialWords/tspconfig.yaml +0 -14
  475. package/test/integration/generated/unions/src/clientDefinitions.ts +0 -53
  476. package/test/integration/generated/unions/src/index.ts +0 -12
  477. package/test/integration/generated/unions/src/logger.ts +0 -5
  478. package/test/integration/generated/unions/src/models.ts +0 -27
  479. package/test/integration/generated/unions/src/parameters.ts +0 -34
  480. package/test/integration/generated/unions/src/responses.ts +0 -24
  481. package/test/integration/generated/unions/src/unionsClient.ts +0 -35
  482. package/test/integration/generated/unions/tspconfig.yaml +0 -14
  483. package/test/integration/internal.spec.ts +0 -76
  484. package/test/integration/lroCore.spec.ts +0 -89
  485. package/test/integration/modelInheritance.spec.ts +0 -192
  486. package/test/integration/modelPropertyNullable.spec.ts +0 -115
  487. package/test/integration/modelPropertyOptional.spec.ts +0 -362
  488. package/test/integration/modelPropertyType.spec.ts +0 -135
  489. package/test/integration/modelUsage.spec.ts +0 -47
  490. package/test/integration/projection.spec.ts +0 -102
  491. package/test/integration/resiliencyDpgCustomization.spec.ts +0 -147
  492. package/test/integration/server.spec.ts +0 -59
  493. package/test/integration/specialWords.spec.ts +0 -73
  494. package/test/integration/spreadParameters.spec.ts +0 -82
  495. package/test/integration/unions.spec.ts +0 -69
  496. package/test/tsconfig.json +0 -4
  497. package/test/unit/apiVersion.spec.ts +0 -400
  498. package/test/unit/azureCoreOperationsGenerator.spec.ts +0 -71
  499. package/test/unit/clientDefinitionGenerator.spec.ts +0 -73
  500. package/test/unit/clientFactoryGenerator.spec.ts +0 -404
  501. package/test/unit/docsGenerator.spec.ts +0 -201
  502. package/test/unit/modelsGenerator.spec.ts +0 -1529
  503. package/test/unit/parametersGenerator.spec.ts +0 -561
  504. package/test/unit/responsesGenerator.spec.ts +0 -462
  505. package/test/unit/spreadAndAlias.spec.ts +0 -200
  506. package/test/unit/util/emitUtil.ts +0 -166
  507. package/test/unit/util/testUtil.ts +0 -88
  508. package/test/util/customBearerTokenTestingPolicy.ts +0 -78
  509. package/test/util/matrix.ts +0 -48
  510. package/tsconfig.json +0 -36
  511. package/tsconfig.test.json +0 -7
  512. package/typespec-ts.build.log +0 -1
@@ -2,6 +2,8 @@ import { Project, SourceFile } from "ts-morph";
2
2
  import { buildType } from "./helpers/typeHelpers.js";
3
3
  import {
4
4
  getOperationFunction,
5
+ getSendPrivateFunction,
6
+ getDeserializePrivateFunction,
5
7
  getOperationOptionsName
6
8
  } from "./helpers/operationHelpers.js";
7
9
  import { Client, Operation } from "./modularCodeModel.js";
@@ -30,7 +32,13 @@ export function buildOperationFiles(
30
32
  operationGroup.operations.forEach((o) => {
31
33
  buildOperationOptions(o, operationGroupFile);
32
34
  const operationDeclaration = getOperationFunction(o);
33
- operationGroupFile.addFunction(operationDeclaration);
35
+ const sendOperationDeclaration = getSendPrivateFunction(o);
36
+ const deserializeOperationDeclaration = getDeserializePrivateFunction(o);
37
+ operationGroupFile.addFunctions([
38
+ sendOperationDeclaration,
39
+ deserializeOperationDeclaration,
40
+ operationDeclaration
41
+ ]);
34
42
  });
35
43
 
36
44
  operationGroupFile.addImportDeclarations([
@@ -40,6 +48,20 @@ export function buildOperationFiles(
40
48
  }
41
49
  ]);
42
50
 
51
+ operationGroupFile.addImportDeclarations([
52
+ {
53
+ moduleSpecifier: "../common/interfaces.js",
54
+ namedImports: ["OperationRawReturnType"]
55
+ }
56
+ ]);
57
+
58
+ operationGroupFile.addImportDeclarations([
59
+ {
60
+ moduleSpecifier: "@azure-rest/core-client",
61
+ namedImports: ["StreamableMethod"]
62
+ }
63
+ ]);
64
+
43
65
  // Import models used from ./models.ts
44
66
  importModels(operationGroupFile, project);
45
67
  operationGroupFile.fixMissingImports();
@@ -27,7 +27,7 @@ export function buildRootIndex(
27
27
  file.addExportDeclarations([
28
28
  {
29
29
  moduleSpecifier: `./common/interfaces.js`,
30
- namedExports: [`ClientOptions`, `RequestOptions`]
30
+ namedExports: [`RequestOptions`]
31
31
  }
32
32
  ]);
33
33
  }
@@ -35,7 +35,7 @@ export function buildRootIndex(
35
35
  function exportClassicalClient(client: Client, indexFile: SourceFile) {
36
36
  const clientName = `${getClientName(client)}Client`;
37
37
  indexFile.addExportDeclaration({
38
- namedExports: [clientName],
38
+ namedExports: [clientName, `${clientName}Options`],
39
39
  moduleSpecifier: `./${clientName}.js`
40
40
  });
41
41
  }
@@ -1,22 +1,20 @@
1
1
  import { Project, SourceFile } from "ts-morph";
2
2
 
3
- const content = `import { ClientOptions as RestClientOptions } from "@azure-rest/core-client";
3
+ const content = `
4
4
  import { RawHttpHeadersInput } from "@azure/core-rest-pipeline";
5
- export interface ClientOptions extends RestClientOptions {}
5
+
6
+ /**
7
+ * Common options to set on an outgoing operation
8
+ */
6
9
  export interface RequestOptions {
10
+ /**
11
+ * Options to set on an outgoing HTTP request
12
+ */
7
13
  requestOptions?: {
8
14
  /**
9
15
  * Headers to send along with the request
10
16
  */
11
17
  headers?: RawHttpHeadersInput;
12
- /**
13
- * Body to send with the request
14
- */
15
- body?: unknown;
16
- /**
17
- * Query parameters to send with the request
18
- */
19
- queryParameters?: Record<string, unknown>;
20
18
  /** Set to true if the request is sent over HTTP instead of HTTPS */
21
19
  allowInsecureConnection?: boolean;
22
20
  /** Set to true if you want to skip encoding the path parameters */
@@ -17,6 +17,16 @@ export function buildModels(
17
17
  (t) => t.type === "model" || t.type === "enum"
18
18
  );
19
19
 
20
+ for (const model of codeModel.types) {
21
+ if (model.type === "combined" && model.nullable) {
22
+ for (const unionModel of model.types ?? []) {
23
+ if (unionModel.type === "model") {
24
+ models.push(unionModel);
25
+ }
26
+ }
27
+ }
28
+ }
29
+
20
30
  for (const model of models) {
21
31
  const properties = model.properties ?? [];
22
32
  const typeMetadata = getType(model);
@@ -25,6 +35,10 @@ export function buildModels(
25
35
  typeName = `${typeName}[]`;
26
36
  }
27
37
  if (model.type === "enum") {
38
+ if (modelsFile.getTypeAlias(model.name!)) {
39
+ // If the enum is already defined, we don't need to do anything
40
+ continue;
41
+ }
28
42
  modelsFile.addTypeAlias({
29
43
  name: model.name!,
30
44
  isExported: true,
@@ -6,22 +6,12 @@ export function getClientParameters(
6
6
  client: Client
7
7
  ): OptionalKind<ParameterDeclarationStructure>[] {
8
8
  const { name, parameters } = client;
9
- let optionsParam = {
9
+ const optionsParam = {
10
10
  name: "options",
11
- type: `${name}Options`,
11
+ type: `${name}ClientOptions`,
12
12
  initializer: "{}"
13
13
  };
14
- if (
15
- !client.parameters
16
- .filter((p) => p.implementation === "Client" && !p.isApiVersion)
17
- .some((p) => p.optional || (!p.optional && p.clientDefaultValue))
18
- ) {
19
- optionsParam = {
20
- name: "options",
21
- type: `ClientOptions`,
22
- initializer: "{}"
23
- };
24
- }
14
+
25
15
  const params: OptionalKind<ParameterDeclarationStructure>[] = [
26
16
  ...parameters
27
17
  .filter((p) => p.type.type !== "constant")
@@ -12,7 +12,7 @@ export function importCredential(
12
12
  case "Key":
13
13
  clientSourceFile.addImportDeclaration({
14
14
  moduleSpecifier: "@azure/core-auth",
15
- namedImports: ["AzureKeyCredential"]
15
+ namedImports: ["KeyCredential"]
16
16
  });
17
17
  return;
18
18
  case "OAuth2":
@@ -0,0 +1,3 @@
1
+ export function getFixmeForMultilineDocs(fixme: string[]): string[] {
2
+ return fixme.map((fixme) => ` @fixme ${fixme}`);
3
+ }
@@ -1,5 +1,39 @@
1
- import { Client } from "../modularCodeModel.js";
1
+ import { toCamelCase, toPascalCase } from "../../casingUtils.js";
2
+ import { Client, Operation } from "../modularCodeModel.js";
3
+ import { ReservedModelNames, NameType, normalizeName } from "@azure-tools/rlc-common";
2
4
 
3
5
  export function getClientName(client: Client) {
4
6
  return client.name.replace(/Client$/, "");
5
7
  }
8
+
9
+ export interface GuardedName {
10
+ name: string;
11
+ fixme?: string[];
12
+ }
13
+
14
+ export function getOperationName(
15
+ operation: Operation,
16
+ options: { casing: "camel" | "pascal" } = { casing: "camel" }
17
+ ): GuardedName {
18
+ const casingFn = options.casing === "camel" ? toCamelCase : toPascalCase;
19
+ if (isReservedName(operation.name, NameType.Operation)) {
20
+ return {
21
+ name: normalizeName(operation.name, NameType.Operation, true),
22
+ fixme: [
23
+ `${operation.name} is a reserved word that cannot be used as an operation name. Please add @projectedName(
24
+ "javascript", "<JS-Specific-Name>") to the operation to override the generated name.`
25
+ ]
26
+ };
27
+ }
28
+
29
+ return {
30
+ name: casingFn(operation.name)
31
+ };
32
+ }
33
+
34
+ export function isReservedName(name: string, nameType: NameType): boolean {
35
+ return ReservedModelNames.some(
36
+ (reservedName) =>
37
+ reservedName.name === name && reservedName.reservedFor.includes(nameType)
38
+ );
39
+ }
@@ -12,85 +12,186 @@ import {
12
12
  Type
13
13
  } from "../modularCodeModel.js";
14
14
  import { buildType } from "./typeHelpers.js";
15
+ import { getOperationName } from "./namingHelpers.js";
16
+ import { getFixmeForMultilineDocs } from "./fixmeHelpers.js";
15
17
 
16
- /**
17
- * This operation builds and returns the function declaration for an operation.
18
- */
19
- export function getOperationFunction(
18
+ function getRLCResponseType(operation: Operation) {
19
+ const { name } = getOperationName(operation, { casing: "pascal" });
20
+ const statusCodes: (string | number)[] = Array.from(
21
+ new Set(operation.responses.flatMap((r) => r.statusCodes)).values()
22
+ );
23
+
24
+ statusCodes.push("Default");
25
+
26
+ return statusCodes.map((s) => `${name}${s}Response`).join(" | ");
27
+ }
28
+
29
+ export function getSendPrivateFunction(
20
30
  operation: Operation
21
31
  ): OptionalKind<FunctionDeclarationStructure> {
22
- const optionsType = getOperationOptionsName(operation);
23
- // Extract required parameters
24
- let parameters: OptionalKind<ParameterDeclarationStructure>[] = [];
32
+ const parameters = getOperationSignatureParameters(operation);
33
+ const { name } = getOperationName(operation);
25
34
 
35
+ const functionStatement: OptionalKind<FunctionDeclarationStructure> = {
36
+ isAsync: false,
37
+ isExported: true,
38
+ name: `_${name}Send`,
39
+ parameters,
40
+ returnType: `StreamableMethod<${getRLCResponseType(operation)}>`
41
+ };
42
+
43
+ const operationPath = operation.url;
44
+ const operationMethod = operation.method.toLowerCase();
45
+
46
+ const statements: string[] = [];
47
+ statements.push(
48
+ `return context.path("${operationPath}", ${getPathParameters(
49
+ operation
50
+ )}).${operationMethod}({allowInsecureConnection: options.requestOptions?.allowInsecureConnection, skipUrlEncoding: options.requestOptions?.skipUrlEncoding, ${getRequestParameters(
51
+ operation
52
+ )}});`
53
+ );
54
+
55
+ return {
56
+ ...functionStatement,
57
+ statements
58
+ };
59
+ }
60
+
61
+ export function getDeserializePrivateFunction(
62
+ operation: Operation
63
+ ): OptionalKind<FunctionDeclarationStructure> {
64
+ const { name } = getOperationName(operation);
65
+
66
+ const parameters: OptionalKind<ParameterDeclarationStructure>[] = [
67
+ {
68
+ name: "result",
69
+ type: getRLCResponseType(operation)
70
+ }
71
+ ];
72
+
73
+ // TODO: Support operation overloads
74
+ const response = operation.responses[0]!;
75
+ const returnType = response?.type?.type
76
+ ? buildType(response.type.name, response.type)
77
+ : { name: "", type: "void" };
78
+
79
+ const functionStatement: OptionalKind<FunctionDeclarationStructure> = {
80
+ isAsync: true,
81
+ isExported: true,
82
+ name: `_${name}Deserialize`,
83
+ parameters,
84
+ returnType: `Promise<${returnType.type}>`
85
+ };
86
+ const statements: string[] = [];
87
+ statements.push(`if(isUnexpected(result)){`, "throw result.body", "}");
88
+
89
+ if (response?.type?.type === "any") {
90
+ statements.push(`return result.body`);
91
+ } else if (response?.type?.elementType) {
92
+ statements.push(
93
+ `return ${deserializeResponseValue(response.type, "result.body")}`
94
+ );
95
+ } else if (response?.type?.properties) {
96
+ statements.push(
97
+ `return {`,
98
+ getResponseMapping(response.type.properties ?? []).join(","),
99
+ `}`
100
+ );
101
+ } else if (returnType.type === "void") {
102
+ statements.push(`return;`);
103
+ } else {
104
+ statements.push(`return result.body;`);
105
+ }
106
+ return {
107
+ ...functionStatement,
108
+ statements
109
+ };
110
+ }
111
+
112
+ function getOperationSignatureParameters(
113
+ operation: Operation
114
+ ): OptionalKind<ParameterDeclarationStructure>[] {
115
+ const optionsType = getOperationOptionsName(operation);
116
+ const parameters: Map<
117
+ string,
118
+ OptionalKind<ParameterDeclarationStructure>
119
+ > = new Map();
26
120
  if (operation.bodyParameter?.type.type === "model") {
27
- parameters = (operation.bodyParameter?.type.properties ?? [])
121
+ (operation.bodyParameter?.type.properties ?? [])
28
122
  .filter((p) => !p.optional)
29
- .map((p) => buildType(p.clientName, p.type));
123
+ .filter((p) => !p.readonly)
124
+ .map((p) => buildType(p.clientName, p.type))
125
+ .forEach((p) => parameters.set(p.name, p));
30
126
  } else if (operation.bodyParameter?.type.type === "list") {
31
127
  const bodyArray = operation.bodyParameter;
32
- parameters.push(buildType(bodyArray.clientName, bodyArray.type));
128
+ parameters.set(
129
+ bodyArray.clientName,
130
+ buildType(bodyArray.clientName, bodyArray.type)
131
+ );
33
132
  }
34
133
 
35
- parameters = parameters.concat(
36
- operation.parameters
37
- .filter(
38
- (p) =>
39
- p.implementation === "Method" &&
40
- p.type.type !== "constant" &&
41
- p.clientDefaultValue === undefined &&
42
- !p.optional
43
- )
44
- .map((p) => buildType(p.clientName, p.type))
45
- );
134
+ operation.parameters
135
+ .filter(
136
+ (p) =>
137
+ p.implementation === "Method" &&
138
+ p.type.type !== "constant" &&
139
+ p.clientDefaultValue === undefined &&
140
+ !p.optional
141
+ )
142
+ .map((p) => buildType(p.clientName, p.type))
143
+ .forEach((p) => {
144
+ parameters.set(p.name, p);
145
+ });
46
146
 
47
147
  // Add context as the first parameter
48
- parameters.unshift({ name: "context", type: "Client" });
148
+ const contextParam = { name: "context", type: "Client" };
49
149
 
50
150
  // Add the options parameter
51
- parameters.push({
151
+ const optionsParam = {
52
152
  name: "options",
53
153
  type: optionsType,
54
154
  initializer: "{ requestOptions: {} }"
55
- });
155
+ };
156
+
157
+ const finalParameters = [contextParam, ...parameters.values(), optionsParam];
158
+
159
+ return finalParameters;
160
+ }
161
+
162
+ /**
163
+ * This operation builds and returns the function declaration for an operation.
164
+ */
165
+ export function getOperationFunction(
166
+ operation: Operation
167
+ ): OptionalKind<FunctionDeclarationStructure> {
168
+ // Extract required parameters
169
+ const parameters: OptionalKind<ParameterDeclarationStructure>[] =
170
+ getOperationSignatureParameters(operation);
56
171
 
57
172
  // TODO: Support operation overloads
58
173
  const response = operation.responses[0]!;
59
- const returnType =
60
- response?.type?.type === "model"
61
- ? buildType(response.type.name, response.type)
62
- : { name: "", type: "void" };
174
+ const returnType = response?.type?.type
175
+ ? buildType(response.type.name, response.type)
176
+ : { name: "", type: "void" };
63
177
 
178
+ const { name, fixme = [] } = getOperationName(operation);
64
179
  const functionStatement: OptionalKind<FunctionDeclarationStructure> = {
65
- docs: [operation.description],
180
+ docs: [operation.description, ...getFixmeForMultilineDocs(fixme)],
66
181
  isAsync: true,
67
182
  isExported: true,
68
- name: operation.name,
183
+ name: name,
69
184
  parameters,
70
185
  returnType: `Promise<${returnType.type}>`
71
186
  };
72
187
 
73
- const operationPath = operation.url;
74
- const operationMethod = operation.method.toLowerCase();
75
-
76
188
  const statements: string[] = [];
77
189
  statements.push(
78
- `const result = await context.path("${operationPath}", ${getPathParameters(
79
- operation
80
- )}).${operationMethod}({${getRequestParameters(operation)}});`
190
+ `const result = await _${name}Send(${parameters
191
+ .map((p) => p.name)
192
+ .join(", ")});`
81
193
  );
82
-
83
- statements.push(`if(isUnexpected(result)){`, "throw result.body", "}");
84
-
85
- if (!response?.type?.properties) {
86
- statements.push(`return;`);
87
- } else {
88
- statements.push(
89
- `return {`,
90
- getResponseMapping(response.type.properties ?? []).join(","),
91
- `}`
92
- );
93
- }
194
+ statements.push(`return _${name}Deserialize(result);`);
94
195
  return {
95
196
  ...functionStatement,
96
197
  statements
@@ -140,11 +241,11 @@ function getRequestParameters(operation: Operation): string {
140
241
  paramStr = `${getContentTypeValue(contentTypeParameter)},`;
141
242
  }
142
243
 
143
- if (parametersImplementation.header.length) {
144
- paramStr = `${paramStr}\nheaders: {${parametersImplementation.header.join(
145
- ",\n"
146
- )}, ...options.requestOptions?.headers},`;
147
- }
244
+ paramStr = `${paramStr}\nheaders: {${
245
+ parametersImplementation.header.length
246
+ ? parametersImplementation.header.join(",\n") + ","
247
+ : ""
248
+ } ...options.requestOptions?.headers},`;
148
249
 
149
250
  if (parametersImplementation.query.length) {
150
251
  paramStr = `${paramStr}\nqueryParameters: {${parametersImplementation.query.join(
@@ -273,7 +374,7 @@ function isOptionalWithouDefault(
273
374
  return Boolean(param.optional && !param.clientDefaultValue);
274
375
  }
275
376
  function getOptionalWithoutDefault(param: OptionalWithoutDefaultType) {
276
- return `...(options.${param.clientName} && {"${param.restApiName}": options.${param.clientName}})`;
377
+ return `"${param.restApiName}": options?.${param.clientName}`;
277
378
  }
278
379
 
279
380
  type OptionalWithDefaultType = (Parameter | Property) & {
@@ -341,6 +442,13 @@ function getPathParameters(operation: Operation) {
341
442
  return pathParams;
342
443
  }
343
444
 
445
+ function getNullableCheck(name: string, type: Type) {
446
+ if (!type.nullable) {
447
+ return "";
448
+ }
449
+
450
+ return `${name} === null ? null :`;
451
+ }
344
452
  /**
345
453
  * This function helps translating an RLC response to an HLC response,
346
454
  * extracting properties from body and headers and building the HLC response object
@@ -352,19 +460,18 @@ function getResponseMapping(
352
460
  const props: string[] = [];
353
461
  for (const property of properties) {
354
462
  // TODO: Do we need to also add headers in the result type?
463
+ const propertyFullName = `${propertyPath}.${property.clientName}`;
355
464
  if (property.type.type === "model") {
356
- props.push(
357
- `"${property.restApiName}": ${
358
- !property.optional
359
- ? ""
360
- : `!${propertyPath}.${property.clientName} ? undefined :`
361
- } {${getResponseMapping(
362
- property.type.properties ?? [],
363
- `${propertyPath}.${property.restApiName}${
364
- property.optional ? "?" : ""
365
- }`
366
- )}}`
367
- );
465
+ const definition = `"${property.restApiName}": ${getNullableCheck(
466
+ propertyFullName,
467
+ property.type
468
+ )} ${
469
+ !property.optional ? "" : `!${propertyFullName} ? undefined :`
470
+ } {${getResponseMapping(
471
+ property.type.properties ?? [],
472
+ `${propertyPath}.${property.restApiName}${property.optional ? "?" : ""}`
473
+ )}}`;
474
+ props.push(definition);
368
475
  } else {
369
476
  const dot = propertyPath.endsWith("?") ? "." : "";
370
477
  const restValue = `${
@@ -1,7 +1,7 @@
1
1
  import { Parameter } from "../modularCodeModel.js";
2
2
 
3
3
  const parameterTypeMap: Record<string, string> = {
4
- Key: "AzureKeyCredential",
4
+ Key: "KeyCredential",
5
5
  OAuth2: "TokenCredential"
6
6
  };
7
7
 
@@ -7,41 +7,52 @@ export interface TypeMetadata {
7
7
  modifier?: "Array";
8
8
  }
9
9
 
10
+ function getNullableType(name: string, type: Type): string {
11
+ if (type.nullable) {
12
+ return `(${name} | null)`;
13
+ }
14
+
15
+ return name;
16
+ }
17
+
10
18
  export function getType(type: Type): TypeMetadata {
11
19
  switch (type.type) {
12
20
  case "Key":
13
21
  return {
14
- name: "AzureKeyCredential",
22
+ name: "KeyCredential",
15
23
  originModule: "@azure/core-auth",
16
24
  isRelative: false
17
25
  };
18
26
  case "boolean":
19
- return { name: "boolean" };
27
+ return { name: getNullableType(type.type, type) };
20
28
  case "constant": {
21
29
  let typeName: string = type.value ?? "undefined";
22
30
  if (type.valueType?.type === "string") {
23
31
  typeName = type.value ? `"${type.value}"` : "undefined";
24
32
  }
25
- return { name: typeName };
33
+ return { name: getNullableType(typeName, type) };
26
34
  }
27
35
  case "datetime":
28
- return { name: "Date" };
36
+ return { name: getNullableType("Date", type) };
29
37
  case "enum":
30
38
  if (!type.name) {
31
39
  throw new Error("Unable to process enum without name");
32
40
  }
33
- return { name: type.name, originModule: "models.js" };
41
+ return {
42
+ name: getNullableType(type.name, type),
43
+ originModule: "models.js"
44
+ };
34
45
  case "float":
35
46
  case "integer":
36
- return { name: "number" };
47
+ return { name: getNullableType("number", type) };
37
48
  case "byte-array":
38
- return { name: "string" };
49
+ return { name: getNullableType("Uint8Array", type) };
39
50
  case "list":
40
51
  if (!type.elementType) {
41
52
  throw new Error("Unable to process Array with no elementType");
42
53
  }
43
54
  return {
44
- name: getType(type.elementType).name,
55
+ name: getNullableType(getType(type.elementType).name, type),
45
56
  modifier: "Array",
46
57
  originModule:
47
58
  type.elementType?.type === "model" ? "models.js" : undefined
@@ -50,10 +61,13 @@ export function getType(type: Type): TypeMetadata {
50
61
  if (!type.name) {
51
62
  throw new Error("Unable to process model without name");
52
63
  }
53
- return { name: type.name, originModule: "models.js" };
64
+ return {
65
+ name: getNullableType(type.name, type),
66
+ originModule: "models.js"
67
+ };
54
68
  case "string":
55
69
  case "duration":
56
- return { name: "string" };
70
+ return { name: getNullableType("string", type) };
57
71
  case "combined": {
58
72
  if (!type.types) {
59
73
  throw new Error("Unable to process combined without combinedTypes");
@@ -64,7 +78,7 @@ export function getType(type: Type): TypeMetadata {
64
78
  return `${sdkType}`;
65
79
  })
66
80
  .join(" | ");
67
- return { name };
81
+ return { name: getNullableType(name, type) };
68
82
  }
69
83
  case "dict":
70
84
  if (!type.elementType) {
@@ -73,8 +87,15 @@ export function getType(type: Type): TypeMetadata {
73
87
  return {
74
88
  name: `Record<string, ${getTypeName(getType(type.elementType))}>`
75
89
  };
90
+ case "any":
91
+ return {
92
+ name: `Record<string, any>`
93
+ };
76
94
  default:
77
- throw new Error(`Unsupported type ${type.type}`);
95
+ // throw new Error(`Unsupported type ${type.type}`);
96
+ return {
97
+ name: `any`
98
+ };
78
99
  }
79
100
  }
80
101
 
@@ -52,6 +52,7 @@ export interface EnumValue {
52
52
  description: string;
53
53
  }
54
54
  export interface Type {
55
+ nullable?: boolean;
55
56
  name?: string;
56
57
  description?: string;
57
58
  type:
@@ -70,7 +71,8 @@ export interface Type {
70
71
  | "float"
71
72
  | "boolean"
72
73
  | "dict"
73
- | "combined";
74
+ | "combined"
75
+ | "any";
74
76
  policy?: Policy;
75
77
  apiVersions?: any[];
76
78
  clientDefaultValue?: any;