@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,561 @@
1
+ import { assert } from "chai";
2
+ import { emitParameterFromCadl } from "./util/emitUtil.js";
3
+ import { assertEqualContent } from "./util/testUtil.js";
4
+
5
+ describe("Parameters.ts", () => {
6
+ describe("handle query apiVersion", () => {
7
+ it("should't generate apiVersion if there's a client level apiVersion", async () => {
8
+ const parameters = await emitParameterFromCadl(
9
+ `
10
+ model ApiVersionParameter {
11
+ @query
12
+ "api-version": string;
13
+ }
14
+ op test(...ApiVersionParameter): string;
15
+ `
16
+ );
17
+ assert.ok(parameters);
18
+ assertEqualContent(
19
+ parameters?.content!,
20
+ `
21
+ import { RequestParameters } from "@azure-rest/core-client";
22
+
23
+ export type TestParameters = RequestParameters;
24
+ `
25
+ );
26
+ });
27
+
28
+ it("should generate apiVersion if there's no client level apiVersion", async () => {
29
+ const parameters = await emitParameterFromCadl(
30
+ `
31
+ model ApiVersionParameter {
32
+ @query
33
+ "api-version": string;
34
+ }
35
+ op test(...ApiVersionParameter): string;
36
+ `,
37
+ false,
38
+ true
39
+ );
40
+ assert.ok(parameters);
41
+ assertEqualContent(
42
+ parameters?.content!,
43
+ `
44
+ import { RequestParameters } from "@azure-rest/core-client";
45
+
46
+ export interface TestQueryParamProperties {
47
+ "api-version": string;
48
+ }
49
+
50
+ export interface TestQueryParam {
51
+ queryParameters: TestQueryParamProperties;
52
+ }
53
+
54
+ export type TestParameters = TestQueryParam & RequestParameters;
55
+ `
56
+ );
57
+ });
58
+ });
59
+
60
+ describe("query parameters generation", () => {
61
+ it("should generate user-custom-query ", async () => {
62
+ const parameters = await emitParameterFromCadl(
63
+ `
64
+ model CustomParameter {
65
+ @query
66
+ "user-custom-query": string;
67
+ }
68
+ op test(...CustomParameter): string;
69
+ `
70
+ );
71
+ assert.ok(parameters);
72
+ assertEqualContent(
73
+ parameters?.content!,
74
+ `
75
+ import { RequestParameters } from "@azure-rest/core-client";
76
+
77
+ export interface TestQueryParamProperties {
78
+ "user-custom-query": string;
79
+ }
80
+
81
+ export interface TestQueryParam {
82
+ queryParameters: TestQueryParamProperties;
83
+ }
84
+
85
+ export type TestParameters = TestQueryParam & RequestParameters;
86
+ `
87
+ );
88
+ });
89
+ });
90
+
91
+ describe("binary request generation", () => {
92
+ it("bytes request with application/json will be treated as string", async () => {
93
+ const parameters = await emitParameterFromCadl(
94
+ `
95
+ @post op read(@body body: bytes): {};
96
+ `
97
+ );
98
+ assert.ok(parameters);
99
+ assertEqualContent(
100
+ parameters?.content!,
101
+ `import { RequestParameters } from "@azure-rest/core-client";
102
+
103
+ export interface ReadBodyParam {
104
+ body: string;
105
+ }
106
+
107
+ export type ReadParameters = ReadBodyParam & RequestParameters;
108
+ `
109
+ );
110
+ });
111
+
112
+ it("bytes request should respect @header contentType and use binary format when not json or text", async () => {
113
+ const parameters = await emitParameterFromCadl(
114
+ `
115
+ @post op read(@header contentType: "image/png", @body body: bytes): {};
116
+ `
117
+ );
118
+ assert.ok(parameters);
119
+ assertEqualContent(
120
+ parameters?.content!,
121
+ `
122
+ import { RequestParameters } from "@azure-rest/core-client";
123
+
124
+ export interface ReadBodyParam {
125
+ /** Value may contain any sequence of octets */
126
+ body:
127
+ | string
128
+ | Uint8Array
129
+ | ReadableStream<Uint8Array>
130
+ | NodeJS.ReadableStream;
131
+ }
132
+
133
+ export interface ReadMediaTypesParam {
134
+ contentType: "image/png";
135
+ }
136
+
137
+ export type ReadParameters = ReadMediaTypesParam &
138
+ ReadBodyParam &
139
+ RequestParameters;
140
+ `
141
+ );
142
+ });
143
+
144
+ // TODO: we need more discussions about current behavior
145
+ // issue tracked https://github.com/Azure/autorest.typescript/issues/1486
146
+ it("multiple contentTypes defined @header", async () => {
147
+ const parameters = await emitParameterFromCadl(
148
+ `
149
+ @post op read(@header contentType: "image/png" | "application/json", @body body: bytes): {};
150
+ `
151
+ );
152
+ assert.ok(parameters);
153
+ assertEqualContent(
154
+ parameters?.content!,
155
+ `
156
+ import { RequestParameters } from "@azure-rest/core-client";
157
+
158
+ export interface ReadBodyParam {
159
+ /** Value may contain any sequence of octets */
160
+ body:
161
+ | string
162
+ | Uint8Array
163
+ | ReadableStream<Uint8Array>
164
+ | NodeJS.ReadableStream;
165
+ }
166
+
167
+ export interface ReadMediaTypesParam {
168
+ contentType: "image/png" | "application/json";
169
+ }
170
+
171
+ export type ReadParameters = ReadMediaTypesParam &
172
+ ReadBodyParam &
173
+ RequestParameters;
174
+ `
175
+ );
176
+ });
177
+
178
+ it("contentTypes has binary data", async () => {
179
+ const parameters = await emitParameterFromCadl(
180
+ `
181
+ @route("/uploadFileViaBody")
182
+ @post op uploadFileViaBody(
183
+ @header contentType: "application/octet-stream",
184
+ @body body: bytes
185
+ ): void;
186
+ `
187
+ );
188
+ assert.ok(parameters);
189
+ assertEqualContent(
190
+ parameters?.content!,
191
+ `
192
+ import { RequestParameters } from "@azure-rest/core-client";
193
+
194
+ export interface UploadFileViaBodyBodyParam {
195
+ /** Value may contain any sequence of octets */
196
+ body:
197
+ | string
198
+ | Uint8Array
199
+ | ReadableStream<Uint8Array>
200
+ | NodeJS.ReadableStream;
201
+ }
202
+
203
+ export interface UploadFileViaBodyMediaTypesParam {
204
+ contentType: "application/octet-stream";
205
+ }
206
+
207
+ export type UploadFileViaBodyParameters = UploadFileViaBodyMediaTypesParam &
208
+ UploadFileViaBodyBodyParam &
209
+ RequestParameters;
210
+ `
211
+ );
212
+ });
213
+
214
+ it("contentTypes has multiple form data", async () => {
215
+ const parameters = await emitParameterFromCadl(
216
+ `
217
+ @route("/uploadFile")
218
+ @post op uploadFile(
219
+ @header contentType: "multipart/form-data",
220
+ @body body: {
221
+ name: string;
222
+ file: bytes;
223
+ }
224
+ ): void;
225
+ `
226
+ );
227
+ assert.ok(parameters);
228
+ assertEqualContent(
229
+ parameters?.content!,
230
+ `
231
+ import { RequestParameters } from "@azure-rest/core-client";
232
+
233
+ export interface UploadFileBodyParam {
234
+ body: UploadFileFormBody;
235
+ }
236
+
237
+ export interface UploadFileFormBody {
238
+ name: string;
239
+ file:
240
+ | string
241
+ | Uint8Array
242
+ | ReadableStream<Uint8Array>
243
+ | NodeJS.ReadableStream;
244
+ }
245
+
246
+ export interface UploadFileMediaTypesParam {
247
+ contentType: "multipart/form-data";
248
+ }
249
+
250
+ export type UploadFileParameters = UploadFileMediaTypesParam &
251
+ UploadFileBodyParam &
252
+ RequestParameters;
253
+ `
254
+ );
255
+ });
256
+
257
+ it("contentTypes has array data defined in form body", async () => {
258
+ const parameters = await emitParameterFromCadl(
259
+ `
260
+ @route("/uploadFiles")
261
+ @post op uploadFiles(
262
+ @header contentType: "multipart/form-data",
263
+ @body body: {
264
+ files: bytes[];
265
+ }
266
+ ): void;
267
+ `
268
+ );
269
+ assert.ok(parameters);
270
+ assertEqualContent(
271
+ parameters?.content!,
272
+ `
273
+ import { RequestParameters } from "@azure-rest/core-client";
274
+
275
+ export interface UploadFilesBodyParam {
276
+ body: UploadFilesFormBody;
277
+ }
278
+
279
+ export interface UploadFilesFormBody {
280
+ files: Array<
281
+ string | Uint8Array | ReadableStream<Uint8Array> | NodeJS.ReadableStream
282
+ >;
283
+ }
284
+
285
+ export interface UploadFilesMediaTypesParam {
286
+ contentType: "multipart/form-data";
287
+ }
288
+
289
+ export type UploadFilesParameters = UploadFilesMediaTypesParam &
290
+ UploadFilesBodyParam &
291
+ RequestParameters;
292
+ `
293
+ );
294
+ });
295
+ });
296
+
297
+ describe("Array in body generation", () => {
298
+ it("unknown array request generation", async () => {
299
+ const parameters = await emitParameterFromCadl(`
300
+ @post op read(@body body: unknown[]): void;
301
+ `);
302
+ assert.ok(parameters);
303
+ assertEqualContent(
304
+ parameters?.content!,
305
+ `
306
+ import { RequestParameters } from "@azure-rest/core-client";
307
+
308
+ export interface ReadBodyParam {
309
+ body:unknown[];
310
+ }
311
+
312
+ export type ReadParameters = ReadBodyParam & RequestParameters;
313
+ `
314
+ );
315
+ });
316
+ it("string array request generation", async () => {
317
+ const parameters = await emitParameterFromCadl(`
318
+ @post op read(@body body: string[]): void;
319
+ `);
320
+ assert.ok(parameters);
321
+ assertEqualContent(
322
+ parameters?.content!,
323
+ `
324
+ import { RequestParameters } from "@azure-rest/core-client";
325
+
326
+ export interface ReadBodyParam {
327
+ body:string[];
328
+ }
329
+
330
+ export type ReadParameters = ReadBodyParam & RequestParameters;
331
+ `
332
+ );
333
+ });
334
+
335
+ it("int32 array request generation", async () => {
336
+ const parameters = await emitParameterFromCadl(`
337
+ @post op read(@body body: int32[]): void ;
338
+ `);
339
+ assert.ok(parameters);
340
+ assertEqualContent(
341
+ parameters?.content!,
342
+ `
343
+ import { RequestParameters } from "@azure-rest/core-client";
344
+
345
+ export interface ReadBodyParam {
346
+ body:number[];
347
+ }
348
+
349
+ export type ReadParameters = ReadBodyParam & RequestParameters;
350
+ `
351
+ );
352
+ });
353
+
354
+ it("int64 array request generation", async () => {
355
+ const parameters = await emitParameterFromCadl(`
356
+ @post op read(@body body: int64[]): void ;
357
+ `);
358
+ assert.ok(parameters);
359
+ assertEqualContent(
360
+ parameters?.content!,
361
+ `
362
+ import { RequestParameters } from "@azure-rest/core-client";
363
+
364
+ export interface ReadBodyParam {
365
+ body:number[];
366
+ }
367
+
368
+ export type ReadParameters = ReadBodyParam & RequestParameters;
369
+ `
370
+ );
371
+ });
372
+
373
+ it("float32 array request generation", async () => {
374
+ const parameters = await emitParameterFromCadl(`
375
+ @post op read(@body body: float32[]): void ;
376
+ `);
377
+ assert.ok(parameters);
378
+ assertEqualContent(
379
+ parameters?.content!,
380
+ `
381
+ import { RequestParameters } from "@azure-rest/core-client";
382
+
383
+ export interface ReadBodyParam {
384
+ body:number[];
385
+ }
386
+
387
+ export type ReadParameters = ReadBodyParam & RequestParameters;
388
+ `
389
+ );
390
+ });
391
+
392
+ it("boolean array request generation", async () => {
393
+ const parameters = await emitParameterFromCadl(`
394
+ @post op read(@body body: boolean[]): void ;
395
+ `);
396
+ assert.ok(parameters);
397
+ assertEqualContent(
398
+ parameters?.content!,
399
+ `
400
+ import { RequestParameters } from "@azure-rest/core-client";
401
+
402
+ export interface ReadBodyParam {
403
+ body:boolean[];
404
+ }
405
+
406
+ export type ReadParameters = ReadBodyParam & RequestParameters;
407
+ `
408
+ );
409
+ });
410
+
411
+ it("bytes array request generation", async () => {
412
+ const parameters = await emitParameterFromCadl(`
413
+ @post op read(@body body: bytes[]): void ;
414
+ `);
415
+ assert.ok(parameters);
416
+ assertEqualContent(
417
+ parameters?.content!,
418
+ `
419
+ import { RequestParameters } from "@azure-rest/core-client";
420
+
421
+ export interface ReadBodyParam {
422
+ body:string[];
423
+ }
424
+
425
+ export type ReadParameters = ReadBodyParam & RequestParameters;
426
+ `
427
+ );
428
+ });
429
+
430
+ it("plainDate array request generation", async () => {
431
+ const parameters = await emitParameterFromCadl(`
432
+ @post op read(@body body: plainDate[]): void;
433
+ `);
434
+ assert.ok(parameters);
435
+ assertEqualContent(
436
+ parameters?.content!,
437
+ `
438
+ import { RequestParameters } from "@azure-rest/core-client";
439
+
440
+ export interface ReadBodyParam {
441
+ body: Date[] | string[];
442
+ }
443
+
444
+ export type ReadParameters = ReadBodyParam & RequestParameters;
445
+ `
446
+ );
447
+ });
448
+
449
+ it("datetime array request generation", async () => {
450
+ const parameters = await emitParameterFromCadl(`
451
+ @post op read(@body body: zonedDateTime[]): void;
452
+ `);
453
+ assert.ok(parameters);
454
+ assertEqualContent(
455
+ parameters?.content!,
456
+ `
457
+ import { RequestParameters } from "@azure-rest/core-client";
458
+
459
+ export interface ReadBodyParam {
460
+ body: Date[] | string[];
461
+ }
462
+
463
+ export type ReadParameters = ReadBodyParam & RequestParameters;
464
+ `
465
+ );
466
+ });
467
+
468
+ it("duration array request generation", async () => {
469
+ const parameters = await emitParameterFromCadl(`
470
+ @post op read(@body body: duration[]): void;
471
+ `);
472
+ assert.ok(parameters);
473
+ assertEqualContent(
474
+ parameters?.content!,
475
+ `
476
+ import { RequestParameters } from "@azure-rest/core-client";
477
+
478
+ export interface ReadBodyParam {
479
+ body:string[];
480
+ }
481
+
482
+ export type ReadParameters = ReadBodyParam & RequestParameters;
483
+ `
484
+ );
485
+ });
486
+
487
+ it("SimpleModel array request generation", async () => {
488
+ const parameters = await emitParameterFromCadl(`
489
+ model SimpleModel {
490
+ prop1: string;
491
+ prop2: int32;
492
+ }
493
+ @post op read(@body body: SimpleModel[]): void;
494
+ `);
495
+ assert.ok(parameters);
496
+ assertEqualContent(
497
+ parameters?.content!,
498
+ `
499
+ import { RequestParameters } from "@azure-rest/core-client";
500
+ import { SimpleModel } from "./models";
501
+
502
+ export interface ReadBodyParam {
503
+ body:Array<SimpleModel>;
504
+ }
505
+
506
+ export type ReadParameters = ReadBodyParam & RequestParameters;
507
+ `
508
+ );
509
+ });
510
+
511
+ it("InnerModel array request generation", async () => {
512
+ const parameters = await emitParameterFromCadl(`
513
+ model InnerModel {
514
+ property: string;
515
+ children?: InnerModel[];
516
+ }
517
+ @post op read(@body body: InnerModel[]): void;
518
+ `);
519
+ assert.ok(parameters);
520
+ assertEqualContent(
521
+ parameters?.content!,
522
+ `
523
+ import { RequestParameters } from "@azure-rest/core-client";
524
+ import { InnerModel } from "./models";
525
+
526
+ export interface ReadBodyParam {
527
+ body:Array<InnerModel>;
528
+ }
529
+
530
+ export type ReadParameters = ReadBodyParam & RequestParameters;
531
+ `
532
+ );
533
+ });
534
+ });
535
+
536
+ describe("Dictionary in body generation", () => {
537
+ it("Simple model dictionary request generation", async () => {
538
+ const parameters = await emitParameterFromCadl(`
539
+ model SimpleModel {
540
+ prop1: string;
541
+ prop2: int32;
542
+ }
543
+ @post op read(@body body: Record<SimpleModel>): SimpleModel;
544
+ `);
545
+ assert.ok(parameters);
546
+ assertEqualContent(
547
+ parameters?.content!,
548
+ `
549
+ import { RequestParameters } from "@azure-rest/core-client";
550
+ import { SimpleModel } from "./models";
551
+
552
+ export interface ReadBodyParam {
553
+ body: Record<string, SimpleModel>;
554
+ }
555
+
556
+ export type ReadParameters = ReadBodyParam & RequestParameters;
557
+ `
558
+ );
559
+ });
560
+ });
561
+ });