@autorest/typescript 6.0.0-beta.9 → 6.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +42 -5
  2. package/dist/{src/generators/static/README.md.hbs → hlcREADME.md.hbs} +35 -3
  3. package/dist/hlcSamples.ts.hbs +49 -0
  4. package/dist/karma.conf.js.hbs +126 -0
  5. package/dist/paginateHelper.ts.hbs +208 -0
  6. package/dist/pollingHelper.ts.hbs +72 -0
  7. package/dist/rlcEnv.ts.hbs +3 -0
  8. package/dist/rlcREADME.md.hbs +71 -0
  9. package/dist/rlcRecordedClient.ts.hbs +26 -0
  10. package/dist/rlcSampleTest.spec.ts.hbs +20 -0
  11. package/dist/rlcSamples.ts.hbs +28 -0
  12. package/dist/sampleEnv.hbs +4 -0
  13. package/dist/sampleTest.ts.hbs +32 -0
  14. package/dist/samples.ts.hbs +0 -0
  15. package/dist/src/autorestSession.d.ts +17 -6
  16. package/dist/src/autorestSession.d.ts.map +1 -1
  17. package/dist/src/autorestSession.js +3 -9
  18. package/dist/src/autorestSession.js.map +1 -1
  19. package/dist/src/conflictResolver.d.ts +3 -0
  20. package/dist/src/conflictResolver.d.ts.map +1 -0
  21. package/dist/src/conflictResolver.js +43 -0
  22. package/dist/src/conflictResolver.js.map +1 -0
  23. package/dist/src/generators/LROGenerator.js +4 -4
  24. package/dist/src/generators/LROGenerator.js.map +1 -1
  25. package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
  26. package/dist/src/generators/clientFileGenerator.js +300 -46
  27. package/dist/src/generators/clientFileGenerator.js.map +1 -1
  28. package/dist/src/generators/indexGenerator.d.ts.map +1 -1
  29. package/dist/src/generators/indexGenerator.js +106 -14
  30. package/dist/src/generators/indexGenerator.js.map +1 -1
  31. package/dist/src/generators/mappersGenerator.d.ts.map +1 -1
  32. package/dist/src/generators/mappersGenerator.js +93 -19
  33. package/dist/src/generators/mappersGenerator.js.map +1 -1
  34. package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
  35. package/dist/src/generators/modelsGenerator.js +80 -81
  36. package/dist/src/generators/modelsGenerator.js.map +1 -1
  37. package/dist/src/generators/operationGenerator.d.ts.map +1 -1
  38. package/dist/src/generators/operationGenerator.js +85 -96
  39. package/dist/src/generators/operationGenerator.js.map +1 -1
  40. package/dist/src/generators/operationInterfaceGenerator.js +20 -20
  41. package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
  42. package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
  43. package/dist/src/generators/parametersGenerator.js +7 -8
  44. package/dist/src/generators/parametersGenerator.js.map +1 -1
  45. package/dist/src/generators/samples/hlcSampleGenerator.d.ts +13 -0
  46. package/dist/src/generators/samples/hlcSampleGenerator.d.ts.map +1 -0
  47. package/dist/src/generators/samples/hlcSampleGenerator.js +43 -0
  48. package/dist/src/generators/samples/hlcSampleGenerator.js.map +1 -0
  49. package/dist/src/generators/samples/hlcSamples.ts.hbs +49 -0
  50. package/dist/src/generators/samples/rlcSampleGenerator.d.ts +4 -0
  51. package/dist/src/generators/samples/rlcSampleGenerator.d.ts.map +1 -0
  52. package/dist/src/generators/samples/rlcSampleGenerator.js +64 -0
  53. package/dist/src/generators/samples/rlcSampleGenerator.js.map +1 -0
  54. package/dist/src/generators/samples/rlcSamples.ts.hbs +28 -0
  55. package/dist/src/generators/samples/sampleEnv.hbs +4 -0
  56. package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
  57. package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
  58. package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
  59. package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
  60. package/dist/src/generators/static/apiExtractorConfig.js +2 -2
  61. package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
  62. package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
  63. package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
  64. package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
  65. package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
  66. package/{src/generators/static/README.md.hbs → dist/src/generators/static/hlcREADME.md.hbs} +35 -3
  67. package/dist/src/generators/static/karma.conf.js.hbs +126 -0
  68. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
  69. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
  70. package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
  71. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
  72. package/dist/src/generators/static/licenseFileGenerator.js +1 -1
  73. package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
  74. package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
  75. package/dist/src/generators/static/packageFileGenerator.js +255 -67
  76. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  77. package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
  78. package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
  79. package/dist/src/generators/static/readmeFileGenerator.js +50 -23
  80. package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
  81. package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
  82. package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
  83. package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
  84. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  85. package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
  86. package/dist/src/generators/static/tsConfigFileGenerator.js +46 -18
  87. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  88. package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
  89. package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
  90. package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
  91. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
  92. package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
  93. package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
  94. package/dist/src/generators/test/envFileGenerator.js +23 -0
  95. package/dist/src/generators/test/envFileGenerator.js.map +1 -0
  96. package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
  97. package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
  98. package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
  99. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
  100. package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
  101. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  102. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  103. package/dist/src/generators/test/sampleTest.ts.hbs +32 -0
  104. package/dist/src/generators/test/sampleTestGenerator.d.ts +3 -0
  105. package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -0
  106. package/dist/src/generators/test/sampleTestGenerator.js +34 -0
  107. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -0
  108. package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
  109. package/dist/src/generators/tracingFileGenerator.js +7 -21
  110. package/dist/src/generators/tracingFileGenerator.js.map +1 -1
  111. package/dist/src/generators/utils/docsUtils.js +2 -2
  112. package/dist/src/generators/utils/docsUtils.js.map +1 -1
  113. package/dist/src/generators/utils/operationsUtils.js +1 -1
  114. package/dist/src/generators/utils/operationsUtils.js.map +1 -1
  115. package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
  116. package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
  117. package/dist/src/generators/utils/pagingOperations.js +15 -15
  118. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  119. package/dist/src/generators/utils/parameterUtils.js +9 -9
  120. package/dist/src/generators/utils/parameterUtils.js.map +1 -1
  121. package/dist/src/generators/utils/responseTypeUtils.js +2 -2
  122. package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
  123. package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
  124. package/dist/src/generators/utils/tracingUtils.js +2 -6
  125. package/dist/src/generators/utils/tracingUtils.js.map +1 -1
  126. package/dist/src/main.d.ts +2 -2
  127. package/dist/src/main.d.ts.map +1 -1
  128. package/dist/src/main.js +8 -8
  129. package/dist/src/main.js.map +1 -1
  130. package/dist/src/models/clientDetails.d.ts +10 -1
  131. package/dist/src/models/clientDetails.d.ts.map +1 -1
  132. package/dist/src/models/modelDetails.d.ts +2 -2
  133. package/dist/src/models/modelDetails.d.ts.map +1 -1
  134. package/dist/src/models/operationDetails.d.ts +1 -0
  135. package/dist/src/models/operationDetails.d.ts.map +1 -1
  136. package/dist/src/models/sampleDetails.d.ts +22 -0
  137. package/dist/src/models/sampleDetails.d.ts.map +1 -0
  138. package/dist/src/models/sampleDetails.js +3 -0
  139. package/dist/src/models/sampleDetails.js.map +1 -0
  140. package/dist/src/restLevelClient/generateClient.d.ts +1 -1
  141. package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
  142. package/dist/src/restLevelClient/generateClient.js +108 -167
  143. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  144. package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
  145. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
  146. package/dist/src/restLevelClient/generateClientDefinition.js +261 -0
  147. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
  148. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts +8 -0
  149. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts.map +1 -0
  150. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js +204 -0
  151. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js.map +1 -0
  152. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
  153. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
  154. package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
  155. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
  156. package/dist/src/restLevelClient/generateObjectTypes.d.ts +3 -3
  157. package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
  158. package/dist/src/restLevelClient/generateObjectTypes.js +43 -31
  159. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  160. package/dist/src/restLevelClient/generatePagingHelper.d.ts +3 -0
  161. package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -0
  162. package/dist/src/restLevelClient/generatePagingHelper.js +54 -0
  163. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -0
  164. package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
  165. package/dist/src/restLevelClient/generateParameterTypes.js +247 -44
  166. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  167. package/dist/src/restLevelClient/generatePollingHelper.d.ts +3 -0
  168. package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -0
  169. package/dist/src/restLevelClient/generatePollingHelper.js +20 -0
  170. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -0
  171. package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
  172. package/dist/src/restLevelClient/generateResponseTypes.js +35 -23
  173. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  174. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  175. package/dist/src/restLevelClient/generateRestLevel.js +63 -16
  176. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  177. package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
  178. package/dist/src/restLevelClient/generateSchemaTypes.js +29 -7
  179. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  180. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
  181. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
  182. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +37 -0
  183. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
  184. package/dist/src/restLevelClient/getPropertySignature.d.ts +2 -2
  185. package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
  186. package/dist/src/restLevelClient/getPropertySignature.js +10 -7
  187. package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
  188. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts +4 -0
  189. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts.map +1 -0
  190. package/dist/src/restLevelClient/helpers/hasPollingOperations.js +12 -0
  191. package/dist/src/restLevelClient/helpers/hasPollingOperations.js.map +1 -0
  192. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts +4 -0
  193. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts.map +1 -0
  194. package/dist/src/restLevelClient/helpers/modelHelpers.js +19 -0
  195. package/dist/src/restLevelClient/helpers/modelHelpers.js.map +1 -0
  196. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
  197. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
  198. package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
  199. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
  200. package/dist/src/restLevelClient/interfaces.d.ts +33 -0
  201. package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
  202. package/dist/src/restLevelClient/interfaces.js +3 -0
  203. package/dist/src/restLevelClient/interfaces.js.map +1 -0
  204. package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
  205. package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
  206. package/dist/src/restLevelClient/operationHelpers.d.ts +4 -0
  207. package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
  208. package/dist/src/restLevelClient/operationHelpers.js +21 -10
  209. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  210. package/dist/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  211. package/dist/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  212. package/dist/src/restLevelClient/samples/generateSamples.d.ts +23 -0
  213. package/dist/src/restLevelClient/samples/generateSamples.d.ts.map +1 -0
  214. package/dist/src/restLevelClient/samples/generateSamples.js +3 -0
  215. package/dist/src/restLevelClient/samples/generateSamples.js.map +1 -0
  216. package/dist/src/restLevelClient/samples/samples.ts.hbs +0 -0
  217. package/dist/src/restLevelClient/schemaHelpers.d.ts +8 -2
  218. package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
  219. package/dist/src/restLevelClient/schemaHelpers.js +27 -12
  220. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  221. package/dist/src/transforms/extensions.js +10 -10
  222. package/dist/src/transforms/extensions.js.map +1 -1
  223. package/dist/src/transforms/groupTransforms.js +2 -2
  224. package/dist/src/transforms/groupTransforms.js.map +1 -1
  225. package/dist/src/transforms/mapperTransforms.d.ts.map +1 -1
  226. package/dist/src/transforms/mapperTransforms.js +29 -26
  227. package/dist/src/transforms/mapperTransforms.js.map +1 -1
  228. package/dist/src/transforms/objectTransforms.d.ts.map +1 -1
  229. package/dist/src/transforms/objectTransforms.js +42 -26
  230. package/dist/src/transforms/objectTransforms.js.map +1 -1
  231. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  232. package/dist/src/transforms/operationTransforms.js +29 -26
  233. package/dist/src/transforms/operationTransforms.js.map +1 -1
  234. package/dist/src/transforms/optionsTransforms.js +1 -1
  235. package/dist/src/transforms/optionsTransforms.js.map +1 -1
  236. package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
  237. package/dist/src/transforms/parameterTransforms.js +43 -27
  238. package/dist/src/transforms/parameterTransforms.js.map +1 -1
  239. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  240. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  241. package/dist/src/transforms/samplesTransforms.js +293 -0
  242. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  243. package/dist/src/transforms/transforms.d.ts +1 -2
  244. package/dist/src/transforms/transforms.d.ts.map +1 -1
  245. package/dist/src/transforms/transforms.js +26 -24
  246. package/dist/src/transforms/transforms.js.map +1 -1
  247. package/dist/src/transforms/urlTransforms.js +3 -3
  248. package/dist/src/transforms/urlTransforms.js.map +1 -1
  249. package/dist/src/typescriptGenerator.d.ts +2 -2
  250. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  251. package/dist/src/typescriptGenerator.js +46 -46
  252. package/dist/src/typescriptGenerator.js.map +1 -1
  253. package/dist/src/utils/autorestOptions.d.ts +2 -2
  254. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  255. package/dist/src/utils/autorestOptions.js +141 -62
  256. package/dist/src/utils/autorestOptions.js.map +1 -1
  257. package/dist/src/utils/cloneOperation.js +2 -2
  258. package/dist/src/utils/cloneOperation.js.map +1 -1
  259. package/dist/src/utils/copyFiles.d.ts +2 -0
  260. package/dist/src/utils/copyFiles.d.ts.map +1 -0
  261. package/dist/src/utils/copyFiles.js +33 -0
  262. package/dist/src/utils/copyFiles.js.map +1 -0
  263. package/dist/src/utils/extractHeaders.js +4 -4
  264. package/dist/src/utils/extractHeaders.js.map +1 -1
  265. package/dist/src/utils/extractPaginationDetails.d.ts +5 -1
  266. package/dist/src/utils/extractPaginationDetails.d.ts.map +1 -1
  267. package/dist/src/utils/extractPaginationDetails.js +23 -10
  268. package/dist/src/utils/extractPaginationDetails.js.map +1 -1
  269. package/dist/src/utils/headersToSchema.js +1 -1
  270. package/dist/src/utils/headersToSchema.js.map +1 -1
  271. package/dist/src/utils/logger.js +1 -1
  272. package/dist/src/utils/logger.js.map +1 -1
  273. package/dist/src/utils/nameUtils.d.ts +6 -2
  274. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  275. package/dist/src/utils/nameUtils.js +13 -8
  276. package/dist/src/utils/nameUtils.js.map +1 -1
  277. package/dist/src/utils/schemaHelpers.d.ts +6 -1
  278. package/dist/src/utils/schemaHelpers.d.ts.map +1 -1
  279. package/dist/src/utils/schemaHelpers.js +50 -7
  280. package/dist/src/utils/schemaHelpers.js.map +1 -1
  281. package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
  282. package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
  283. package/dist/src/utils/valueHelpers.js +1 -1
  284. package/dist/src/utils/valueHelpers.js.map +1 -1
  285. package/package.json +58 -39
  286. package/src/autorestSession.ts +25 -18
  287. package/src/conflictResolver.ts +61 -0
  288. package/src/generators/clientFileGenerator.ts +397 -36
  289. package/src/generators/indexGenerator.ts +118 -12
  290. package/src/generators/mappersGenerator.ts +108 -8
  291. package/src/generators/modelsGenerator.ts +98 -97
  292. package/src/generators/operationGenerator.ts +54 -93
  293. package/src/generators/parametersGenerator.ts +2 -3
  294. package/src/generators/samples/hlcSampleGenerator.ts +50 -0
  295. package/src/generators/samples/hlcSamples.ts.hbs +49 -0
  296. package/src/generators/samples/rlcSampleGenerator.ts +72 -0
  297. package/src/generators/samples/rlcSamples.ts.hbs +28 -0
  298. package/src/generators/samples/sampleEnv.hbs +4 -0
  299. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  300. package/src/generators/static/apiExtractorConfig.ts +2 -2
  301. package/src/generators/static/esLintConfigGenerator.ts +24 -0
  302. package/src/generators/static/hlcREADME.md.hbs +144 -0
  303. package/src/generators/static/karma.conf.js.hbs +126 -0
  304. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  305. package/src/generators/static/packageFileGenerator.ts +292 -71
  306. package/src/generators/static/readmeFileGenerator.ts +79 -42
  307. package/src/generators/static/rlcREADME.md.hbs +71 -0
  308. package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
  309. package/src/generators/static/tsConfigFileGenerator.ts +54 -19
  310. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  311. package/src/generators/test/envFileGenerator.ts +22 -0
  312. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  313. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  314. package/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  315. package/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  316. package/src/generators/test/sampleTest.ts.hbs +32 -0
  317. package/src/generators/test/sampleTestGenerator.ts +32 -0
  318. package/src/generators/tracingFileGenerator.ts +6 -24
  319. package/src/generators/utils/pagingOperations.ts +1 -2
  320. package/src/generators/utils/tracingUtils.ts +1 -5
  321. package/src/main.ts +8 -5
  322. package/src/models/clientDetails.ts +11 -1
  323. package/src/models/modelDetails.ts +2 -2
  324. package/src/models/operationDetails.ts +1 -0
  325. package/src/models/sampleDetails.ts +22 -0
  326. package/src/restLevelClient/generateClient.ts +134 -244
  327. package/src/restLevelClient/generateClientDefinition.ts +386 -0
  328. package/src/restLevelClient/generateIsUnexpectedHelper.ts +224 -0
  329. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  330. package/src/restLevelClient/generateObjectTypes.ts +62 -21
  331. package/src/restLevelClient/generatePagingHelper.ts +69 -0
  332. package/src/restLevelClient/generateParameterTypes.ts +377 -56
  333. package/src/restLevelClient/generatePollingHelper.ts +19 -0
  334. package/src/restLevelClient/generateResponseTypes.ts +36 -17
  335. package/src/restLevelClient/generateRestLevel.ts +63 -8
  336. package/src/restLevelClient/generateSchemaTypes.ts +43 -8
  337. package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
  338. package/src/restLevelClient/getPropertySignature.ts +12 -4
  339. package/src/restLevelClient/helpers/hasPollingOperations.ts +15 -0
  340. package/src/restLevelClient/helpers/modelHelpers.ts +15 -0
  341. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  342. package/src/restLevelClient/interfaces.ts +39 -0
  343. package/src/restLevelClient/operationHelpers.ts +23 -9
  344. package/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  345. package/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  346. package/src/restLevelClient/samples/generateSamples.ts +23 -0
  347. package/src/restLevelClient/samples/samples.ts.hbs +0 -0
  348. package/src/restLevelClient/schemaHelpers.ts +30 -8
  349. package/src/transforms/mapperTransforms.ts +11 -5
  350. package/src/transforms/objectTransforms.ts +26 -6
  351. package/src/transforms/operationTransforms.ts +6 -1
  352. package/src/transforms/parameterTransforms.ts +26 -7
  353. package/src/transforms/samplesTransforms.ts +349 -0
  354. package/src/transforms/transforms.ts +14 -9
  355. package/src/typescriptGenerator.ts +40 -53
  356. package/src/utils/autorestOptions.ts +198 -88
  357. package/src/utils/copyFiles.ts +36 -0
  358. package/src/utils/extractPaginationDetails.ts +19 -1
  359. package/src/utils/nameUtils.ts +18 -9
  360. package/src/utils/schemaHelpers.ts +51 -4
  361. package/CHANGELOG.md +0 -56
  362. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  363. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  364. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  365. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  366. package/src/generators/clientContextFileGenerator.ts +0 -405
