@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,349 @@
1
+ import {
2
+ ChoiceSchema,
3
+ CodeModel,
4
+ ConstantSchema,
5
+ ImplementationLocation,
6
+ Operation,
7
+ OperationGroup,
8
+ SchemaType
9
+ } from "@autorest/codemodel";
10
+ import { ClientDetails } from "../models/clientDetails";
11
+ import { SampleGroup, SampleDetails } from "../models/sampleDetails";
12
+ import { ExampleValue, TestCodeModel } from "@autorest/testmodeler/dist/src/core/model";
13
+ import { getLanguageMetadata } from "../utils/languageHelpers";
14
+ import { getAutorestOptions, getSession } from "../autorestSession";
15
+ import {
16
+ getOperationFullName,
17
+ NameType,
18
+ normalizeName
19
+ } from "../utils/nameUtils";
20
+ import { calculateMethodName } from "../generators/utils/operationsUtils";
21
+ import { camelCase } from "@azure-tools/codegen";
22
+ import { OperationGroupDetails } from "../models/operationDetails";
23
+ import { getPublicMethodName } from "../generators/utils/pagingOperations";
24
+ import { getTypeForSchema } from "../utils/schemaHelpers";
25
+
26
+ export async function transformSamples(
27
+ codeModel: CodeModel,
28
+ clientDetails: ClientDetails
29
+ ): Promise<SampleGroup[]> {
30
+ return await getAllExamples(codeModel as TestCodeModel, clientDetails);
31
+ }
32
+
33
+ function getTransformedOperationGroup(
34
+ operationGroup: OperationGroup,
35
+ operationGroupDetails: OperationGroupDetails[]
36
+ ) {
37
+ return operationGroupDetails.filter(
38
+ operationGroupDetail =>
39
+ operationGroup.$key === operationGroupDetail.originalKey
40
+ )[0];
41
+ }
42
+
43
+ function getTransformedOperation(
44
+ operationGroup: OperationGroup,
45
+ operation: Operation,
46
+ operationGroupDetails: OperationGroupDetails,
47
+ clientName: string
48
+ ) {
49
+ return operationGroupDetails.operations.filter(
50
+ operationDetail =>
51
+ operationDetail.fullName ===
52
+ getOperationFullName(operationGroup, operation, clientName)
53
+ )[0];
54
+ }
55
+
56
+ export async function getAllExamples(
57
+ codeModel: TestCodeModel,
58
+ clientDetails: ClientDetails
59
+ ) {
60
+ const operationGroupDetails = clientDetails.operationGroups;
61
+ const { packageDetails } = getAutorestOptions();
62
+ const session = getSession();
63
+ let examplesModels: SampleGroup[] = [];
64
+ if (codeModel?.testModel?.mockTest?.exampleGroups !== undefined) {
65
+ for (const exampleGroup of codeModel.testModel.mockTest.exampleGroups) {
66
+ const clientName = getLanguageMetadata(codeModel.language).name;
67
+ const ogDetails = getTransformedOperationGroup(
68
+ exampleGroup.operationGroup,
69
+ operationGroupDetails
70
+ );
71
+ if (ogDetails === undefined) {
72
+ session.error("An error was encountered while transforming sample", [
73
+ exampleGroup.operationId
74
+ ]);
75
+ continue;
76
+ }
77
+ if (!(exampleGroup?.examples?.length > 0)) {
78
+ // Skip tranforming sample detail no given example in group
79
+ continue;
80
+ }
81
+ const opDetails = getTransformedOperation(
82
+ exampleGroup.operationGroup,
83
+ exampleGroup.operation,
84
+ ogDetails,
85
+ clientName
86
+ );
87
+ let methodName = calculateMethodName(opDetails);
88
+ if (opDetails.isLro && opDetails.pagination === undefined) {
89
+ methodName = `${methodName}AndWait`;
90
+ } else if (opDetails.pagination) {
91
+ methodName = getPublicMethodName(opDetails);
92
+ }
93
+ const opGroupName = ogDetails.name;
94
+ const importedTypeSet = new Set<string>();
95
+ const operatonConcante = `${exampleGroup?.operationGroup?.language?.default?.name}${exampleGroup?.operation?.language?.default?.name}`;
96
+ const sampleGroup: SampleGroup = {
97
+ sampleFileName: `${camelCase(
98
+ _transformSpecialLetterToSpace(operatonConcante)
99
+ )}Sample`,
100
+ clientClassName: clientName,
101
+ clientPackageName: packageDetails.name,
102
+ samples: [],
103
+ importedTypes: []
104
+ };
105
+ try {
106
+ for (const example of exampleGroup.examples) {
107
+ const sample: SampleDetails = {
108
+ sampleFunctionName: camelCase(
109
+ _transformSpecialLetterToSpace(example?.name)
110
+ ),
111
+ clientParameterNames: "",
112
+ methodParameterNames: "",
113
+ clientParamAssignments: [],
114
+ methodParamAssignments: [],
115
+ originalFileLocation: example.originalFile,
116
+ isTopLevel: ogDetails.isTopLevel,
117
+ isPaging: opDetails.pagination !== undefined,
118
+ operationName: methodName,
119
+ clientClassName: clientName,
120
+ operationGroupName: normalizeName(
121
+ opGroupName,
122
+ NameType.Property,
123
+ true
124
+ ),
125
+ operationDescription: getLanguageMetadata(
126
+ exampleGroup.operation.language
127
+ ).description
128
+ };
129
+ const clientParameterNames = ["credential"];
130
+ const requiredParams = clientDetails.parameters.filter(
131
+ param =>
132
+ param.required &&
133
+ param.implementationLocation === ImplementationLocation.Client &&
134
+ !param.defaultValue &&
135
+ param.schemaType !== SchemaType.Constant
136
+ );
137
+ for (const clientParameter of example.clientParameters) {
138
+ if (
139
+ clientParameter.exampleValue.schema.type === SchemaType.Constant
140
+ ) {
141
+ continue;
142
+ }
143
+ const parameterName = normalizeName(
144
+ getLanguageMetadata(clientParameter.exampleValue.language).name,
145
+ NameType.Parameter,
146
+ true
147
+ );
148
+ const paramAssignment =
149
+ `const ${parameterName} = ` +
150
+ getParameterAssignment(clientParameter.exampleValue);
151
+ sample.clientParamAssignments.push(paramAssignment);
152
+ clientParameterNames.push(parameterName);
153
+ }
154
+ if (
155
+ clientParameterNames.indexOf("subscriptionId") < 0 &&
156
+ requiredParams.find(param => param.name === "subscriptionId")
157
+ ) {
158
+ const subscriptionIdAssignment = `const subscriptionId = "00000000-0000-0000-0000-000000000000"`;
159
+ sample.clientParamAssignments.push(subscriptionIdAssignment);
160
+ clientParameterNames.push("subscriptionId");
161
+ }
162
+ if (clientParameterNames.length > 0) {
163
+ sample.clientParameterNames = clientParameterNames.join(", ");
164
+ }
165
+ const methodParameterNames = [];
166
+ const optionalParams: [string, string][] = [];
167
+ for (const methodParameter of example.methodParameters) {
168
+ if (
169
+ methodParameter.exampleValue.schema.type === SchemaType.Constant
170
+ ) {
171
+ continue;
172
+ }
173
+ const parameterName = normalizeName(
174
+ getLanguageMetadata(methodParameter.exampleValue.language).name,
175
+ NameType.Parameter,
176
+ true
177
+ );
178
+ const parameterTypeDetails = getTypeForSchema(
179
+ methodParameter.exampleValue.schema
180
+ );
181
+ const parameterTypeName = parameterTypeDetails.typeName;
182
+ let paramAssignment = "";
183
+ if (methodParameter.parameter.protocol?.http?.["in"] === "body") {
184
+ let bodySchemaName = parameterTypeName;
185
+ if (
186
+ methodParameter.exampleValue.schema.type ===
187
+ SchemaType.AnyObject ||
188
+ methodParameter.exampleValue.schema.type === SchemaType.Any
189
+ ) {
190
+ bodySchemaName = "Record<string, unknown>";
191
+ } else if (methodParameter.exampleValue.schema.type !== SchemaType.Dictionary) {
192
+ importedTypeSet.add(parameterTypeName);
193
+ }
194
+ paramAssignment =
195
+ `const ${parameterName}: ${bodySchemaName} = ` +
196
+ getParameterAssignment(methodParameter.exampleValue);
197
+ } else {
198
+ paramAssignment =
199
+ `const ${parameterName} = ` +
200
+ getParameterAssignment(methodParameter.exampleValue);
201
+ }
202
+ if (!methodParameter.parameter.required) {
203
+ optionalParams.push([parameterName, parameterTypeName]);
204
+ } else {
205
+ methodParameterNames.push(parameterName);
206
+ }
207
+ sample.methodParamAssignments.push(paramAssignment);
208
+ }
209
+ if (optionalParams.length > 0) {
210
+ const optionTypeName = `${opDetails.typeDetails.typeName}OptionalParams`;
211
+ importedTypeSet.add(optionTypeName);
212
+ const optionAssignment = `const options: ${optionTypeName} = {${optionalParams
213
+ .map(item => {
214
+ return item[0];
215
+ })
216
+ .join(", ")}}`;
217
+ sample.methodParamAssignments.push(optionAssignment);
218
+ methodParameterNames.push("options");
219
+ }
220
+ if (methodParameterNames.length > 0) {
221
+ sample.methodParameterNames = methodParameterNames.join(", ");
222
+ }
223
+ sampleGroup.samples.push(sample);
224
+ }
225
+ } catch (error) {
226
+ session.error("An error was encountered while transforming sample", [
227
+ exampleGroup.operationId
228
+ ]);
229
+ throw error;
230
+ }
231
+ if (sampleGroup.samples.length > 0) {
232
+ // enrich the importedTypes after all examples resolved
233
+ sampleGroup.importedTypes = Array.from(importedTypeSet);
234
+ examplesModels.push(sampleGroup);
235
+ }
236
+ }
237
+ }
238
+ return examplesModels;
239
+ }
240
+
241
+ function _transformSpecialLetterToSpace(str: string) {
242
+ if (!str) {
243
+ return str;
244
+ }
245
+ return str
246
+ .replace(/_/g, " ")
247
+ .replace(/\//g, " Or ")
248
+ .replace(/,|\.|\(|\)/g, " ")
249
+ .replace("'s ", " ");
250
+ }
251
+
252
+ function getParameterAssignment(exampleValue: ExampleValue) {
253
+ let schemaType = exampleValue.schema.type;
254
+ const rawValue = exampleValue.rawValue;
255
+ let retValue = rawValue;
256
+ switch (schemaType) {
257
+ case SchemaType.Constant:
258
+ const contentSchema = exampleValue.schema as ConstantSchema;
259
+ schemaType = contentSchema.valueType.type;
260
+ break;
261
+ case SchemaType.Choice:
262
+ case SchemaType.SealedChoice:
263
+ const choiceSchema = exampleValue.schema as ChoiceSchema;
264
+ schemaType = choiceSchema.choiceType.type;
265
+ break;
266
+ }
267
+ if (rawValue === null) {
268
+ switch (schemaType) {
269
+ case SchemaType.Object:
270
+ case SchemaType.Any:
271
+ case SchemaType.Dictionary:
272
+ case SchemaType.AnyObject:
273
+ retValue = `{}`;
274
+ break;
275
+ case SchemaType.Array:
276
+ retValue = `[]`;
277
+ break;
278
+ default:
279
+ retValue = undefined;
280
+ }
281
+ return retValue;
282
+ }
283
+ switch (schemaType) {
284
+ case SchemaType.String:
285
+ case SchemaType.Char:
286
+ case SchemaType.Time:
287
+ case SchemaType.Uuid:
288
+ case SchemaType.Uri:
289
+ case SchemaType.Credential:
290
+ case SchemaType.Duration:
291
+ retValue = `"${rawValue
292
+ ?.toString()
293
+ .replace(/"/g, '\\"')
294
+ .replace(/\n/g, "\\n")}"`;
295
+ break;
296
+ case SchemaType.Boolean:
297
+ (retValue = rawValue), toString();
298
+ break;
299
+ case SchemaType.Object:
300
+ case SchemaType.Dictionary:
301
+ const values = [];
302
+ for (const prop in exampleValue.properties) {
303
+ const property = exampleValue.properties[prop];
304
+ if (property === undefined || property === null) {
305
+ continue;
306
+ }
307
+ const initPropName = property.language?.default?.name
308
+ ? property.language?.default?.name
309
+ : prop;
310
+ const propName = normalizeName(initPropName, NameType.Property, true);
311
+ let propRetValue: string;
312
+ if (propName.indexOf("/") > -1 || propName.match(/^\d/)) {
313
+ propRetValue = `"${propName}": ` + getParameterAssignment(property);
314
+ } else {
315
+ propRetValue = `${propName}: ` + getParameterAssignment(property);
316
+ }
317
+ values.push(propRetValue);
318
+ }
319
+ if (values.length > 0) {
320
+ retValue = `{${values.join(", ")}}`;
321
+ } else {
322
+ retValue = "{}";
323
+ }
324
+ break;
325
+ case SchemaType.Array:
326
+ const valuesArr = [];
327
+ for (const element of <ExampleValue[]>exampleValue.elements) {
328
+ let propRetValueArr = getParameterAssignment(element);
329
+ valuesArr.push(propRetValueArr);
330
+ }
331
+ if (valuesArr.length > 0) {
332
+ retValue = `[${valuesArr.join(", ")}]`;
333
+ } else {
334
+ retValue = "[]";
335
+ }
336
+ break;
337
+ case SchemaType.Date:
338
+ case SchemaType.DateTime:
339
+ retValue = `new Date("${rawValue}")`;
340
+ break;
341
+ case SchemaType.Any:
342
+ case SchemaType.AnyObject:
343
+ retValue = `${JSON.stringify(rawValue)}`;
344
+ break;
345
+ default:
346
+ break;
347
+ }
348
+ return retValue;
349
+ }
@@ -8,7 +8,9 @@ import {
8
8
  CodeModel,
9
9
  ChoiceSchema,
10
10
  SealedChoiceSchema,
11
- SchemaType
11
+ SchemaType,
12
+ OAuth2SecurityScheme,
13
+ KeySecurityScheme
12
14
  } from "@autorest/codemodel";
13
15
  import { normalizeName, NameType } from "../utils/nameUtils";
14
16
  import { getStringForValue } from "../utils/valueHelpers";
@@ -19,7 +21,6 @@ import { transformOptions } from "./optionsTransforms";
19
21
  import { transformParameters } from "./parameterTransforms";
20
22
  import { transformObjects, transformObject } from "./objectTransforms";
21
23
  import { ObjectDetails } from "../models/modelDetails";
22
- import { Host } from "@autorest/extension-base";
23
24
  import { transformBaseUrl } from "./urlTransforms";
24
25
  import { normalizeModelWithExtensions } from "./extensions";
25
26
  import { transformGroups } from "./groupTransforms";
@@ -70,15 +71,17 @@ export function transformChoice(
70
71
  name,
71
72
  schemaType,
72
73
  itemType,
73
- description: `Defines values for ${metadata.name}.`,
74
+ description: `Defines values for ${normalizeName(
75
+ metadata.name,
76
+ NameType.Interface
77
+ )}.`,
74
78
  serializedName: metadata.name,
75
79
  properties: extractProperties(choice)
76
80
  };
77
81
  }
