@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,462 @@
1
+ import { assert } from "chai";
2
+ import { emitResponsesFromCadl } from "./util/emitUtil.js";
3
+ import { assertEqualContent } from "./util/testUtil.js";
4
+
5
+ describe("Responses.ts", () => {
6
+ describe("property name generation", () => {
7
+ it("should generate property name with custome name", async () => {
8
+ const responses = await emitResponsesFromCadl(`
9
+ model SimpleModel {}
10
+ @doc("Metadata for long running operation status monitor locations")
11
+ model LongRunningStatusLocation {
12
+ @doc("The location for monitoring the operation state.")
13
+ @header("Operation-Location")
14
+ operationLocation: ResourceLocation<SimpleModel>;
15
+ }
16
+ op read(): LongRunningStatusLocation;
17
+ `);
18
+ assert.ok(responses);
19
+ assertEqualContent(
20
+ responses!.content,
21
+ `
22
+ import { RawHttpHeaders } from "@azure/core-rest-pipeline";
23
+ import { HttpResponse } from "@azure-rest/core-client";
24
+
25
+ export interface Read204Headers {
26
+ /** The location for monitoring the operation state. */
27
+ "operation-location": string;
28
+ }
29
+
30
+ /** Metadata for long running operation status monitor locations */
31
+ export interface Read204Response extends HttpResponse {
32
+ status: "204";
33
+ headers: RawHttpHeaders & Read204Headers;
34
+ }`
35
+ );
36
+ });
37
+
38
+ it("should generate property name without custome name", async () => {
39
+ const responses = await emitResponsesFromCadl(`
40
+ model SimpleModel {}
41
+ @doc("Metadata for long running operation status monitor locations")
42
+ model LongRunningStatusLocation {
43
+ @doc("The location for monitoring the operation state.")
44
+ @header
45
+ operationLocation: ResourceLocation<SimpleModel>;
46
+ }
47
+ op read(): LongRunningStatusLocation;
48
+ `);
49
+ assert.ok(responses);
50
+ assertEqualContent(
51
+ responses!.content,
52
+ `
53
+ import { RawHttpHeaders } from "@azure/core-rest-pipeline";
54
+ import { HttpResponse } from "@azure-rest/core-client";
55
+
56
+ export interface Read204Headers {
57
+ /** The location for monitoring the operation state. */
58
+ "operation-location": string;
59
+ }
60
+
61
+ /** Metadata for long running operation status monitor locations */
62
+ export interface Read204Response extends HttpResponse {
63
+ status: "204";
64
+ headers: RawHttpHeaders & Read204Headers;
65
+ }`
66
+ );
67
+ });
68
+ });
69
+
70
+ describe("statusCode generation", () => {
71
+ it("should generate property name with custome name", async () => {
72
+ const responses = await emitResponsesFromCadl(`
73
+ @doc("Error")
74
+ @error
75
+ model Error {
76
+ code: int32;
77
+ message: string;
78
+ }
79
+ model Key {
80
+ key: string;
81
+ }
82
+ op read(): Key | Error;
83
+ `);
84
+ assert.ok(responses);
85
+ assertEqualContent(
86
+ responses!.content,
87
+ `
88
+ import { HttpResponse } from "@azure-rest/core-client";
89
+ import { KeyOutput, ErrorModelOutput } from "./outputModels";
90
+
91
+ /** The request has succeeded. */
92
+ export interface Read200Response extends HttpResponse {
93
+ status: "200";
94
+ body: KeyOutput;
95
+ }
96
+
97
+ export interface ReadDefaultResponse extends HttpResponse {
98
+ status: string;
99
+ body: ErrorModelOutput;
100
+ }
101
+ `
102
+ );
103
+ });
104
+ });
105
+
106
+ describe("body generation", () => {
107
+ it("unknown array response generation", async () => {
108
+ const parameters = await emitResponsesFromCadl(`
109
+ @post op read(): unknown[];
110
+ `);
111
+ assert.ok(parameters);
112
+ assertEqualContent(
113
+ parameters?.content!,
114
+ `
115
+ import { HttpResponse } from "@azure-rest/core-client";
116
+
117
+ /** The request has succeeded. */
118
+ export interface Read200Response extends HttpResponse {
119
+ status: "200";
120
+ body: any[];
121
+ }
122
+ `
123
+ );
124
+ });
125
+
126
+ it("Record<SimpleModel> response generation", async () => {
127
+ const parameters = await emitResponsesFromCadl(`
128
+ model SimpleModel {
129
+ prop1: string;
130
+ prop2: int32;
131
+ }
132
+ @post op read(@body body: SimpleModel[]): Record<SimpleModel>;
133
+ `);
134
+ assert.ok(parameters);
135
+ assertEqualContent(
136
+ parameters?.content!,
137
+ `
138
+ import { HttpResponse } from "@azure-rest/core-client";
139
+ import { SimpleModelOutput } from "./outputModels";
140
+
141
+ /** The request has succeeded. */
142
+ export interface Read200Response extends HttpResponse {
143
+ status: "200";
144
+ body: Record<string, SimpleModelOutput>;
145
+ }
146
+ `
147
+ );
148
+ });
149
+
150
+ it("should generate Record<unknown> as body property", async () => {
151
+ const responses = await emitResponsesFromCadl(`
152
+ op read(): Record<unknown>;
153
+ `);
154
+ assert.ok(responses);
155
+ assertEqualContent(
156
+ responses!.content,
157
+ `
158
+ import { HttpResponse } from "@azure-rest/core-client";
159
+
160
+ /** The request has succeeded. */
161
+ export interface Read200Response extends HttpResponse {
162
+ status: "200";
163
+ body: Record<string, any>;
164
+ }
165
+ `
166
+ );
167
+ });
168
+ it("@header contentType not json or text should set format to binary(finally unit8array)", async () => {
169
+ const responses = await emitResponsesFromCadl(`
170
+ @get op read(): {@header contentType: "image/png", @body body: bytes};
171
+ `);
172
+ assert.ok(responses);
173
+ assertEqualContent(
174
+ responses!.content,
175
+ `
176
+ import { HttpResponse } from "@azure-rest/core-client";
177
+
178
+ /** The request has succeeded. */
179
+ export interface Read200Response extends HttpResponse {
180
+ status: "200";
181
+ /** Value may contain any sequence of octets */
182
+ body: Uint8Array;
183
+ }
184
+ `
185
+ );
186
+ });
187
+ it("@header contentType text/plain should keep format to byte(finally string)", async () => {
188
+ const responses = await emitResponsesFromCadl(`
189
+ @get op read(): {@header contentType: "text/plain", @body body: bytes};
190
+ `);
191
+ assert.ok(responses);
192
+ assertEqualContent(
193
+ responses!.content,
194
+ `
195
+ import { HttpResponse } from "@azure-rest/core-client";
196
+
197
+ /** The request has succeeded. */
198
+ export interface Read200Response extends HttpResponse {
199
+ status: "200";
200
+ body: string;
201
+ }
202
+ `
203
+ );
204
+ });
205
+ });
206
+
207
+ describe("headers generation", () => {
208
+ it("merges headers from multiple responses", async () => {
209
+ const responses = await emitResponsesFromCadl(`
210
+ model Key {
211
+ key: string;
212
+ }
213
+ @get op read():
214
+ | { @body body: Key, @header foo: string }
215
+ | {@header contentType: "image/png", @body body: bytes, @header bar: string };
216
+ `);
217
+ assert.ok(responses);
218
+ assertEqualContent(
219
+ responses!.content,
220
+ `
221
+ import { RawHttpHeaders } from "@azure/core-rest-pipeline";
222
+ import { HttpResponse } from "@azure-rest/core-client";
223
+ import { KeyOutput } from "./outputModels";
224
+
225
+ export interface Read200Headers {
226
+ foo: string;
227
+ bar: string;
228
+ }
229
+
230
+ /** The request has succeeded. */
231
+ export interface Read200Response extends HttpResponse {
232
+ status: "200";
233
+ /** Value may contain any sequence of octets */
234
+ body: KeyOutput | Uint8Array;
235
+ headers: RawHttpHeaders & Read200Headers;
236
+ }
237
+ `
238
+ );
239
+ });
240
+ });
241
+
242
+ describe("Array generation", () => {
243
+ it("verify string array from responses", async () => {
244
+ const responses = await emitResponsesFromCadl(`
245
+ @get op read(): string[];
246
+ `);
247
+ assert.ok(responses);
248
+ assertEqualContent(
249
+ responses!.content,
250
+ `
251
+ import { HttpResponse } from "@azure-rest/core-client";
252
+
253
+ /** The request has succeeded. */
254
+ export interface Read200Response extends HttpResponse {
255
+ status: "200";
256
+ body: string[];
257
+ }
258
+ `
259
+ );
260
+ });
261
+
262
+ it("verify int32 array from responses", async () => {
263
+ const responses = await emitResponsesFromCadl(`
264
+ @get op read(): int32[];
265
+ `);
266
+ assert.ok(responses);
267
+ assertEqualContent(
268
+ responses!.content,
269
+ `
270
+ import { HttpResponse } from "@azure-rest/core-client";
271
+
272
+ /** The request has succeeded. */
273
+ export interface Read200Response extends HttpResponse {
274
+ status: "200";
275
+ body: number[];
276
+ }
277
+ `
278
+ );
279
+ });
280
+
281
+ it("verify int64 array from responses", async () => {
282
+ const responses = await emitResponsesFromCadl(`
283
+ @get op read(): int64[];
284
+ `);
285
+ assert.ok(responses);
286
+ assertEqualContent(
287
+ responses!.content,
288
+ `
289
+ import { HttpResponse } from "@azure-rest/core-client";
290
+
291
+ /** The request has succeeded. */
292
+ export interface Read200Response extends HttpResponse {
293
+ status: "200";
294
+ body: number[];
295
+ }
296
+ `
297
+ );
298
+ });
299
+
300
+ it("verify float32 array from responses", async () => {
301
+ const responses = await emitResponsesFromCadl(`
302
+ @get op read(): float32[];
303
+ `);
304
+ assert.ok(responses);
305
+ assertEqualContent(
306
+ responses!.content,
307
+ `
308
+ import { HttpResponse } from "@azure-rest/core-client";
309
+
310
+ /** The request has succeeded. */
311
+ export interface Read200Response extends HttpResponse {
312
+ status: "200";
313
+ body: number[];
314
+ }
315
+ `
316
+ );
317
+ });
318
+
319
+ it("verify boolean array from responses", async () => {
320
+ const responses = await emitResponsesFromCadl(`
321
+ @get op read(): boolean[];
322
+ `);
323
+ assert.ok(responses);
324
+ assertEqualContent(
325
+ responses!.content,
326
+ `
327
+ import { HttpResponse } from "@azure-rest/core-client";
328
+
329
+ /** The request has succeeded. */
330
+ export interface Read200Response extends HttpResponse {
331
+ status: "200";
332
+ body: boolean[];
333
+ }
334
+ `
335
+ );
336
+ });
337
+
338
+ it("verify bytes array from responses", async () => {
339
+ const responses = await emitResponsesFromCadl(`
340
+ @get op read(): bytes[];
341
+ `);
342
+ assert.ok(responses);
343
+ assertEqualContent(
344
+ responses!.content,
345
+ `
346
+ import { HttpResponse } from "@azure-rest/core-client";
347
+
348
+ /** The request has succeeded. */
349
+ export interface Read200Response extends HttpResponse {
350
+ status: "200";
351
+ body: string[];
352
+ }
353
+ `
354
+ );
355
+ });
356
+
357
+ it("verify plainDate array from responses", async () => {
358
+ const responses = await emitResponsesFromCadl(`
359
+ @get op read(): plainDate[];
360
+ `);
361
+ assert.ok(responses);
362
+ assertEqualContent(
363
+ responses!.content,
364
+ `
365
+ import { HttpResponse } from "@azure-rest/core-client";
366
+
367
+ /** The request has succeeded. */
368
+ export interface Read200Response extends HttpResponse {
369
+ status: "200";
370
+ body: string[];
371
+ }
372
+ `
373
+ );
374
+ });
375
+
376
+ it("verify datetime array from responses", async () => {
377
+ const responses = await emitResponsesFromCadl(`
378
+ @get op read(): zonedDateTime[];
379
+ `);
380
+ assert.ok(responses);
381
+ assertEqualContent(
382
+ responses!.content,
383
+ `
384
+ import { HttpResponse } from "@azure-rest/core-client";
385
+
386
+ /** The request has succeeded. */
387
+ export interface Read200Response extends HttpResponse {
388
+ status: "200";
389
+ body: string[];
390
+ }
391
+ `
392
+ );
393
+ });
394
+
395
+ it("verify duration array from responses", async () => {
396
+ const responses = await emitResponsesFromCadl(`
397
+ @get op read(): duration[];
398
+ `);
399
+ assert.ok(responses);
400
+ assertEqualContent(
401
+ responses!.content,
402
+ `
403
+ import { HttpResponse } from "@azure-rest/core-client";
404
+
405
+ /** The request has succeeded. */
406
+ export interface Read200Response extends HttpResponse {
407
+ status: "200";
408
+ body: string[];
409
+ }
410
+ `
411
+ );
412
+ });
413
+
414
+ it("verify SimpleModel array from responses", async () => {
415
+ const responses = await emitResponsesFromCadl(`
416
+ model SimpleModel {
417
+ prop1: string;
418
+ prop2: int32;
419
+ }
420
+ @get op read(): SimpleModel[];
421
+ `);
422
+ assert.ok(responses);
423
+ assertEqualContent(
424
+ responses!.content,
425
+ `
426
+ import { HttpResponse } from "@azure-rest/core-client";
427
+ import { SimpleModelOutput } from "./outputModels";
428
+
429
+ /** The request has succeeded. */
430
+ export interface Read200Response extends HttpResponse {
431
+ status: "200";
432
+ body: Array<SimpleModelOutput>;
433
+ }
434
+ `
435
+ );
436
+ });
437
+
438
+ it("verify InnerModel array from responses", async () => {
439
+ const responses = await emitResponsesFromCadl(`
440
+ model InnerModel {
441
+ property: string;
442
+ children?: InnerModel[];
443
+ }
444
+ @get op read(): InnerModel[];
445
+ `);
446
+ assert.ok(responses);
447
+ assertEqualContent(
448
+ responses!.content,
449
+ `
450
+ import { HttpResponse } from "@azure-rest/core-client";
451
+ import { InnerModelOutput } from "./outputModels";
452
+
453
+ /** The request has succeeded. */
454
+ export interface Read200Response extends HttpResponse {
455
+ status: "200";
456
+ body: Array<InnerModelOutput>;
457
+ }
458
+ `
459
+ );
460
+ });
461
+ });
462
+ });
@@ -0,0 +1,200 @@
1
+ import { assert } from "chai";
2
+ import { emitParameterFromCadl } from "./util/emitUtil.js";
3
+ import { assertEqualContent } from "./util/testUtil.js";
4
+
5
+ describe("Spread(...) and alias", () => {
6
+ describe("Parameter generation", async () => {
7
+ it("should flatten query and body properties with spread top-level model", async () => {
8
+ const parameters = await emitParameterFromCadl(`
9
+ model User {
10
+ name: string;
11
+ }
12
+ model SimpleModel {
13
+ @query
14
+ skip: string;
15
+ @body
16
+ body:User;
17
+ }
18
+ @post op read(...SimpleModel): void;
19
+ `);
20
+ assert.ok(parameters);
21
+ assertEqualContent(
22
+ parameters?.content!,
23
+ `
24
+ import { RequestParameters } from "@azure-rest/core-client";
25
+ import { User } from "./models";
26
+
27
+ export interface ReadBodyParam {
28
+ body: User;
29
+ }
30
+
31
+ export interface ReadQueryParamProperties {
32
+ skip: string;
33
+ }
34
+
35
+ export interface ReadQueryParam {
36
+ queryParameters: ReadQueryParamProperties;
37
+ }
38
+
39
+ export type ReadParameters = ReadQueryParam & ReadBodyParam & RequestParameters;
40
+ `
41
+ );
42
+ });
43
+
44
+ it("should NOT flatten model properties with no other parts defined and top-level spread", async () => {
45
+ const parameters = await emitParameterFromCadl(`
46
+ model SimpleModel {
47
+ id: string;
48
+ prop: string;
49
+ }
50
+ @post op read(...SimpleModel): void;
51
+ `);
52
+ assert.ok(parameters);
53
+ assertEqualContent(
54
+ parameters?.content!,
55
+ `
56
+ import { RequestParameters } from "@azure-rest/core-client";
57
+ import { SimpleModel } from "./models";
58
+
59
+ export interface ReadBodyParam {
60
+ body?: SimpleModel;
61
+ }
62
+
63
+ export type ReadParameters = ReadBodyParam & RequestParameters;
64
+ `
65
+ );
66
+ });
67
+
68
+ it("should flatten query and body properties with alias group properties", async () => {
69
+ const parameters = await emitParameterFromCadl(`
70
+ model User {
71
+ name: string;
72
+ }
73
+ alias SimpleModel = {
74
+ @query
75
+ @key
76
+ id: string;
77
+ @body
78
+ body:User;
79
+ };
80
+ @post op read(...SimpleModel): void;
81
+ `);
82
+ assert.ok(parameters);
83
+ assertEqualContent(
84
+ parameters?.content!,
85
+ `
86
+ import { RequestParameters } from "@azure-rest/core-client";
87
+ import { User } from "./models";
88
+
89
+ export interface ReadBodyParam {
90
+ body: User;
91
+ }
92
+
93
+ export interface ReadQueryParamProperties {
94
+ id: string;
95
+ }
96
+
97
+ export interface ReadQueryParam {
98
+ queryParameters: ReadQueryParamProperties;
99
+ }
100
+
101
+ export type ReadParameters = ReadQueryParam & ReadBodyParam & RequestParameters;
102
+ `
103
+ );
104
+ });
105
+
106
+ it("should flatten properties with one property in alias group and without position decorator", async () => {
107
+ const parameters = await emitParameterFromCadl(`
108
+ alias SimpleModel = {
109
+ name: string;
110
+ value?: int32;
111
+ };
112
+ @post op read(...SimpleModel): void;
113
+ `);
114
+ assert.ok(parameters);
115
+ assertEqualContent(
116
+ parameters?.content!,
117
+ `
118
+ import { RequestParameters } from "@azure-rest/core-client";
119
+
120
+ export interface ReadBodyParam {
121
+ body?: { name: string; value: number };
122
+ }
123
+
124
+ export type ReadParameters = ReadBodyParam & RequestParameters;
125
+ `
126
+ );
127
+ });
128
+
129
+ it("should flatten properties with more than one properties in alias group with no position decorator", async () => {
130
+ const parameters = await emitParameterFromCadl(`
131
+ model User {
132
+ name: string;
133
+ }
134
+ alias SimpleModel = {
135
+ @query
136
+ @key
137
+ id: string;
138
+ user:User;
139
+ };
140
+ @post op read(...SimpleModel): void;
141
+ `);
142
+ assert.ok(parameters);
143
+ assertEqualContent(
144
+ parameters?.content!,
145
+ `
146
+ import { RequestParameters } from "@azure-rest/core-client";
147
+ import { User } from "./models";
148
+
149
+ export interface ReadBodyParam {
150
+ body?: { user: User };
151
+ }
152
+
153
+ export interface ReadQueryParamProperties {
154
+ id: string;
155
+ }
156
+
157
+ export interface ReadQueryParam {
158
+ queryParameters: ReadQueryParamProperties;
159
+ }
160
+
161
+ export type ReadParameters = ReadQueryParam & ReadBodyParam & RequestParameters;
162
+ `
163
+ );
164
+ });
165
+
166
+ it("should flatten properties without any spread", async () => {
167
+ const parameters = await emitParameterFromCadl(`
168
+ model User {
169
+ name: string;
170
+ }
171
+ @post op read(@query
172
+ @key
173
+ id: string;
174
+ user:User;): void;
175
+ `);
176
+ assert.ok(parameters);
177
+ assertEqualContent(
178
+ parameters?.content!,
179
+ `
180
+ import { RequestParameters } from "@azure-rest/core-client";
181
+ import { User } from "./models";
182
+
183
+ export interface ReadBodyParam {
184
+ body?: { user: User };
185
+ }
186
+
187
+ export interface ReadQueryParamProperties {
188
+ id: string;
189
+ }
190
+
191
+ export interface ReadQueryParam {
192
+ queryParameters: ReadQueryParamProperties;
193
+ }
194
+
195
+ export type ReadParameters = ReadQueryParam & ReadBodyParam & RequestParameters;
196
+ `
197
+ );
198
+ });
199
+ });
200
+ });