@@ -0,0 +1,22 @@
1
+ export interface SampleGroup {
2
+ sampleFileName: string,
3
+ clientClassName: string,
4
+ clientPackageName: string,
5
+ samples: SampleDetails[],
6
+ importedTypes?: string[],
7
+ }
8
+
9
+ export interface SampleDetails {
10
+ sampleFunctionName: string,
11
+ clientParameterNames: string,
12
+ methodParameterNames: string,
13
+ clientParamAssignments: string[],
14
+ methodParamAssignments: string[],
15
+ originalFileLocation?: string,
16
+ operationName: string,
17
+ isTopLevel: boolean,
18
+ isPaging: boolean,
19
+ operationGroupName: string,
20
+ operationDescription: string,
21
+ clientClassName: string,
22
+ }
@@ -2,207 +2,139 @@ import {
2
2
  CodeModel,
3
3
  Operation,
4
4
  ParameterLocation,
5
- ImplementationLocation
5
+ ImplementationLocation,
6
+ OAuth2SecurityScheme,
7
+ KeySecurityScheme
6
8
  } from "@autorest/codemodel";
7
9
 
8
- import { getResponseTypeName } from "./operationHelpers";
9
-
10
10
  import {
11
- CallSignatureDeclarationStructure,
12
- MethodSignatureStructure,
13
- OptionalKind,
14
11
  Project,
15
- SourceFile,
16
12
  StatementStructures,
17
13
  StructureKind,
18
14
  VariableDeclarationKind,
19
15
  VariableStatementStructure,
20
- WriterFunction,
21
- Writers
16
+ WriterFunction
22
17
  } from "ts-morph";