78
82
 
79
83
  export async function transformCodeModel(
80
- codeModel: CodeModel,
81
- host: Host
84
+ codeModel: CodeModel
82
85
  ): Promise<ClientDetails> {
83
86
  const { name: clientName } = getLanguageMetadata(codeModel.language);
84
87
  const className = normalizeName(
@@ -98,12 +101,12 @@ export async function transformCodeModel(
98
101
 
99
102
  const options = await transformOptions(operationGroups);
100
103
 
101
- const [objects, groups, mappers, unions, parameters] = await Promise.all([
104
+ const [objects, groups, parameters, mappers, unions] = await Promise.all([
102
105
  transformObjects(codeModel, uberParents),
103
106
  transformGroups(codeModel),
107
+ transformParameters(codeModel, options),
104
108
  transformMappers(codeModel, uberParents, options),
105
- transformChoices(codeModel),
106
- transformParameters(codeModel, options)
109
+ transformChoices(codeModel)
107
110
  ]);
108
111
 
109
112
  const baseUrl = transformBaseUrl(codeModel);
@@ -119,7 +122,9 @@ export async function transformCodeModel(
119
122
  operationGroups,
120
123
  parameters,
121
124
  options,
122
- endpoint: baseUrl
125
+ endpoint: baseUrl,
126
+ allTypes: [],
127
+ security: codeModel.security
123
128
  };
124
129
  }
125
130
 
@@ -2,13 +2,14 @@
2
2
  // Licensed under the MIT License.
3
3
 
4
4
  import * as prettier from "prettier";
5
+ import * as fsextra from "fs-extra";
6
+ import * as path from "path";
5
7
  import { CodeModel } from "@autorest/codemodel";
6
8
  import { Project, IndentationText } from "ts-morph";
7
- import { Host } from "@autorest/extension-base";
9
+ import { AutorestExtensionHost } from "@autorest/extension-base";
8
10
  import { transformCodeModel } from "./transforms/transforms";
9
- import { ClientDetails } from "./models/clientDetails";
11
+ import { transformSamples } from './transforms/samplesTransforms';
10
12
  import { generateClient } from "./generators/clientFileGenerator";
11
- import { generateClientContext } from "./generators/clientContextFileGenerator";
12
13
  import { generateModels } from "./generators/modelsGenerator";
13
14
  import { generateMappers } from "./generators/mappersGenerator";
14
15
  import { generateIndexFile } from "./generators/indexGenerator";
@@ -16,19 +17,18 @@ import { generatePackageJson } from "./generators/static/packageFileGenerator";
16
17
  import { generateApiExtractorConfig } from "./generators/static/apiExtractorConfig";
17
18
  import { generateLicenseFile } from "./generators/static/licenseFileGenerator";
18
19
  import { generateReadmeFile } from "./generators/static/readmeFileGenerator";
20
+ import { generateSampleTestFile } from "./generators/test/sampleTestGenerator";
19
21
  import { generateTsConfig } from "./generators/static/tsConfigFileGenerator";
20
22
  import { generateRollupConfig } from "./generators/static/rollupConfigFileGenerator";
21
23
  import { generateOperations } from "./generators/operationGenerator";
22
24
  import { generateOperationsInterfaces } from "./generators/operationInterfaceGenerator";
25
+ import { generateSampleEnv } from "./generators/samples/sampleEnvGenerator";
26
+ import { generateHLCSamples } from "./generators/samples/hlcSampleGenerator";
23
27
  import { generateParameters } from "./generators/parametersGenerator";
24
28
  import { generateLroFiles } from "./generators/LROGenerator";
25
29
  import { generateTracingFile } from "./generators/tracingFileGenerator";
26
30
  import { getAutorestOptions } from "./autorestSession";
27
-
28
- /**
29
- * ServiceClient members should be reserved
30
- */
31
- const RESERVED_MEMBER_NAMES = ["pipeline"];
31
+ import { conflictResolver } from "./conflictResolver";
32
32
 
33
33
  const prettierTypeScriptOptions: prettier.Options = {
34
34
  parser: "typescript",
@@ -50,7 +50,7 @@ const prettierJSONOptions: prettier.Options = {
50
50
 
51
51
  export async function generateTypeScriptLibrary(
52
52
  codeModel: CodeModel,
53
- host: Host
53
+ host: AutorestExtensionHost
54
54
  ): Promise<void> {
55
55
  const project = new Project({
56
56
  useInMemoryFileSystem: true,
@@ -61,44 +61,46 @@ export async function generateTypeScriptLibrary(
61
61
 
62
62
  const {
63
63
  packageDetails,
64
- licenseHeader: shouldGenerateLicense
64
+ licenseHeader: shouldGenerateLicense,
65
+ generateTest,
66
+ generateSample,
67
+ outputPath,
68
+ srcPath
65
69
  } = getAutorestOptions();
66
70
 
67
- const clientDetails = await transformCodeModel(codeModel, host);
68
-
69
- clientDetails.operationGroups.forEach(operationGroup => {
70
- const isConflict: boolean = checkForConflictWithDefinitions(
71
- operationGroup.name,
72
- clientDetails
73
- );
74
-
75
- if (isConflict) {
76
- operationGroup.operations.forEach(operation => {
77
- operation.typeDetails.typeName = operation.typeDetails.typeName.replace(
78
- operationGroup.name,
79
- `${operationGroup.name}Operations`
80
- );
81
- });
82
- operationGroup.name = `${operationGroup.name}Operations`;
83
- operationGroup.key = `${operationGroup.key}Operations`;
84
- }
85
- });
71
+ const clientDetails = await transformCodeModel(codeModel);
72
+ conflictResolver(clientDetails);
86
73
 
74
+ generateModels(clientDetails, project);
75
+ if (generateSample) {
76
+ clientDetails.samples = await transformSamples(codeModel, clientDetails);
77
+ }
87
78
  // Skip metadata generation if `generate-metadata` is explicitly false
88
79
  generatePackageJson(project, clientDetails);
89
80
  generateLicenseFile(project);
90
- generateReadmeFile(clientDetails, project);
81
+ generateReadmeFile(codeModel, project);
82
+ if (generateTest) {
83
+ generateSampleTestFile(project);
84
+ }
91
85
  generateTsConfig(project);
92
86
  generateRollupConfig(project);
93
87
  generateApiExtractorConfig(project);
94
88
 
95
89
  generateClient(clientDetails, project);
96
- generateClientContext(clientDetails, packageDetails, project);
97
- generateModels(clientDetails, project);
98
90
 
99
91
  generateMappers(clientDetails, project);
100
92
  generateOperations(clientDetails, project);
101
93
  generateOperationsInterfaces(clientDetails, project);
94
+ if (generateSample || generateTest) {
95
+ generateSampleEnv(project);
96
+ }
97
+ if (
98
+ generateSample &&
99
+ clientDetails?.samples?.length &&
100
+ clientDetails?.samples?.length > 0
101
+ ) {
102
+ generateHLCSamples(clientDetails, project);
103
+ }
102
104
  generateParameters(clientDetails, project);
103
105
  generateIndexFile(project, clientDetails);
104
106
  await generateLroFiles(clientDetails, project);
@@ -117,6 +119,8 @@ export async function generateTypeScriptLibrary(
117
119
  // Save the source files to the virtual filesystem
118
120
  project.saveSync();
119
121
  const fs = project.getFileSystem();
122
+ const pathToClear = outputPath ? path.join(outputPath, srcPath) : srcPath;
123
+ fsextra.emptyDirSync(`${pathToClear}`);
120
124
 
121
125
  // Loop over the files
122
126
  for (const file of project.getSourceFiles()) {
@@ -139,26 +143,9 @@ export async function generateTypeScriptLibrary(
139
143
  }
140
144
 
141
145
  // Write the file to the AutoRest host
142
- host.WriteFile(
143
- filePath.substr(1), // Get rid of the leading slash '/'
144
- fileContents
145
- );
146
- }
147
- }
148
-
149
- function checkForConflictWithDefinitions(
150
- operationGroupName: string,
151
- clientDetails: ClientDetails
152
- ): boolean {
153
- if (RESERVED_MEMBER_NAMES.includes(operationGroupName.toLowerCase())) {
154
- return true;
146
+ host.writeFile({
147
+ filename: filePath.substr(1), // Get rid of the leading slash '/'
148
+ content: fileContents
149
+ });
155
150
  }
156
-
157
- for (const model of clientDetails.objects) {
158
- if (model.name === operationGroupName) {
159
- return true;
160
- }
161
- }
162
-
163
- return false;
164
151
  }