@azure-tools/typespec-ts 0.11.0

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 (353) hide show
  1. package/.eslintrc.json +23 -0
  2. package/.prettierignore +1 -0
  3. package/.prettierrc +7 -0
  4. package/.rush/temp/package-deps_build.json +303 -0
  5. package/.rush/temp/shrinkwrap-deps.json +469 -0
  6. package/CHANGELOG.md +65 -0
  7. package/CONTRIBUTING.md +134 -0
  8. package/README.md +150 -0
  9. package/dist/src/emitUtil.d.ts +6 -0
  10. package/dist/src/emitUtil.d.ts.map +1 -0
  11. package/dist/src/emitUtil.js +45 -0
  12. package/dist/src/emitUtil.js.map +1 -0
  13. package/dist/src/index.d.ts +3 -0
  14. package/dist/src/index.d.ts.map +1 -0
  15. package/dist/src/index.js +59 -0
  16. package/dist/src/index.js.map +1 -0
  17. package/dist/src/lib.d.ts +159 -0
  18. package/dist/src/lib.d.ts.map +1 -0
  19. package/dist/src/lib.js +189 -0
  20. package/dist/src/lib.js.map +1 -0
  21. package/dist/src/modelUtils.d.ts +12 -0
  22. package/dist/src/modelUtils.d.ts.map +1 -0
  23. package/dist/src/modelUtils.js +812 -0
  24. package/dist/src/modelUtils.js.map +1 -0
  25. package/dist/src/operationUtil.d.ts +16 -0
  26. package/dist/src/operationUtil.d.ts.map +1 -0
  27. package/dist/src/operationUtil.js +142 -0
  28. package/dist/src/operationUtil.js.map +1 -0
  29. package/dist/src/transform/transform.d.ts +8 -0
  30. package/dist/src/transform/transform.d.ts.map +1 -0
  31. package/dist/src/transform/transform.js +131 -0
  32. package/dist/src/transform/transform.js.map +1 -0
  33. package/dist/src/transform/transformAnnotationDetails.d.ts +6 -0
  34. package/dist/src/transform/transformAnnotationDetails.d.ts.map +1 -0
  35. package/dist/src/transform/transformAnnotationDetails.js +188 -0
  36. package/dist/src/transform/transformAnnotationDetails.js.map +1 -0
  37. package/dist/src/transform/transformApiVersionParam.d.ts +5 -0
  38. package/dist/src/transform/transformApiVersionParam.d.ts.map +1 -0
  39. package/dist/src/transform/transformApiVersionParam.js +76 -0
  40. package/dist/src/transform/transformApiVersionParam.js.map +1 -0
  41. package/dist/src/transform/transformParameters.d.ts +14 -0
  42. package/dist/src/transform/transformParameters.d.ts.map +1 -0
  43. package/dist/src/transform/transformParameters.js +315 -0
  44. package/dist/src/transform/transformParameters.js.map +1 -0
  45. package/dist/src/transform/transformPaths.d.ts +10 -0
  46. package/dist/src/transform/transformPaths.d.ts.map +1 -0
  47. package/dist/src/transform/transformPaths.js +124 -0
  48. package/dist/src/transform/transformPaths.js.map +1 -0
  49. package/dist/src/transform/transformResponses.d.ts +5 -0
  50. package/dist/src/transform/transformResponses.d.ts.map +1 -0
  51. package/dist/src/transform/transformResponses.js +136 -0
  52. package/dist/src/transform/transformResponses.js.map +1 -0
  53. package/dist/src/transform/transformSchemas.d.ts +4 -0
  54. package/dist/src/transform/transformSchemas.d.ts.map +1 -0
  55. package/dist/src/transform/transformSchemas.js +175 -0
  56. package/dist/src/transform/transformSchemas.js.map +1 -0
  57. package/dist/src/transform/transfromRLCOptions.d.ts +10 -0
  58. package/dist/src/transform/transfromRLCOptions.d.ts.map +1 -0
  59. package/dist/src/transform/transfromRLCOptions.js +156 -0
  60. package/dist/src/transform/transfromRLCOptions.js.map +1 -0
  61. package/dist/tsconfig.tsbuildinfo +1 -0
  62. package/package.json +73 -0
  63. package/src/emitUtil.ts +63 -0
  64. package/src/index.ts +106 -0
  65. package/src/lib.ts +207 -0
  66. package/src/modelUtils.ts +961 -0
  67. package/src/operationUtil.ts +203 -0
  68. package/src/transform/transform.ts +224 -0
  69. package/src/transform/transformAnnotationDetails.ts +231 -0
  70. package/src/transform/transformApiVersionParam.ts +104 -0
  71. package/src/transform/transformParameters.ts +480 -0
  72. package/src/transform/transformPaths.ts +187 -0
  73. package/src/transform/transformResponses.ts +190 -0
  74. package/src/transform/transformSchemas.ts +209 -0
  75. package/src/transform/transfromRLCOptions.ts +202 -0
  76. package/test/commands/cadl-ranch-list.ts +83 -0
  77. package/test/commands/check-clean-tree.ts +55 -0
  78. package/test/commands/childProcessOnExit.ts +16 -0
  79. package/test/commands/gen-cadl-ranch.ts +21 -0
  80. package/test/commands/run.ts +41 -0
  81. package/test/integration/arrayItemTypes.spec.ts +93 -0
  82. package/test/integration/authApiKey.spec.ts +38 -0
  83. package/test/integration/authOauth2.spec.ts +65 -0
  84. package/test/integration/authUnion.spec.ts +72 -0
  85. package/test/integration/dictionary.spec.ts +102 -0
  86. package/test/integration/extensibleEnums.spec.ts +61 -0
  87. package/test/integration/fixedEnums.spec.ts +52 -0
  88. package/test/integration/generated/arrays/itemTypes/src/arrayItemTypesClient.ts +31 -0
  89. package/test/integration/generated/arrays/itemTypes/src/clientDefinitions.ts +150 -0
  90. package/test/integration/generated/arrays/itemTypes/src/index.ts +13 -0
  91. package/test/integration/generated/arrays/itemTypes/src/models.ts +9 -0
  92. package/test/integration/generated/arrays/itemTypes/src/outputModels.ts +9 -0
  93. package/test/integration/generated/arrays/itemTypes/src/parameters.ts +78 -0
  94. package/test/integration/generated/arrays/itemTypes/src/responses.ts +104 -0
  95. package/test/integration/generated/arrays/itemTypes/tspconfig.yaml +12 -0
  96. package/test/integration/generated/authentication/apiKey/.eslintrc.json +11 -0
  97. package/test/integration/generated/authentication/apiKey/README.md +56 -0
  98. package/test/integration/generated/authentication/apiKey/api-extractor.json +18 -0
  99. package/test/integration/generated/authentication/apiKey/karma.conf.js +133 -0
  100. package/test/integration/generated/authentication/apiKey/package.json +103 -0
  101. package/test/integration/generated/authentication/apiKey/rollup.config.js +118 -0
  102. package/test/integration/generated/authentication/apiKey/src/authApiKeyClient.ts +41 -0
  103. package/test/integration/generated/authentication/apiKey/src/clientDefinitions.ts +33 -0
  104. package/test/integration/generated/authentication/apiKey/src/index.ts +12 -0
  105. package/test/integration/generated/authentication/apiKey/src/outputModels.ts +6 -0
  106. package/test/integration/generated/authentication/apiKey/src/parameters.ts +7 -0
  107. package/test/integration/generated/authentication/apiKey/src/responses.ts +21 -0
  108. package/test/integration/generated/authentication/apiKey/test/public/sampleTest.spec.ts +23 -0
  109. package/test/integration/generated/authentication/apiKey/test/public/utils/env.browser.ts +2 -0
  110. package/test/integration/generated/authentication/apiKey/test/public/utils/env.ts +6 -0
  111. package/test/integration/generated/authentication/apiKey/test/public/utils/recordedClient.ts +29 -0
  112. package/test/integration/generated/authentication/apiKey/tsconfig.json +25 -0
  113. package/test/integration/generated/authentication/apiKey/tspconfig.yaml +10 -0
  114. package/test/integration/generated/authentication/oauth2/karma.conf.js +133 -0
  115. package/test/integration/generated/authentication/oauth2/src/authOauth2Client.ts +41 -0
  116. package/test/integration/generated/authentication/oauth2/src/clientDefinitions.ts +33 -0
  117. package/test/integration/generated/authentication/oauth2/src/index.ts +12 -0
  118. package/test/integration/generated/authentication/oauth2/src/outputModels.ts +6 -0
  119. package/test/integration/generated/authentication/oauth2/src/parameters.ts +7 -0
  120. package/test/integration/generated/authentication/oauth2/src/responses.ts +21 -0
  121. package/test/integration/generated/authentication/oauth2/test/public/sampleTest.spec.ts +23 -0
  122. package/test/integration/generated/authentication/oauth2/test/public/utils/env.browser.ts +2 -0
  123. package/test/integration/generated/authentication/oauth2/test/public/utils/env.ts +6 -0
  124. package/test/integration/generated/authentication/oauth2/test/public/utils/recordedClient.ts +29 -0
  125. package/test/integration/generated/authentication/oauth2/tspconfig.yaml +12 -0
  126. package/test/integration/generated/authentication/union/karma.conf.js +133 -0
  127. package/test/integration/generated/authentication/union/src/authUnionClient.ts +42 -0
  128. package/test/integration/generated/authentication/union/src/clientDefinitions.ts +27 -0
  129. package/test/integration/generated/authentication/union/src/index.ts +11 -0
  130. package/test/integration/generated/authentication/union/src/parameters.ts +7 -0
  131. package/test/integration/generated/authentication/union/src/responses.ts +14 -0
  132. package/test/integration/generated/authentication/union/test/public/sampleTest.spec.ts +23 -0
  133. package/test/integration/generated/authentication/union/test/public/utils/env.browser.ts +2 -0
  134. package/test/integration/generated/authentication/union/test/public/utils/env.ts +6 -0
  135. package/test/integration/generated/authentication/union/test/public/utils/recordedClient.ts +29 -0
  136. package/test/integration/generated/authentication/union/tspconfig.yaml +12 -0
  137. package/test/integration/generated/dictionary/.eslintrc.json +11 -0
  138. package/test/integration/generated/dictionary/README.md +56 -0
  139. package/test/integration/generated/dictionary/api-extractor.json +18 -0
  140. package/test/integration/generated/dictionary/package.json +80 -0
  141. package/test/integration/generated/dictionary/rollup.config.js +118 -0
  142. package/test/integration/generated/dictionary/src/clientDefinitions.ts +165 -0
  143. package/test/integration/generated/dictionary/src/dictClient.ts +29 -0
  144. package/test/integration/generated/dictionary/src/index.ts +13 -0
  145. package/test/integration/generated/dictionary/src/models.ts +9 -0
  146. package/test/integration/generated/dictionary/src/outputModels.ts +9 -0
  147. package/test/integration/generated/dictionary/src/parameters.ts +86 -0
  148. package/test/integration/generated/dictionary/src/responses.ts +115 -0
  149. package/test/integration/generated/dictionary/tsconfig.json +25 -0
  150. package/test/integration/generated/dictionary/tspconfig.yaml +12 -0
  151. package/test/integration/generated/enums/extensible/.eslintrc.json +11 -0
  152. package/test/integration/generated/enums/extensible/README.md +56 -0
  153. package/test/integration/generated/enums/extensible/api-extractor.json +18 -0
  154. package/test/integration/generated/enums/extensible/package.json +80 -0
  155. package/test/integration/generated/enums/extensible/rollup.config.js +118 -0
  156. package/test/integration/generated/enums/extensible/src/clientDefinitions.ts +45 -0
  157. package/test/integration/generated/enums/extensible/src/enumsExtensible.ts +31 -0
  158. package/test/integration/generated/enums/extensible/src/index.ts +11 -0
  159. package/test/integration/generated/enums/extensible/src/parameters.ts +23 -0
  160. package/test/integration/generated/enums/extensible/src/responses.ts +26 -0
  161. package/test/integration/generated/enums/extensible/tsconfig.json +25 -0
  162. package/test/integration/generated/enums/extensible/tspconfig.yaml +11 -0
  163. package/test/integration/generated/enums/fixed/.eslintrc.json +11 -0
  164. package/test/integration/generated/enums/fixed/README.md +56 -0
  165. package/test/integration/generated/enums/fixed/api-extractor.json +18 -0
  166. package/test/integration/generated/enums/fixed/package.json +80 -0
  167. package/test/integration/generated/enums/fixed/rollup.config.js +118 -0
  168. package/test/integration/generated/enums/fixed/src/clientDefinitions.ts +43 -0
  169. package/test/integration/generated/enums/fixed/src/enumsFixed.ts +31 -0
  170. package/test/integration/generated/enums/fixed/src/index.ts +11 -0
  171. package/test/integration/generated/enums/fixed/src/parameters.ts +36 -0
  172. package/test/integration/generated/enums/fixed/src/responses.ts +27 -0
  173. package/test/integration/generated/enums/fixed/tsconfig.json +25 -0
  174. package/test/integration/generated/enums/fixed/tspconfig.yaml +11 -0
  175. package/test/integration/generated/hello/.eslintrc.json +11 -0
  176. package/test/integration/generated/hello/README.md +56 -0
  177. package/test/integration/generated/hello/api-extractor.json +18 -0
  178. package/test/integration/generated/hello/package.json +80 -0
  179. package/test/integration/generated/hello/rollup.config.js +118 -0
  180. package/test/integration/generated/hello/src/clientDefinitions.ts +19 -0
  181. package/test/integration/generated/hello/src/hello.ts +29 -0
  182. package/test/integration/generated/hello/src/index.ts +11 -0
  183. package/test/integration/generated/hello/src/parameters.ts +6 -0
  184. package/test/integration/generated/hello/src/responses.ts +10 -0
  185. package/test/integration/generated/hello/tsconfig.json +25 -0
  186. package/test/integration/generated/hello/tspconfig.yaml +11 -0
  187. package/test/integration/generated/lro/lroBasic/.eslintrc.json +11 -0
  188. package/test/integration/generated/lro/lroBasic/README.md +56 -0
  189. package/test/integration/generated/lro/lroBasic/api-extractor.json +18 -0
  190. package/test/integration/generated/lro/lroBasic/package.json +82 -0
  191. package/test/integration/generated/lro/lroBasic/rollup.config.js +118 -0
  192. package/test/integration/generated/lro/lroBasic/src/azureLro.ts +31 -0
  193. package/test/integration/generated/lro/lroBasic/src/clientDefinitions.ts +37 -0
  194. package/test/integration/generated/lro/lroBasic/src/index.ts +12 -0
  195. package/test/integration/generated/lro/lroBasic/src/parameters.ts +8 -0
  196. package/test/integration/generated/lro/lroBasic/src/pollingHelper.ts +75 -0
  197. package/test/integration/generated/lro/lroBasic/src/responses.ts +22 -0
  198. package/test/integration/generated/lro/lroBasic/tsconfig.json +25 -0
  199. package/test/integration/generated/lro/lroBasic/tspconfig.yaml +11 -0
  200. package/test/integration/generated/models/inheritance/.eslintrc.json +11 -0
  201. package/test/integration/generated/models/inheritance/README.md +56 -0
  202. package/test/integration/generated/models/inheritance/api-extractor.json +18 -0
  203. package/test/integration/generated/models/inheritance/package.json +80 -0
  204. package/test/integration/generated/models/inheritance/rollup.config.js +118 -0
  205. package/test/integration/generated/models/inheritance/src/clientDefinitions.ts +79 -0
  206. package/test/integration/generated/models/inheritance/src/index.ts +13 -0
  207. package/test/integration/generated/models/inheritance/src/models.ts +52 -0
  208. package/test/integration/generated/models/inheritance/src/modelsInheritance.ts +31 -0
  209. package/test/integration/generated/models/inheritance/src/outputModels.ts +52 -0
  210. package/test/integration/generated/models/inheritance/src/parameters.ts +35 -0
  211. package/test/integration/generated/models/inheritance/src/responses.ts +56 -0
  212. package/test/integration/generated/models/inheritance/tsconfig.json +25 -0
  213. package/test/integration/generated/models/inheritance/tspconfig.yaml +11 -0
  214. package/test/integration/generated/models/propertyOptional/.eslintrc.json +11 -0
  215. package/test/integration/generated/models/propertyOptional/README.md +56 -0
  216. package/test/integration/generated/models/propertyOptional/api-extractor.json +18 -0
  217. package/test/integration/generated/models/propertyOptional/package.json +80 -0
  218. package/test/integration/generated/models/propertyOptional/rollup.config.js +118 -0
  219. package/test/integration/generated/models/propertyOptional/src/clientDefinitions.ts +263 -0
  220. package/test/integration/generated/models/propertyOptional/src/index.ts +13 -0
  221. package/test/integration/generated/models/propertyOptional/src/models.ts +46 -0
  222. package/test/integration/generated/models/propertyOptional/src/modelsPropertyOptional.ts +31 -0
  223. package/test/integration/generated/models/propertyOptional/src/outputModels.ts +46 -0
  224. package/test/integration/generated/models/propertyOptional/src/parameters.ts +124 -0
  225. package/test/integration/generated/models/propertyOptional/src/responses.ts +169 -0
  226. package/test/integration/generated/models/propertyOptional/tsconfig.json +25 -0
  227. package/test/integration/generated/models/propertyOptional/tspconfig.yaml +11 -0
  228. package/test/integration/generated/models/propertyTypes/.eslintrc.json +11 -0
  229. package/test/integration/generated/models/propertyTypes/README.md +56 -0
  230. package/test/integration/generated/models/propertyTypes/api-extractor.json +18 -0
  231. package/test/integration/generated/models/propertyTypes/package.json +80 -0
  232. package/test/integration/generated/models/propertyTypes/rollup.config.js +118 -0
  233. package/test/integration/generated/models/propertyTypes/src/clientDefinitions.ts +234 -0
  234. package/test/integration/generated/models/propertyTypes/src/index.ts +13 -0
  235. package/test/integration/generated/models/propertyTypes/src/models.ts +99 -0
  236. package/test/integration/generated/models/propertyTypes/src/modelsPropertyTypes.ts +31 -0
  237. package/test/integration/generated/models/propertyTypes/src/outputModels.ts +99 -0
  238. package/test/integration/generated/models/propertyTypes/src/parameters.ts +147 -0
  239. package/test/integration/generated/models/propertyTypes/src/responses.ts +186 -0
  240. package/test/integration/generated/models/propertyTypes/tsconfig.json +25 -0
  241. package/test/integration/generated/models/propertyTypes/tspconfig.yaml +11 -0
  242. package/test/integration/generated/models/usage/.eslintrc.json +11 -0
  243. package/test/integration/generated/models/usage/README.md +56 -0
  244. package/test/integration/generated/models/usage/api-extractor.json +18 -0
  245. package/test/integration/generated/models/usage/package.json +80 -0
  246. package/test/integration/generated/models/usage/rollup.config.js +118 -0
  247. package/test/integration/generated/models/usage/src/clientDefinitions.ts +41 -0
  248. package/test/integration/generated/models/usage/src/index.ts +13 -0
  249. package/test/integration/generated/models/usage/src/models.ts +12 -0
  250. package/test/integration/generated/models/usage/src/modelsUsage.ts +31 -0
  251. package/test/integration/generated/models/usage/src/outputModels.ts +12 -0
  252. package/test/integration/generated/models/usage/src/parameters.ts +19 -0
  253. package/test/integration/generated/models/usage/src/responses.ts +22 -0
  254. package/test/integration/generated/models/usage/tsconfig.json +25 -0
  255. package/test/integration/generated/models/usage/tspconfig.yaml +11 -0
  256. package/test/integration/generated/models/visibility/.eslintrc.json +11 -0
  257. package/test/integration/generated/models/visibility/README.md +56 -0
  258. package/test/integration/generated/models/visibility/api-extractor.json +18 -0
  259. package/test/integration/generated/models/visibility/package.json +80 -0
  260. package/test/integration/generated/models/visibility/rollup.config.js +118 -0
  261. package/test/integration/generated/models/visibility/src/clientDefinitions.ts +40 -0
  262. package/test/integration/generated/models/visibility/src/index.ts +13 -0
  263. package/test/integration/generated/models/visibility/src/models.ts +14 -0
  264. package/test/integration/generated/models/visibility/src/modelsVisibilityAutomatic.ts +31 -0
  265. package/test/integration/generated/models/visibility/src/outputModels.ts +16 -0
  266. package/test/integration/generated/models/visibility/src/parameters.ts +41 -0
  267. package/test/integration/generated/models/visibility/src/responses.ts +36 -0
  268. package/test/integration/generated/models/visibility/tsconfig.json +25 -0
  269. package/test/integration/generated/models/visibility/tspconfig.yaml +11 -0
  270. package/test/integration/generated/resiliency/devDriven/.eslintrc.json +11 -0
  271. package/test/integration/generated/resiliency/devDriven/README.md +56 -0
  272. package/test/integration/generated/resiliency/devDriven/api-extractor.json +18 -0
  273. package/test/integration/generated/resiliency/devDriven/package.json +81 -0
  274. package/test/integration/generated/resiliency/devDriven/rollup.config.js +118 -0
  275. package/test/integration/generated/resiliency/devDriven/src/clientDefinitions.ts +75 -0
  276. package/test/integration/generated/resiliency/devDriven/src/index.ts +15 -0
  277. package/test/integration/generated/resiliency/devDriven/src/isUnexpected.ts +117 -0
  278. package/test/integration/generated/resiliency/devDriven/src/models.ts +8 -0
  279. package/test/integration/generated/resiliency/devDriven/src/outputModels.ts +25 -0
  280. package/test/integration/generated/resiliency/devDriven/src/paginateHelper.ts +154 -0
  281. package/test/integration/generated/resiliency/devDriven/src/parameters.ts +17 -0
  282. package/test/integration/generated/resiliency/devDriven/src/resiliencyDevDriven.ts +31 -0
  283. package/test/integration/generated/resiliency/devDriven/src/responses.ts +62 -0
  284. package/test/integration/generated/resiliency/devDriven/tsconfig.json +25 -0
  285. package/test/integration/generated/resiliency/devDriven/tspconfig.yaml +11 -0
  286. package/test/integration/generated/resiliency/srvDriven1/.eslintrc.json +11 -0
  287. package/test/integration/generated/resiliency/srvDriven1/README.md +56 -0
  288. package/test/integration/generated/resiliency/srvDriven1/api-extractor.json +18 -0
  289. package/test/integration/generated/resiliency/srvDriven1/package.json +80 -0
  290. package/test/integration/generated/resiliency/srvDriven1/rollup.config.js +118 -0
  291. package/test/integration/generated/resiliency/srvDriven1/src/clientDefinitions.ts +70 -0
  292. package/test/integration/generated/resiliency/srvDriven1/src/index.ts +13 -0
  293. package/test/integration/generated/resiliency/srvDriven1/src/models.ts +6 -0
  294. package/test/integration/generated/resiliency/srvDriven1/src/outputModels.ts +6 -0
  295. package/test/integration/generated/resiliency/srvDriven1/src/parameters.ts +51 -0
  296. package/test/integration/generated/resiliency/srvDriven1/src/resiliencyServiceDriven1.ts +31 -0
  297. package/test/integration/generated/resiliency/srvDriven1/src/responses.ts +34 -0
  298. package/test/integration/generated/resiliency/srvDriven1/tsconfig.json +25 -0
  299. package/test/integration/generated/resiliency/srvDriven1/tspconfig.yaml +11 -0
  300. package/test/integration/generated/resiliency/srvDriven2/.eslintrc.json +11 -0
  301. package/test/integration/generated/resiliency/srvDriven2/README.md +56 -0
  302. package/test/integration/generated/resiliency/srvDriven2/api-extractor.json +18 -0
  303. package/test/integration/generated/resiliency/srvDriven2/package.json +80 -0
  304. package/test/integration/generated/resiliency/srvDriven2/rollup.config.js +118 -0
  305. package/test/integration/generated/resiliency/srvDriven2/src/clientDefinitions.ts +93 -0
  306. package/test/integration/generated/resiliency/srvDriven2/src/index.ts +13 -0
  307. package/test/integration/generated/resiliency/srvDriven2/src/models.ts +6 -0
  308. package/test/integration/generated/resiliency/srvDriven2/src/outputModels.ts +6 -0
  309. package/test/integration/generated/resiliency/srvDriven2/src/parameters.ts +68 -0
  310. package/test/integration/generated/resiliency/srvDriven2/src/resiliencyServiceDriven2.ts +31 -0
  311. package/test/integration/generated/resiliency/srvDriven2/src/responses.ts +45 -0
  312. package/test/integration/generated/resiliency/srvDriven2/tsconfig.json +25 -0
  313. package/test/integration/generated/resiliency/srvDriven2/tspconfig.yaml +11 -0
  314. package/test/integration/generated/specialWords/src/clientDefinitions.ts +61 -0
  315. package/test/integration/generated/specialWords/src/index.ts +13 -0
  316. package/test/integration/generated/specialWords/src/models.ts +17 -0
  317. package/test/integration/generated/specialWords/src/outputModels.ts +17 -0
  318. package/test/integration/generated/specialWords/src/parameters.ts +37 -0
  319. package/test/integration/generated/specialWords/src/responses.ts +31 -0
  320. package/test/integration/generated/specialWords/src/specialWordsClient.ts +31 -0
  321. package/test/integration/generated/specialWords/tspconfig.yaml +11 -0
  322. package/test/integration/generated/unions/src/clientDefinitions.ts +53 -0
  323. package/test/integration/generated/unions/src/index.ts +12 -0
  324. package/test/integration/generated/unions/src/models.ts +27 -0
  325. package/test/integration/generated/unions/src/parameters.ts +34 -0
  326. package/test/integration/generated/unions/src/responses.ts +24 -0
  327. package/test/integration/generated/unions/src/unionsClient.ts +31 -0
  328. package/test/integration/generated/unions/tspconfig.yaml +11 -0
  329. package/test/integration/helloWorld.spec.ts +20 -0
  330. package/test/integration/lroBasic.spec.ts +25 -0
  331. package/test/integration/modelInheritance.spec.ts +192 -0
  332. package/test/integration/modelPropertyOptional.spec.ts +362 -0
  333. package/test/integration/modelPropertyType.spec.ts +119 -0
  334. package/test/integration/modelUsage.spec.ts +47 -0
  335. package/test/integration/resiliencyDpgCustomization.spec.ts +52 -0
  336. package/test/integration/specialWords.spec.ts +73 -0
  337. package/test/integration/unions.spec.ts +69 -0
  338. package/test/tsconfig.json +4 -0
  339. package/test/unit/azureCoreOperationsGenerator.spec.ts +71 -0
  340. package/test/unit/clientDefinitionGenerator.spec.ts +73 -0
  341. package/test/unit/clientFactoryGenerator.spec.ts +507 -0
  342. package/test/unit/docsGenerator.spec.ts +201 -0
  343. package/test/unit/modelsGenerator.spec.ts +1319 -0
  344. package/test/unit/parametersGenerator.spec.ts +561 -0
  345. package/test/unit/responsesGenerator.spec.ts +462 -0
  346. package/test/unit/spreadAndAlias.spec.ts +200 -0
  347. package/test/unit/util/emitUtil.ts +156 -0
  348. package/test/unit/util/testUtil.ts +83 -0
  349. package/test/util/customBearerTokenTestingPolicy.ts +78 -0
  350. package/test/util/matrix.ts +48 -0
  351. package/tsconfig.json +36 -0
  352. package/tsconfig.test.json +7 -0
  353. package/typespec-ts.build.log +2 -0