18
+ import * as path from "path";
23
19
 
24
20
  import { getAutorestOptions, getSession } from "../autorestSession";
25
21
  import { transformBaseUrl } from "../transforms/urlTransforms";
26
22
  import { NameType, normalizeName } from "../utils/nameUtils";
27
23
  import { isConstantSchema } from "./schemaHelpers";
28
24
  import { getLanguageMetadata } from "../utils/languageHelpers";
29
- type PathParameter = { name: string; description?: string };
25
+ import { generateMethodShortcutImplementation } from "./generateMethodShortcuts";
26
+ import { Paths } from "./interfaces";
27
+ import { pathDictionary } from "./generateClientDefinition";
28
+ import { getSecurityInfoFromModel } from "../utils/schemaHelpers";
30
29
 
31
- type Methods = {
32
- [key: string]: [
33
- {
34
- optionsName: string;
35
- description: string;
36
- hasOptionalOptions: boolean;
37
- returnType: string;
38
- }
39
- ];
40
- };
41
- type Paths = {
42
- [key: string]: {
43
- name: string;
44
- pathParameters: PathParameter[];
45
- methods: Methods;
46
- };
47
- };
48
-
49
- export function generatePathFirstClient(model: CodeModel, project: Project) {
30
+ export function generateClient(model: CodeModel, project: Project) {
50
31
  const name = normalizeName(
51
32
  getLanguageMetadata(model.language).name,
52
33
  NameType.File
53
34
  );
54
- const clientFile = project.createSourceFile(`src/${name}.ts`, undefined, {
55
- overwrite: true
56
- });
57
-
58
- // Get all paths
59
- const importedParameters = new Set<string>();
60
- const importedResponses = new Set<string>();
61
- const pathDictionary: Paths = {};
62
- for (const operationGroup of model.operationGroups) {
63
- for (const operation of operationGroup.operations) {
64
- const operationName = getLanguageMetadata(operation.language).name;
65
- const operationDescription = getLanguageMetadata(operation.language)
66
- .description;
67
- const pathParameters: PathParameter[] =
68
- operation.parameters
69
- ?.filter(p => p.protocol.http?.in === ParameterLocation.Path)
70
- .map(p => {
71
- const languageMetadata = getLanguageMetadata(p.language);
72
- return {
73
- name: languageMetadata.serializedName || languageMetadata.name,
74
- description: languageMetadata.description
75
- };
76
- }) || [];
77
-
78
- for (const request of operation.requests || []) {
79
- const path: string = (request.protocol.http?.path as string) || "";
80
- const method = request.protocol.http?.method;
81
-
82
- if (path && method) {
83
- if (!pathDictionary[path]) {
84
- pathDictionary[path] = {
85
- pathParameters,
86
- methods: {},
87
- name: operationName
88
- };
89
- }
90
- const hasOptionalOptions = !request.signatureParameters?.some(
91
- p => p.required
92
- );
93
-
94
- const newMethod = {
95
- description: operationDescription,
96
- optionsName: getOperationOptionsType(operation, importedParameters),
97
- hasOptionalOptions,
98
- returnType: `Promise<${getOperationReturnType(
99
- operation,
100
- importedResponses
101
- )}>`
102
- };
103
-
104
- if (pathDictionary[path].methods[`${method}`]) {
105
- pathDictionary[path].methods[`${method}`].push(newMethod);
106
- } else {
107
- pathDictionary[path].methods[`${method}`] = [newMethod];
108
- }
109
- }
110
- }
35
+ const { srcPath } = getAutorestOptions();
36
+ const clientFile = project.createSourceFile(
37
+ path.join(srcPath, `${name}.ts`),
38
+ undefined,
39
+ {
40
+ overwrite: true
111
41
  }
112
- }
113
-
114
- clientFile.addInterface({
115
- name: "Routes",
116
- isExported: true,
117
- callSignatures: getPathFirstRoutesInterfaceDefinition(
118
- pathDictionary,
119
- clientFile
120
- )
121
- });
42
+ );
122
43
 
44
+ // Get all paths
123
45
  const clientName = getLanguageMetadata(model.language).name;
124
46
  const uriParameter = getClientUriParameter();
125
47
 
126
- const { addCredentials, credentialKeyHeaderName } = getAutorestOptions();
127
- const credentialTypes = addCredentials ? ["TokenCredential"] : [];
48
+ const { multiClient, batch } = getAutorestOptions();
49
+ const {
50
+ addCredentials,
51
+ credentialScopes,
52
+ credentialKeyHeaderName
53
+ } = getSecurityInfoFromModel(model.security);
54
+ const credentialTypes =
55
+ credentialScopes && credentialScopes.length > 0 ? ["TokenCredential"] : [];
128
56
 
129
57
  if (credentialKeyHeaderName) {
130
58
  credentialTypes.push("KeyCredential");
131
59
  }
132
60
 
133
61
  const commonClientParams = [
134
- ...(uriParameter ? [{ name: uriParameter, type: "string" }] : []),
135
- ...(addCredentials === false
62
+ ...(uriParameter
63
+ ? [
64
+ {
65
+ name: uriParameter,
66
+ type: "string"
67
+ }
68
+ ]
69
+ : []),
70
+ ...(addCredentials === false ||
71
+ !isSecurityInfoDefined(credentialScopes, credentialKeyHeaderName)
136
72
  ? []
137
73
  : [{ name: "credentials", type: credentialTypes.join(" | ") }])
138
74
  ];
139
- const clientIterfaceName = `${clientName}RestClient`;
140
- // const factoryTypeName = `${clientName}Factory`;
141
- clientFile.addTypeAlias({
142
- isExported: true,
143
- name: clientIterfaceName,
144
- type: Writers.intersectionType(
145
- "Client",
146
- Writers.objectType({ properties: [{ name: "path", type: "Routes" }] })
147
- )
148
- });
75
+ const clientInterfaceName = clientName.endsWith("Client")
76
+ ? `${clientName}`
77
+ : `${clientName}Client`;
149
78
 
150
- clientFile.addFunction({
79
+ const functionStatement = {
151
80
  isExported: true,
152
- name: clientName,
81
+ name: `createClient`,
153
82
  parameters: [
154
83
  ...commonClientParams,
155
84
  { name: "options", type: "ClientOptions = {}" }
156
85
  ],
157
- returnType: clientIterfaceName,
158
- isDefaultExport: true,
159
- statements: getClientFactoryBody(clientIterfaceName)
160
- });
161
-
162
- if (importedParameters.size) {
163
- clientFile.addImportDeclaration({
164
- namedImports: [...importedParameters],
165
- moduleSpecifier: "./parameters"
166
- });
167
- }
86
+ returnType: clientInterfaceName,
87
+ isDefaultExport: false,
88
+ statements: getClientFactoryBody(clientInterfaceName, pathDictionary)
89
+ };
168
90
 
169
- if (importedResponses.size) {
170
- clientFile.addImportDeclaration({
171
- namedImports: [...importedResponses],
172
- moduleSpecifier: "./responses"
173
- });
91
+ if (!multiClient || !batch || batch.length === 1) {
92
+ functionStatement.isDefaultExport = true;
174
93
  }
94
+ clientFile.addFunction(functionStatement);
175
95
 
176
96
  clientFile.addImportDeclarations([
177
97
  {
178
- namedImports: ["getClient", "ClientOptions", "Client"],
98
+ namedImports: ["getClient", "ClientOptions"],
179
99
  moduleSpecifier: "@azure-rest/core-client"
180
100
  }
181
101
  ]);
182
102
 
103
+ if (
104
+ addCredentials &&
105
+ isSecurityInfoDefined(credentialScopes, credentialKeyHeaderName)
106
+ ) {
107
+ clientFile.addImportDeclarations([
108
+ {
109
+ namedImports: credentialTypes,
110
+ moduleSpecifier: "@azure/core-auth"
111
+ }
112
+ ]);
113
+ }
183
114
  clientFile.addImportDeclarations([
184
115
  {
185
- namedImports: credentialTypes,
186
- moduleSpecifier: "@azure/core-auth"
116
+ namedImports: [`${clientInterfaceName}`],
117
+ moduleSpecifier: "./clientDefinitions"
187
118
  }
188
119
  ]);
189
120
  }
190
121
 
191
- function getOperationOptionsType(
192
- operation: Operation,
193
- importedParameters = new Set<string>()
122
+ function isSecurityInfoDefined(
123
+ credentialScopes: string[],
124
+ credentialKeyHeaderName: string
194
125
  ) {
195
- const paramsName = `${
196
- getLanguageMetadata(operation.language).name
197
- }Parameters`;
198
- importedParameters.add(paramsName);
199
-
200
- return paramsName;
126
+ return (
127
+ (credentialScopes && credentialScopes.length > 0) || credentialKeyHeaderName
128
+ );
201
129
  }
202
130
 
203
131
  function getClientFactoryBody(
204
- clientTypeName: string
132
+ clientTypeName: string,
133
+ paths: Paths
205
134
  ): string | WriterFunction | (string | WriterFunction | StatementStructures)[] {
135
+ const { rlcShortcut, packageDetails } = getAutorestOptions();
136
+ let clientPackageName = packageDetails.nameWithoutScope;
137
+ const packageVersion = packageDetails.version;
206
138
  const { model } = getSession();
207
139
  const { endpoint, parameterName } = transformBaseUrl(model);
208
140
  let baseUrl: string;
@@ -222,13 +154,40 @@ function getClientFactoryBody(
222
154
  apiVersionStatement = `options.apiVersion = options.apiVersion ?? "${apiVersion}"`;
223
155
  }
224
156
 
157
+ if (!clientPackageName.endsWith("-rest")) {
158
+ clientPackageName = clientPackageName + "-rest";
159
+ }
160
+ const userAgentInfoStatement =
161
+ "const userAgentInfo = `azsdk-js-" +
162
+ clientPackageName +
163
+ "/" +
164
+ packageVersion +
165
+ "`;";
166
+ const userAgentPrefix =
167
+ "options.userAgentOptions && options.userAgentOptions.userAgentPrefix ? `${options.userAgentOptions.userAgentPrefix} ${userAgentInfo}`: `${userAgentInfo}`;";
168
+ const userAgentStatement: VariableStatementStructure = {
169
+ kind: StructureKind.VariableStatement,
170
+ declarationKind: VariableDeclarationKind.Const,
171
+ declarations: [{ name: "userAgentPrefix", initializer: userAgentPrefix }]
172
+ };
173
+
174
+ const userAgentOptionsStatement = `options = {
175
+ ...options,
176
+ userAgentOptions: {
177
+ userAgentPrefix
178
+ }
179
+ }`;
180
+
225
181
  const baseUrlStatement: VariableStatementStructure = {
226
182
  kind: StructureKind.VariableStatement,
227
183
  declarationKind: VariableDeclarationKind.Const,
228
184
  declarations: [{ name: "baseUrl", initializer: baseUrl }]
229
185
  };
230
186
 
231
- const { credentialScopes, credentialKeyHeaderName } = getAutorestOptions();
187
+ const {
188
+ credentialScopes,
189
+ credentialKeyHeaderName
190
+ } = getSecurityInfoFromModel(model.security);
232
191
 
233
192
  const scopesString =
234
193
  credentialScopes && credentialScopes.length
@@ -247,17 +206,43 @@ function getClientFactoryBody(
247
206
  credentials: {
248
207
  ${scopes}
249
208
  ${apiKeyHeaderName}
250
- }
209
+ },
251
210
  }`
252
211
  : "";
253
212
 
254
- const getClient = `return getClient(
255
- baseUrl,
256
- ${credentials ? "credentials," : ""}
257
- options
258
- ) as ${clientTypeName};`;
213
+ const getClient = `const client = getClient(
214
+ baseUrl, ${credentials ? "credentials," : ""} options
215
+ ) as ${clientTypeName};
216
+ `;
217
+
218
+ let returnStatement = `return client;`;
259
219
 
260
- return [baseUrlStatement, apiVersionStatement, credentials, getClient];
220
+ if (rlcShortcut) {
221
+ const shortcutImplementations = generateMethodShortcutImplementation(
222
+ model,
223
+ paths
224
+ );
225
+ const shortcutBody = Object.keys(shortcutImplementations).map(key => {
226
+ // If the operation group has an empty name, it means its operations are client
227
+ // level operations so we need to spread the definitions. Otherwise they are
228
+ // within an operation group so we add them as key: value
229
+ return `${key ? `"${key}":` : "..."} {${shortcutImplementations[
230
+ key
231
+ ].join()}}`;
232
+ });
233
+ returnStatement = `return { ...client, ${shortcutBody.join()} };`;
234
+ }
235
+
236
+ return [
237
+ baseUrlStatement,
238
+ apiVersionStatement,
239
+ credentials,
240
+ userAgentInfoStatement,
241
+ userAgentStatement,
242
+ userAgentOptionsStatement,
243
+ getClient,
244
+ returnStatement
245
+ ];
261
246
  }
262
247
 
263
248
  function getApiVersion(): string | undefined {
@@ -284,103 +269,8 @@ function getApiVersion(): string | undefined {
284
269
  return undefined;
285
270
  }
286
271
 
287
- function getOperationReturnType(
288
- operation: Operation,
289
- importedResponses = new Set<string>()
290
- ) {
291
- let returnType: string = "HttpResponse";
292
- if (operation.responses && operation.responses.length) {
293
- const responses = [...operation.responses, ...(operation.exceptions || [])];
294
-
295
- const responseTypes = responses
296
- .filter(
297
- r => r.protocol.http?.statusCodes && r.protocol.http?.statusCodes.length
298
- )
299
- .map(r => {
300
- const responseName = getResponseTypeName(operation, r);
301
- importedResponses.add(responseName);
302
- return responseName;
303
- });
304
-
305
- if (responseTypes.length) {
306
- returnType = responseTypes.join(" | ");
307
- }
308
- }
309
-
310
- return returnType;
311
- }
312
-
313
- function getPathFirstRoutesInterfaceDefinition(
314
- paths: Paths,
315
- sourcefile: SourceFile
316
- ): CallSignatureDeclarationStructure[] {
317
- const signatures: CallSignatureDeclarationStructure[] = [];
318
- for (const key of Object.keys(paths)) {
319
- generatePathFirstRouteMethodsDefinition(
320
- paths[key].name,
321
- paths[key].methods,
322
- sourcefile
323
- );
324
- const pathParams = paths[key].pathParameters;
325
- signatures.push({
326
- docs: [
327
- `Resource for '${key
328
- .replace(/}/g, "\\}")
329
- .replace(
330
- /{/g,
331
- "\\{"
332
- )}' has methods for the following verbs: ${Object.keys(
333
- paths[key].methods
334
- ).join(", ")}`
335
- ],
336
- parameters: [
337
- { name: "path", type: `"${key}"` },
338
- ...pathParams.map(p => {
339
- return { name: p.name, type: "string", description: p.description };
340
- })
341
- ],
342
- returnType: paths[key].name,
343
- kind: StructureKind.CallSignature
344
- });
345
- }
346
- return signatures;
347
- }
348
-
349
272
  function getClientUriParameter() {
350
273
  const { model } = getSession();
351
274
  const { parameterName } = transformBaseUrl(model);
352
275
  return parameterName;
353
276
  }
354
-
355
- function generatePathFirstRouteMethodsDefinition(
356
- operationName: string,
357
- methods: Methods,
358
- file: SourceFile
359
- ): void {
360
- const methodDefinitions: OptionalKind<MethodSignatureStructure>[] = [];
361
- for (const key of Object.keys(methods)) {
362
- const method = methods[key];
363
- const description = methods[key][0].description;
364
-
365
- let areAllOptional = !method.some(m => !m.hasOptionalOptions);
366
-
367
- methodDefinitions.push({
368
- name: key,
369
- ...(description && { docs: [{ description }] }),
370
- parameters: [
371
- {
372
- name: "options",
373
- hasQuestionToken: areAllOptional,
374
- type: method.map(m => m.optionsName).join(" | ")
375
- }
376
- ],
377
- returnType: method.map(m => m.returnType).join(" | ")
378
- });
379
- }
380
-
381
- file.addInterface({
382
- methods: methodDefinitions,
383
- name: operationName,
384
- isExported: true
385
- });
386
- }