@@ -0,0 +1,507 @@
1
+ import { assert } from "chai";
2
+ import { emitClientFactoryFromCadl } from "./util/emitUtil.js";
3
+ import { assertEqualContent } from "./util/testUtil.js";
4
+
5
+ describe("Client Factory generation", () => {
6
+ describe("should handle url parameters", () => {
7
+ it("should handle zero parameter", async () => {
8
+ const models = await emitClientFactoryFromCadl(`
9
+ @server(
10
+ "localhost",
11
+ "Language Service"
12
+ )
13
+ @service( {title: "PetStoreClient"})
14
+ namespace PetStore;
15
+ `);
16
+ assert.ok(models);
17
+ assertEqualContent(
18
+ models!.content,
19
+ `
20
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
21
+ import { testClient } from "./clientDefinitions";
22
+
23
+ /**
24
+ * Initialize a new instance of \`testClient\`
25
+ * @param options type: ClientOptions, the parameter for all optional parameters
26
+ */
27
+ export default function createClient(options: ClientOptions = {}): testClient {
28
+ const baseUrl = options.baseUrl ?? \`localhost\`;
29
+
30
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
31
+ const userAgentPrefix =
32
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
33
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
34
+ : \`\${userAgentInfo}\`;
35
+ options = {
36
+ ...options,
37
+ userAgentOptions: {
38
+ userAgentPrefix,
39
+ },
40
+ };
41
+
42
+ const client = getClient(baseUrl, options) as testClient;
43
+
44
+ return client;
45
+ }
46
+ `
47
+ );
48
+ });
49
+ it("should handle one parameter", async () => {
50
+ const models = await emitClientFactoryFromCadl(`
51
+ @server(
52
+ "{Endpoint}/language",
53
+ "Language Service",
54
+ {
55
+ Endpoint: Endpoint,
56
+ }
57
+ )
58
+ @service( {title: "PetStoreClient"})
59
+ namespace PetStore;
60
+ @doc("The endpoint to use.")
61
+ scalar Endpoint extends string;
62
+ `);
63
+ assert.ok(models);
64
+ assertEqualContent(
65
+ models!.content,
66
+ `
67
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
68
+ import { testClient } from "./clientDefinitions";
69
+
70
+ /**
71
+ * Initialize a new instance of \`testClient\`
72
+ * @param endpoint type: string, The endpoint to use.
73
+ * @param options type: ClientOptions, the parameter for all optional parameters
74
+ */
75
+ export default function createClient(
76
+ endpoint: string,
77
+ options: ClientOptions = {}
78
+ ): testClient {
79
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/language\`;
80
+
81
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
82
+ const userAgentPrefix =
83
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
84
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
85
+ : \`\${userAgentInfo}\`;
86
+ options = {
87
+ ...options,
88
+ userAgentOptions: {
89
+ userAgentPrefix,
90
+ },
91
+ };
92
+
93
+ const client = getClient(baseUrl, options) as testClient;
94
+
95
+ return client;
96
+ }
97
+ `
98
+ );
99
+ });
100
+
101
+ it("should handle two parameters", async () => {
102
+ const models = await emitClientFactoryFromCadl(
103
+ `
104
+ @server(
105
+ "{Endpoint}/language/{Version}",
106
+ "Language Service",
107
+ {
108
+ Endpoint: Endpoint,
109
+ Version: Version
110
+ }
111
+ )
112
+ @service( {title: "PetStoreClient"})
113
+ namespace PetStore;
114
+ @doc("The endpoint to use.")
115
+ scalar Endpoint extends string;
116
+
117
+ #suppress "@azure-tools/typespec-azure-core/use-extensible-enum" "for test"
118
+ @doc("The version to use")
119
+ @fixed
120
+ enum Version {
121
+ V1,
122
+ V2
123
+ }
124
+ `,
125
+ true
126
+ );
127
+ assert.ok(models);
128
+ assertEqualContent(
129
+ models!.content,
130
+ `
131
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
132
+ import { testClient } from "./clientDefinitions";
133
+
134
+ /**
135
+ * Initialize a new instance of \`testClient\`
136
+ * @param endpoint type: string, The endpoint to use.
137
+ * @param version type: "V1"|"V2", The version to use
138
+ * @param options type: ClientOptions, the parameter for all optional parameters
139
+ */
140
+ export default function createClient(
141
+ endpoint: string,
142
+ version: "V1" | "V2",
143
+ options: ClientOptions = {}
144
+ ): testClient {
145
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/language/\${version}\`;
146
+
147
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
148
+ const userAgentPrefix =
149
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
150
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
151
+ : \`\${userAgentInfo}\`;
152
+ options = {
153
+ ...options,
154
+ userAgentOptions: {
155
+ userAgentPrefix,
156
+ },
157
+ };
158
+
159
+ const client = getClient(baseUrl, options) as testClient;
160
+
161
+ return client;
162
+ }
163
+ `
164
+ );
165
+ });
166
+ it("should handle extensible enums in host parameters", async () => {
167
+ const models = await emitClientFactoryFromCadl(
168
+ `
169
+ @server(
170
+ "{Endpoint}/language/{Version}",
171
+ "Language Service",
172
+ {
173
+ Endpoint: Endpoint,
174
+ Version: Versions
175
+ }
176
+ )
177
+ @service( {title: "PetStoreClient"})
178
+ namespace PetStore;
179
+ @doc("The endpoint to use.")
180
+ scalar Endpoint extends string;
181
+
182
+ @doc("The version to use.")
183
+ enum Versions {
184
+ v1_1: "v1.1",
185
+ }
186
+ `,
187
+ true
188
+ );
189
+ assert.ok(models);
190
+ assertEqualContent(
191
+ models!.content,
192
+ `
193
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
194
+ import { testClient } from "./clientDefinitions";
195
+
196
+ /**
197
+ * Initialize a new instance of \`testClient\`
198
+ * @param endpoint type: string, The endpoint to use.
199
+ * @param version type: string, The version to use. Possible values: v1.1
200
+ * @param options type: ClientOptions, the parameter for all optional parameters
201
+ */
202
+ export default function createClient(
203
+ endpoint: string,
204
+ version: string,
205
+ options: ClientOptions = {}
206
+ ): testClient {
207
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/language/\${version}\`;
208
+
209
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
210
+ const userAgentPrefix =
211
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
212
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
213
+ : \`\${userAgentInfo}\`;
214
+ options = {
215
+ ...options,
216
+ userAgentOptions: {
217
+ userAgentPrefix,
218
+ },
219
+ };
220
+
221
+ const client = getClient(baseUrl, options) as testClient;
222
+
223
+ return client;
224
+ }
225
+ `
226
+ );
227
+ });
228
+ });
229
+
230
+ describe("should handle apiVersion correctly", () => {
231
+ describe("apiVersion as query parameter", () => {
232
+ it("should set the default value in options", async () => {
233
+ const models = await emitClientFactoryFromCadl(`
234
+ @server(
235
+ "{Endpoint}/language",
236
+ "Language Service",
237
+ {
238
+ Endpoint: Endpoint
239
+ }
240
+ )
241
+ @service({
242
+ title: "PetStoreClient",
243
+ version: "2022-05-15-preview",
244
+ })
245
+ namespace PetStore;
246
+ @doc("The endpoint to use.")
247
+ scalar Endpoint extends string;
248
+ `);
249
+ assert.ok(models);
250
+ assertEqualContent(
251
+ models!.content,
252
+ `
253
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
254
+ import { testClient } from "./clientDefinitions";
255
+
256
+ /**
257
+ * Initialize a new instance of \`testClient\`
258
+ * @param endpoint type: string, The endpoint to use.
259
+ * @param options type: ClientOptions, the parameter for all optional parameters
260
+ */
261
+ export default function createClient(
262
+ endpoint: string,
263
+ options: ClientOptions = {}
264
+ ): testClient {
265
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/language\`;
266
+ options.apiVersion = options.apiVersion ?? "2022-05-15-preview";
267
+
268
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
269
+ const userAgentPrefix =
270
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
271
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
272
+ : \`\${userAgentInfo}\`;
273
+ options = {
274
+ ...options,
275
+ userAgentOptions: {
276
+ userAgentPrefix,
277
+ },
278
+ };
279
+
280
+ const client = getClient(baseUrl, options) as testClient;
281
+
282
+ return client;
283
+ }
284
+ `
285
+ );
286
+ });
287
+ });
288
+ describe("apiVersion as path parameter", () => {
289
+ it("should set the default value in customized options", async () => {
290
+ const models = await emitClientFactoryFromCadl(`
291
+ @versioned(Versions)
292
+ @server(
293
+ "{Endpoint}/anomalydetector/{ApiVersion}",
294
+ "Language Service",
295
+ {
296
+ Endpoint: Endpoint,
297
+ @doc("Api Version")
298
+ @path
299
+ ApiVersion: APIVersion,
300
+ }
301
+ )
302
+ @service({
303
+ title: "PetStoreClient"
304
+ })
305
+ namespace PetStore;
306
+ @doc("The endpoint to use.")
307
+ scalar Endpoint extends string;
308
+
309
+ enum Versions {
310
+ v1_1: "v1.1",
311
+ }
312
+ @knownValues(Versions)
313
+ scalar APIVersion extends string;
314
+ `);
315
+ assert.ok(models);
316
+ assertEqualContent(
317
+ models!.content,
318
+ `
319
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
320
+ import { testClient } from "./clientDefinitions";
321
+
322
+ export interface testClientOptions extends ClientOptions {
323
+ apiVersion?: string;
324
+ }
325
+
326
+ /**
327
+ * Initialize a new instance of \`testClient\`
328
+ * @param endpoint type: string, The endpoint to use.
329
+ * @param options type: testClientOptions, the parameter for all optional parameters
330
+ */
331
+ export default function createClient(
332
+ endpoint: string,
333
+ options: testClientOptions = {}
334
+ ): testClient {
335
+ const apiVersion = options.apiVersion ?? "v1.1";
336
+ const baseUrl = options.baseUrl ?? \`\${endpoint}/anomalydetector/\${apiVersion}\`;
337
+
338
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
339
+ const userAgentPrefix =
340
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
341
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
342
+ : \`\${userAgentInfo}\`;
343
+ options = {
344
+ ...options,
345
+ userAgentOptions: {
346
+ userAgentPrefix,
347
+ },
348
+ };
349
+
350
+ const client = getClient(baseUrl, options) as testClient;
351
+
352
+ return client;
353
+ }
354
+ `
355
+ );
356
+ });
357
+ });
358
+ describe("mixed apiVersion in path & query parameter", () => {});
359
+ });
360
+
361
+ describe("should handle no @server definition", () => {
362
+ it("should set default endpoint parameter when no @server", async () => {
363
+ const models = await emitClientFactoryFromCadl(`
364
+ @service( {title: "PetStoreClient"})
365
+ namespace PetStore;
366
+ `);
367
+ assert.ok(models);
368
+ assertEqualContent(
369
+ models!.content,
370
+ `
371
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
372
+ import { testClient } from "./clientDefinitions";
373
+
374
+ /**
375
+ * Initialize a new instance of \`testClient\`
376
+ * @param endpoint type: string, The parameter endpoint
377
+ * @param options type: ClientOptions, the parameter for all optional parameters
378
+ */
379
+ export default function createClient(endpoint: string, options: ClientOptions = {}): testClient {
380
+ const baseUrl = options.baseUrl ?? \`\${endpoint}\`;
381
+
382
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
383
+ const userAgentPrefix =
384
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
385
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
386
+ : \`\${userAgentInfo}\`;
387
+ options = {
388
+ ...options,
389
+ userAgentOptions: {
390
+ userAgentPrefix,
391
+ },
392
+ };
393
+
394
+ const client = getClient(baseUrl, options) as testClient;
395
+
396
+ return client;
397
+ }
398
+ `
399
+ );
400
+ });
401
+ });
402
+
403
+ describe("should handle different auth options", () => {
404
+ it("should not generate credential if scope is empty", async () => {
405
+ const models = await emitClientFactoryFromCadl(`
406
+ @useAuth(
407
+ OAuth2Auth<[{
408
+ type: OAuth2FlowType.implicit,
409
+ authorizationUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
410
+ scopes: []
411
+ }]>)
412
+ @service( {title: "PetStoreClient"})
413
+ namespace PetStore;
414
+ `);
415
+ assert.ok(models);
416
+ assertEqualContent(
417
+ models!.content,
418
+ `
419
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
420
+ import { testClient } from "./clientDefinitions";
421
+
422
+ /**
423
+ * Initialize a new instance of \`testClient\`
424
+ * @param endpoint type: string, The parameter endpoint
425
+ * @param options type: ClientOptions, the parameter for all optional parameters
426
+ */
427
+ export default function createClient(endpoint: string, options: ClientOptions = {}): testClient {
428
+ const baseUrl = options.baseUrl ?? \`\${endpoint}\`;
429
+
430
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
431
+ const userAgentPrefix =
432
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
433
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
434
+ : \`\${userAgentInfo}\`;
435
+ options = {
436
+ ...options,
437
+ userAgentOptions: {
438
+ userAgentPrefix,
439
+ },
440
+ };
441
+
442
+ const client = getClient(baseUrl, options) as testClient;
443
+
444
+ return client;
445
+ }
446
+ `
447
+ );
448
+ });
449
+
450
+ it("should generate both credentials if both defined", async () => {
451
+ const models = await emitClientFactoryFromCadl(`
452
+ @useAuth(
453
+ ApiKeyAuth<ApiKeyLocation.header, "apiKey"> |
454
+ OAuth2Auth<[{
455
+ type: OAuth2FlowType.implicit,
456
+ authorizationUrl: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
457
+ scopes: ["https://petstor.com/default"]
458
+ }]>)
459
+ @service( {title: "PetStoreClient"})
460
+ namespace PetStore;
461
+ `);
462
+ assert.ok(models);
463
+ assertEqualContent(
464
+ models!.content,
465
+ `
466
+ import { getClient, ClientOptions } from "@azure-rest/core-client";
467
+ import { TokenCredential, KeyCredential } from "@azure/core-auth";
468
+ import { testClient } from "./clientDefinitions";
469
+
470
+ /**
471
+ * Initialize a new instance of \`testClient\`
472
+ * @param endpoint type: string, The parameter endpoint
473
+ * @param credentials type: TokenCredential|KeyCredential, uniquely identify client credential
474
+ * @param options type: ClientOptions, the parameter for all optional parameters
475
+ */
476
+ export default function createClient(endpoint: string, credentials: TokenCredential | KeyCredential, options: ClientOptions = {}): testClient {
477
+ const baseUrl = options.baseUrl ?? \`\${endpoint}\`;
478
+
479
+ options = {
480
+ ...options,
481
+ credentials: {
482
+ scopes: ["https://petstor.com/default"],
483
+ apiKeyHeaderName: "apiKey",
484
+ },
485
+ };
486
+
487
+ const userAgentInfo = \`azsdk-js--rest/1.0.0-beta.1\`;
488
+ const userAgentPrefix =
489
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
490
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${userAgentInfo}\`
491
+ : \`\${userAgentInfo}\`;
492
+ options = {
493
+ ...options,
494
+ userAgentOptions: {
495
+ userAgentPrefix,
496
+ },
497
+ };
498
+
499
+ const client = getClient(baseUrl, credentials, options) as testClient;
500
+
501
+ return client;
502
+ }
503
+ `
504
+ );
505
+ });
506
+ });
507
+ });
@@ -0,0 +1,201 @@
1
+ import { assert } from "chai";
2
+ import {
3
+ emitClientDefinitionFromCadl,
4
+ emitModelsFromCadl,
5
+ emitParameterFromCadl
6
+ } from "./util/emitUtil.js";
7
+ import { assertEqualContent } from "./util/testUtil.js";
8
+
9
+ describe("Doc generation testing", () => {
10
+ describe("docs in models.ts & outputModels.ts", () => {
11
+ it("should generate model-level and property-level docs in input model", async () => {
12
+ const models = await emitModelsFromCadl(`
13
+ @doc("A simple model with doc")
14
+ model SimpleModel {
15
+ @doc("A test property.")
16
+ prop: string;
17
+ }
18
+ op read(): { @body body: SimpleModel };
19
+ `);
20
+ assert.ok(models);
21
+ assertEqualContent(
22
+ models!.outputModelFile!.content,
23
+ `
24
+ /** A simple model with doc */
25
+ export interface SimpleModelOutput {
26
+ /** A test property. */
27
+ prop: string;
28
+ }
29
+ `
30
+ );
31
+ });
32
+ });
33
+
34
+ describe("docs in parameters.ts", () => {
35
+ it("should generate body description", async () => {
36
+ const parameters = await emitParameterFromCadl(
37
+ `
38
+ model UserDetailsParameter {
39
+ @body
40
+ @doc("Details about username.")
41
+ username: string;
42
+ }
43
+ op createOrUpdateUser(...UserDetailsParameter): OkResponse;
44
+ `
45
+ );
46
+ assert.ok(parameters);
47
+ assertEqualContent(
48
+ parameters?.content!,
49
+ `
50
+ import { RequestParameters } from "@azure-rest/core-client";
51
+
52
+ export interface CreateOrUpdateUserBodyParam {
53
+ /** Details about username. */
54
+ body: string;
55
+ }
56
+
57
+ export type CreateOrUpdateUserParameters = CreateOrUpdateUserBodyParam & RequestParameters;
58
+ `
59
+ );
60
+ });
61
+ it("shouldn't generate type description as body property description", async () => {
62
+ const parameters = await emitParameterFromCadl(
63
+ `
64
+ @doc("Body type details")
65
+ model UserDetailsParameter {
66
+ username: string;
67
+ }
68
+ op createOrUpdateUser(@body username: UserDetailsParameter): OkResponse;
69
+ `
70
+ );
71
+ assert.ok(parameters);
72
+ assertEqualContent(
73
+ parameters?.content!,
74
+ `
75
+ import { RequestParameters } from "@azure-rest/core-client";
76
+ import { UserDetailsParameter } from "./models";
77
+
78
+ export interface CreateOrUpdateUserBodyParam {
79
+ body: UserDetailsParameter;
80
+ }
81
+
82
+ export type CreateOrUpdateUserParameters = CreateOrUpdateUserBodyParam & RequestParameters;
83
+ `
84
+ );
85
+ });
86
+ it("should generate query description", async () => {
87
+ const parameters = await emitParameterFromCadl(
88
+ `
89
+ @doc("The filter query parameter.")
90
+ model FilterParameter {
91
+ @query
92
+ @doc("Input your filter condition.")
93
+ filter: string;
94
+ }
95
+ op list(...FilterParameter): OkResponse;
96
+ `
97
+ );
98
+ assert.ok(parameters);
99
+ assertEqualContent(
100
+ parameters?.content!,
101
+ `
102
+ import { RequestParameters } from "@azure-rest/core-client";
103
+
104
+ export interface ListQueryParamProperties {
105
+ /** Input your filter condition. */
106
+ filter: string;
107
+ }
108
+
109
+ export interface ListQueryParam {
110
+ queryParameters: ListQueryParamProperties;
111
+ }
112
+
113
+ export type ListParameters = ListQueryParam & RequestParameters;
114
+ `
115
+ );
116
+ });
117
+ it("should generate header description with custom name", async () => {
118
+ const parameters = await emitParameterFromCadl(
119
+ `
120
+ op test(@doc("test header") @header("x-my-header") MyHeader: string): string;
121
+ `
122
+ );
123
+ assert.ok(parameters);
124
+ assertEqualContent(
125
+ parameters?.content!,
126
+ `
127
+ import { RawHttpHeadersInput } from "@azure/core-rest-pipeline";
128
+ import { RequestParameters } from "@azure-rest/core-client";
129
+
130
+ export interface TestHeaders {
131
+ /** test header */
132
+ "x-my-header": string;
133
+ }
134
+
135
+ export interface TestHeaderParam {
136
+ headers: RawHttpHeadersInput & TestHeaders;
137
+ }
138
+
139
+ export type TestParameters = TestHeaderParam & RequestParameters;
140
+ `
141
+ );
142
+ });
143
+ it("should generate contentType description", async () => {
144
+ const parameters = await emitParameterFromCadl(
145
+ `
146
+ #suppress "@typespec/http/content-type-ignored" "for test"
147
+ op test(@doc("content type") @header contentType: "application/octet-stream"): string;
148
+ `
149
+ );
150
+ assert.ok(parameters);
151
+ assertEqualContent(
152
+ parameters?.content!,
153
+ `
154
+ import { RequestParameters } from "@azure-rest/core-client";
155
+
156
+ export interface TestMediaTypesParam {
157
+ /** content type */
158
+ contentType: "application/octet-stream";
159
+ }
160
+
161
+ export type TestParameters = TestMediaTypesParam & RequestParameters;
162
+ `
163
+ );
164
+ });
165
+ });
166
+
167
+ describe("docs in clientDefinitions.ts", () => {
168
+ it("should generate operation description", async () => {
169
+ const clientDef = await emitClientDefinitionFromCadl(
170
+ `
171
+ @summary("This is a summary")
172
+ @doc("This is the longer description")
173
+ op read(): {};
174
+ `
175
+ );
176
+ assert.ok(clientDef);
177
+ assertEqualContent(
178
+ clientDef?.content!,
179
+ `
180
+ import { ReadParameters } from "./parameters";
181
+ import { Read200Response } from "./responses";
182
+ import { Client, StreamableMethod } from "@azure-rest/core-client";
183
+
184
+ export interface Read {
185
+ /** This is the longer description */
186
+ get(options?: ReadParameters): StreamableMethod<Read200Response>;
187
+ }
188
+
189
+ export interface Routes {
190
+ /** Resource for '/' has methods for the following verbs: get */
191
+ (path: "/"): Read;
192
+ }
193
+
194
+ export type testClient = Client & {
195
+ path: Routes;
196
+ };
197
+ `
198
+ );
199
+ });
200
+ });
201
+ });